File tree Expand file tree Collapse file tree 4 files changed +15
-3
lines changed
compiler/src/dotty/tools/dotc Expand file tree Collapse file tree 4 files changed +15
-3
lines changed Original file line number Diff line number Diff line change @@ -342,8 +342,8 @@ object Names {
342
342
343
343
override def encode : SimpleName = {
344
344
val dontEncode =
345
- length >= 3 &&
346
- head == '<' && last == '>' && isIdentifierStart(apply( 1 ) )
345
+ length >= 6 &&
346
+ head == '<' && ( this == StdNames .nme. CONSTRUCTOR || this == StdNames .nme. STATIC_CONSTRUCTOR )
347
347
if (dontEncode) this else NameTransformer .encode(this )
348
348
}
349
349
Original file line number Diff line number Diff line change @@ -996,7 +996,13 @@ object Parsers {
996
996
997
997
private def makeIdent (tok : Token , offset : Offset , name : Name ) = {
998
998
val tree = Ident (name)
999
- if (tok == BACKQUOTED_IDENT ) tree.pushAttachment(Backquoted , ())
999
+
1000
+ if tok == BACKQUOTED_IDENT then
1001
+ if name == nme.CONSTRUCTOR || name == nme.STATIC_CONSTRUCTOR then
1002
+ report.error(
1003
+ i """ Illegal backquoted identifier: `<init>` and `<clinit>` are forbidden """ ,
1004
+ in.sourcePos())
1005
+ tree.pushAttachment(Backquoted , ())
1000
1006
1001
1007
// Make sure that even trees with parsing errors have a offset that is within the offset
1002
1008
val errorOffset = offset min (in.lastOffset - 1 )
Original file line number Diff line number Diff line change
1
+ class Test (i : Int ):
2
+ val `<init>` = " init" // error: Illegal backquoted identifier: `<init>` and `<clinit>` are forbidden
3
+ val `<clinit>` = " clinit" // error: Illegal backquoted identifier: `<init>` and `<clinit>` are forbidden
Original file line number Diff line number Diff line change
1
+ object Test :
2
+ val `<x>` = " hello!"
3
+ def main (args : Array [String ]): Unit = println(`<x>`)
You can’t perform that action at this time.
0 commit comments