Skip to content

Commit ac1d6f6

Browse files
committed
Make stubs generated by Java parser more robust.
??? as an identifier won't cut it if Predef is not imported. We now generate a TypedSplice with a symbolic reference instead.
1 parent 5e05d3f commit ac1d6f6

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,8 @@ class Definitions {
317317
def Predef_conforms(implicit ctx: Context) = Predef_conformsR.symbol
318318
lazy val Predef_classOfR = ScalaPredefModule.requiredMethodRef("classOf")
319319
def Predef_classOf(implicit ctx: Context) = Predef_classOfR.symbol
320+
lazy val Predef_undefinedR = ScalaPredefModule.requiredMethodRef("???")
321+
def Predef_undefined(implicit ctx: Context) = Predef_undefinedR.symbol
320322

321323
lazy val ScalaRuntimeModuleRef = ctx.requiredModuleRef("scala.runtime.ScalaRunTime")
322324
def ScalaRuntimeModule(implicit ctx: Context) = ScalaRuntimeModuleRef.symbol

compiler/src/dotty/tools/dotc/parsing/JavaParsers.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ object JavaParsers {
107107
def arrayOf(tpt: Tree) =
108108
AppliedTypeTree(Ident(nme.Array.toTypeName), List(tpt))
109109

110-
def unimplementedExpr = Ident("???".toTermName)
110+
def unimplementedExpr(implicit ctx: Context) = ref(defn.Predef_undefinedR)
111111

112112
def makeTemplate(parents: List[Tree], stats: List[Tree], tparams: List[TypeDef], needsDummyConstr: Boolean) = {
113113
def pullOutFirstConstr(stats: List[Tree]): (Tree, List[Tree]) = stats match {

0 commit comments

Comments
 (0)