File tree Expand file tree Collapse file tree 4 files changed +15
-2
lines changed
compiler/src/dotty/tools/dotc Expand file tree Collapse file tree 4 files changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -342,8 +342,7 @@ object Names {
342342
343343 override def encode : SimpleName = {
344344 val dontEncode =
345- length >= 3 &&
346- head == '<' && last == '>' && isIdentifierStart(apply(1 ))
345+ this == StdNames .nme.CONSTRUCTOR || this == StdNames .nme.STATIC_CONSTRUCTOR
347346 if (dontEncode) this else NameTransformer .encode(this )
348347 }
349348
Original file line number Diff line number Diff line change @@ -978,6 +978,10 @@ object Parsers {
978978 def ident (): TermName =
979979 if (isIdent) {
980980 val name = in.name
981+ if name == nme.CONSTRUCTOR || name == nme.STATIC_CONSTRUCTOR then
982+ report.error(
983+ i """ Illegal backquoted identifier: `<init>` and `<clinit>` are forbidden """ ,
984+ in.sourcePos())
981985 in.nextToken()
982986 name
983987 }
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
4+ class `<init>` : // error: Illegal backquoted identifier: `<init>` and `<clinit>` are forbidden
5+ def `<init>` (in : String ) = ??? // error: Illegal backquoted identifier: `<init>` and `<clinit>` are forbidden
6+ class `<clinit>` : // error: Illegal backquoted identifier: `<init>` and `<clinit>` are forbidden
7+ def `<clinit>` (in : String ) = ??? // 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