@@ -343,33 +343,35 @@ object messages {
343343 }
344344
345345 // Get closest match in `site`
346- val closest =
346+ def closest : List [ String ] =
347347 decls
348- .map { case (n, sym) => (n, distance(n, name.show), sym) }
349- .collect { case (n, dist, sym) if dist <= maxDist => (n, dist, sym) }
348+ .map { (n, sym) => (n, distance(n, name.show), sym) }
349+ .collect {
350+ case (n, dist, sym)
351+ if dist <= maxDist && dist < (name.toString.length min n.length) =>
352+ (n, dist, sym)
353+ }
350354 .groupBy(_._2).toList
351355 .sortBy(_._1)
352356 .headOption.map(_._2).getOrElse(Nil )
353357 .map(incorrectChars).toList
354358 .sortBy(_._3)
355- .take(1 ).map { case (n, sym, _) => (n, sym) }
356-
357- val siteName = site match {
358- case site : NamedType => site.name.show
359- case site => i " $site"
360- }
361-
362- val closeMember = closest match {
363- case (n, sym) :: Nil =>
364- s " - did you mean $siteName. $n? "
365- case Nil => " "
366- case _ => assert(
367- false ,
368- " Could not single out one distinct member to match on input with"
369- )
370- }
359+ .map(_._1)
360+ // [Martin] Note: I have no idea what this does. This shows the
361+ // pitfalls of not naming things, functional or not.
362+
363+ val finalAddendum =
364+ if addendum.nonEmpty then addendum
365+ else closest match {
366+ case n :: _ =>
367+ val siteName = site match
368+ case site : NamedType => site.name.show
369+ case site => i " $site"
370+ s " - did you mean $siteName. $n? "
371+ case Nil => " "
372+ }
371373
372- ex " $selected $name is not a member of ${site.widen}$closeMember$addendum "
374+ ex " $selected $name is not a member of ${site.widen}$finalAddendum "
373375 }
374376
375377 val explanation : String = " "
0 commit comments