Skip to content

Commit b5203de

Browse files
authored
Name stripped of module suffix must not be empty (#15597)
References #15381
2 parents 50d2a48 + 6ef9705 commit b5203de

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

compiler/src/dotty/tools/dotc/core/NameOps.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,9 @@ object NameOps {
124124
* it is also called from the backend.
125125
*/
126126
def stripModuleClassSuffix: N = likeSpacedN {
127-
val semName = name.toTermName match {
128-
case name: SimpleName if name.endsWith("$") => name.unmangleClassName
127+
val semName = name.toTermName match
128+
case name: SimpleName if name.endsWith(str.MODULE_SUFFIX) && name.lastPart != MODULE_SUFFIX => name.unmangleClassName
129129
case _ => name
130-
}
131130
semName.exclude(ModuleClassName)
132131
}
133132

tests/neg/i15381.check

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-- [E007] Type Mismatch Error: tests/neg/i15381.scala:5:13 -------------------------------------------------------------
2+
5 |def g: Int = $ // error
3+
| ^
4+
| Found: $.type
5+
| Required: Int
6+
|
7+
| longer explanation available when compiling with `-explain`

tests/neg/i15381.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// scalac: -Vprint:parser
2+
3+
case class $[A](value: A)
4+
5+
def g: Int = $ // error
6+
7+
/*
8+
was:
9+
| Found: .type
10+
| Required: Int
11+
*/

0 commit comments

Comments
 (0)