@@ -280,12 +280,12 @@ import transform.SymUtils._
280
280
val (foundStr, expectedStr) = Formatting .typeDiff(found2, expected2)(using printCtx)
281
281
s """ |Found: $foundStr
282
282
|Required: $expectedStr""" .stripMargin
283
- + whereSuffix + postScript
283
+ + whereSuffix + postScript
284
284
285
- override def explain =
285
+ override def explain =
286
286
val treeStr = inTree.map(x => s " \n Tree: ${x.show}" ).getOrElse(" " )
287
287
treeStr + " \n " + super .explain
288
-
288
+
289
289
290
290
end TypeMismatch
291
291
@@ -300,14 +300,14 @@ import transform.SymUtils._
300
300
301
301
// The names of all non-synthetic, non-private members of `site`
302
302
// that are of the same type/term kind as the missing member.
303
- def candidates : Set [String ] =
303
+ def candidates : Set [Symbol ] =
304
304
for
305
305
bc <- site.widen.baseClasses.toSet
306
306
sym <- bc.info.decls.filter(sym =>
307
307
sym.isType == name.isTypeName
308
308
&& ! sym.isConstructor
309
309
&& ! sym.flagsUNSAFE.isOneOf(Synthetic | Private ))
310
- yield sym.name.show
310
+ yield sym
311
311
312
312
// Calculate Levenshtein distance
313
313
def distance (s1 : String , s2 : String ): Int =
@@ -325,11 +325,11 @@ import transform.SymUtils._
325
325
326
326
// A list of possible candidate strings with their Levenstein distances
327
327
// to the name of the missing member
328
- def closest : List [(Int , String )] = candidates
328
+ def closest : List [(Int , Symbol )] = candidates
329
329
.toList
330
- .map(n => (distance(n, missing), n))
331
- .filter((d, n) => d <= maxDist && d < missing.length && d < n.length)
332
- .sorted // sort by distance first, alphabetically second
330
+ .map(n => (distance(n.name.show , missing), n))
331
+ .filter((d, n) => d <= maxDist && d < missing.length && d < n.name.show. length)
332
+ .sortBy((d, n) => (d, n.name.show)) // sort by distance first, alphabetically second
333
333
334
334
val enumClause =
335
335
if ((name eq nme.values) || (name eq nme.valueOf)) && site.classSymbol.companionClass.isEnumClass then
@@ -352,7 +352,11 @@ import transform.SymUtils._
352
352
val siteName = site match
353
353
case site : NamedType => site.name.show
354
354
case site => i " $site"
355
- s " - did you mean $siteName. $n? $enumClause"
355
+ val showName =
356
+ // Add .type to the name if it is a module
357
+ if n.isClass && n.is(Module ) then s " ${n.name.show}.type "
358
+ else n.name.show
359
+ s " - did you mean $siteName. $showName? $enumClause"
356
360
case Nil => prefixEnumClause(" " )
357
361
358
362
ex " $selected $name is not a member of ${site.widen}$finalAddendum"
0 commit comments