summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2010-08-18 17:12:44 +0000
committerMartin Odersky <odersky@gmail.com>2010-08-18 17:12:44 +0000
commit4fb0d53f1c59c7b6ad0f2c79ac1b0c555e4cef91 (patch)
treed908d2a8734948060c7d1c98cc3223f2f8982264
parente1232ab57a1f1e669b985debcfd0271768732384 (diff)
downloadscala-4fb0d53f1c59c7b6ad0f2c79ac1b0c555e4cef91.tar.gz
scala-4fb0d53f1c59c7b6ad0f2c79ac1b0c555e4cef91.tar.bz2
scala-4fb0d53f1c59c7b6ad0f2c79ac1b0c555e4cef91.zip
Closes #3756. No review.
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala10
-rw-r--r--src/compiler/scala/tools/nsc/transform/Mixin.scala4
2 files changed, 9 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
index 84fca0436d..244df8179a 100644
--- a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
@@ -462,13 +462,15 @@ abstract class ClassfileParser {
}
sym
}
- def lookupClass(name: Name) =
+
+ def lookupClass(name: Name) = try {
if (name.pos('.') == name.length)
definitions.getMember(definitions.EmptyPackageClass, name.toTypeName)
else
- //definitions.getClass(name) // see ticket #2464
- try { definitions.getClass(name) }
- catch { case _: FatalError => loadClassSymbol(name) }
+ definitions.getClass(name) // see tickets #2464, #3756
+ } catch {
+ case _: FatalError => loadClassSymbol(name)
+ }
innerClasses.get(name) match {
case Some(entry) =>
diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala
index a9922a50f2..547d3cc096 100644
--- a/src/compiler/scala/tools/nsc/transform/Mixin.scala
+++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala
@@ -488,8 +488,10 @@ abstract class Mixin extends InfoTransform with ast.TreeDSL {
EmptyTree
}
} else {
- if (currentOwner.isTrait && sym.isSetter)
+ if (currentOwner.isTrait && sym.isSetter && !atPhase(currentRun.picklerPhase)(sym.isDeferred)) {
+ println("add TraitSetter to "+sym)
sym.addAnnotation(AnnotationInfo(TraitSetterAnnotationClass.tpe, List(), List()))
+ }
tree
}
case Apply(tapp @ TypeApply(fn, List(arg)), List()) =>