diff options
author | Paul Phillips <paulp@improving.org> | 2011-06-14 22:48:22 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-06-14 22:48:22 +0000 |
commit | ebfbe58d36e1a6f10c6780267950b7353c9502cc (patch) | |
tree | 1724966457115ecd508bdeafbb1eb18f93fdccad | |
parent | e4f800b20550b62d5186130c6f06281f3df3ed90 (diff) | |
download | scala-ebfbe58d36e1a6f10c6780267950b7353c9502cc.tar.gz scala-ebfbe58d36e1a6f10c6780267950b7353c9502cc.tar.bz2 scala-ebfbe58d36e1a6f10c6780267950b7353c9502cc.zip |
Update manually created tree which was calling ...
Update manually created tree which was calling Predef.error to call
scala.sys.error instead. Created convenience functions in Definitions
for getting package objects akin to those for getting classes and
objects. No review.
5 files changed, 14 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) diff --git a/test/files/pos/native-warning.flags b/test/files/pos/native-warning.flags new file mode 100644 index 0000000000..65faf53579 --- /dev/null +++ b/test/files/pos/native-warning.flags @@ -0,0 +1 @@ +-Xfatal-warnings -deprecation
\ No newline at end of file diff --git a/test/files/pos/native-warning.scala b/test/files/pos/native-warning.scala new file mode 100644 index 0000000000..f721a57e8f --- /dev/null +++ b/test/files/pos/native-warning.scala @@ -0,0 +1,3 @@ +class A { + @native def setup(): Unit +} |