diff options
Diffstat (limited to 'src')
3 files changed, 10 insertions, 3 deletions
diff --git a/src/compiler/scala/reflect/internal/Definitions.scala b/src/compiler/scala/reflect/internal/Definitions.scala index 8af509e8ec..5201ad2fe0 100644 --- a/src/compiler/scala/reflect/internal/Definitions.scala +++ b/src/compiler/scala/reflect/internal/Definitions.scala @@ -228,11 +228,12 @@ trait Definitions /*extends reflect.generic.StandardDefinitions*/ { lazy val DynamicClass = getClass("scala.Dynamic") // fundamental modules + lazy val SysPackage = getPackageObject("scala.sys") + def Sys_error = getMember(SysPackage, nme.error) lazy val PredefModule: Symbol = getModule("scala.Predef") lazy val PredefModuleClass = PredefModule.tpe.typeSymbol def Predef_AnyRef = getMember(PredefModule, "AnyRef") // used by the specialization annotation def Predef_classOf = getMember(PredefModule, nme.classOf) - def Predef_error = getMember(PredefModule, nme.error) def Predef_identity = getMember(PredefModule, nme.identity) def Predef_conforms = getMember(PredefModule, nme.conforms) def Predef_wrapRefArray = getMember(PredefModule, nme.wrapRefArray) @@ -597,6 +598,12 @@ trait Definitions /*extends reflect.generic.StandardDefinitions*/ { attr } + def getPackageObjectClass(fullname: Name): Symbol = + getPackageObject(fullname).companionClass + + def getPackageObject(fullname: Name): Symbol = + getModuleOrClass(fullname.toTermName).info.member(newTermName("package")) + def getModule(fullname: Name): Symbol = getModuleOrClass(fullname.toTermName) diff --git a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala index e03b74d7ab..10f35075af 100644 --- a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala +++ b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala @@ -1451,7 +1451,7 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers { if (target.isDeferred || conflicting(typeEnv(symbol))) { treeCopy.DefDef(tree, mods, name, tparams, vparamss, tpt, localTyper.typed( - Apply(gen.mkAttributedRef(definitions.Predef_error), + Apply(gen.mkAttributedRef(definitions.Sys_error), List(Literal("boom! you stepped on a bug. This method should never be called."))))) } else { // we have an rhs, specialize it diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index 56d5ce9842..4dcc8b3c20 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -1337,7 +1337,7 @@ abstract class RefChecks extends InfoTransform { case DefDef(mods, name, tparams, vparams, tpt, EmptyTree) if tree.symbol.hasAnnotation(NativeAttr) => tree.symbol.resetFlag(DEFERRED) transform(treeCopy.DefDef(tree, mods, name, tparams, vparams, tpt, - typed(Apply(gen.mkAttributedRef(Predef_error), List(Literal("native method stub")))))) + typed(Apply(gen.mkAttributedRef(Sys_error), List(Literal("native method stub")))))) case ValDef(_, _, _, _) | DefDef(_, _, _, _, _, _) => checkDeprecatedOvers(tree) |