Skip to content

Commit 38bf775

Browse files
Improve type mismatch errors with fully qualified names for types within the scala package
Co-authored-by: Nicolas Stucki <[email protected]>
1 parent fdd06ce commit 38bf775

File tree

4 files changed

+15
-2
lines changed

4 files changed

+15
-2
lines changed

compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ class PlainPrinter(_ctx: Context) extends Printer {
193193
"<overloaded " ~ toTextRef(tp) ~ ">"
194194
case tp: TypeRef =>
195195
if (printWithoutPrefix.contains(tp.symbol))
196-
toText(tp.name)
196+
selectionString(tp)
197197
else
198198
toTextPrefixOf(tp) ~ selectionString(tp)
199199
case tp: TermParamRef =>

compiler/src/dotty/tools/dotc/reporting/Message.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ object Message:
8888
def followAlias(e1: Recorded): Recorded = e1 match {
8989
case e1: Symbol if e1.isAliasType =>
9090
val underlying = e1.typeRef.underlyingClassRef(refinementOK = false).typeSymbol
91-
if (underlying.name == e1.name) underlying else e1
91+
if (underlying.name == e1.name) underlying else e1.namedType.dealias.typeSymbol
9292
case _ => e1
9393
}
9494
val key = SeenKey(str, isType)

tests/neg/i18678b.check

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-- [E007] Type Mismatch Error: tests/neg/i18678b.scala:3:16 ------------------------------------------------------------
2+
3 |def s: String = "" // error
3+
| ^^
4+
| Found: ("" : String)
5+
| Required: String²
6+
|
7+
| where: String is a class in package java.lang
8+
| String² is a class in the empty package
9+
|
10+
| longer explanation available when compiling with `-explain`

tests/neg/i18678b.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class String
2+
3+
def s: String = "" // error

0 commit comments

Comments
 (0)