diff --git a/compiler/src/dotty/tools/dotc/core/NameOps.scala b/compiler/src/dotty/tools/dotc/core/NameOps.scala index 3c88917d29c9..aea6676e3567 100644 --- a/compiler/src/dotty/tools/dotc/core/NameOps.scala +++ b/compiler/src/dotty/tools/dotc/core/NameOps.scala @@ -124,10 +124,9 @@ object NameOps { * it is also called from the backend. */ def stripModuleClassSuffix: N = likeSpacedN { - val semName = name.toTermName match { - case name: SimpleName if name.endsWith("$") => name.unmangleClassName + val semName = name.toTermName match + case name: SimpleName if name.endsWith(str.MODULE_SUFFIX) && name.lastPart != MODULE_SUFFIX => name.unmangleClassName case _ => name - } semName.exclude(ModuleClassName) } diff --git a/tests/neg/i15381.check b/tests/neg/i15381.check new file mode 100644 index 000000000000..ec273ea8c48a --- /dev/null +++ b/tests/neg/i15381.check @@ -0,0 +1,7 @@ +-- [E007] Type Mismatch Error: tests/neg/i15381.scala:5:13 ------------------------------------------------------------- +5 |def g: Int = $ // error + | ^ + | Found: $.type + | Required: Int + | + | longer explanation available when compiling with `-explain` diff --git a/tests/neg/i15381.scala b/tests/neg/i15381.scala new file mode 100644 index 000000000000..c3e1cc771521 --- /dev/null +++ b/tests/neg/i15381.scala @@ -0,0 +1,11 @@ +// scalac: -Vprint:parser + +case class $[A](value: A) + +def g: Int = $ // error + +/* +was: + | Found: .type + | Required: Int + */