diff options
author | Aleksandar Prokopec <axel22@gmail.com> | 2012-08-30 11:04:58 +0200 |
---|---|---|
committer | Aleksandar Prokopec <axel22@gmail.com> | 2012-08-30 13:05:49 +0200 |
commit | cb393fcbe35d0a871f23189d791b44be1b826ed2 (patch) | |
tree | a76fbcd97879b98a63b9a08637ee39d1886169d3 | |
parent | a23edefac652e3be1474fceb3ee15d7eaecf1359 (diff) | |
download | scala-cb393fcbe35d0a871f23189d791b44be1b826ed2.tar.gz scala-cb393fcbe35d0a871f23189d791b44be1b826ed2.tar.bz2 scala-cb393fcbe35d0a871f23189d791b44be1b826ed2.zip |
Fix SI-6294.
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/icode/GenICode.scala | 7 | ||||
-rw-r--r-- | test/files/pos/t6294.scala | 14 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala index 431802d185..739aa2b184 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala @@ -121,10 +121,13 @@ abstract class GenICode extends SubComponent { m.native = m.symbol.hasAnnotation(definitions.NativeAttr) if (!m.isAbstractMethod && !m.native) { - if (m.symbol.isAccessor && m.symbol.accessed.hasStaticAnnotation) { + val staticfield = if (m.symbol.isAccessor && m.symbol.accessed.hasStaticAnnotation) { + val compClass = m.symbol.owner.companionClass + compClass.info.findMember(m.symbol.accessed.name, NoFlags, NoFlags, false) + } else NoSymbol + if (staticfield != NoSymbol) { // in companion object accessors to @static fields, we access the static field directly val hostClass = m.symbol.owner.companionClass - val staticfield = hostClass.info.findMember(m.symbol.accessed.name, NoFlags, NoFlags, false) if (m.symbol.isGetter) { ctx1.bb.emit(LOAD_FIELD(staticfield, true) setHostClass hostClass, tree.pos) diff --git a/test/files/pos/t6294.scala b/test/files/pos/t6294.scala new file mode 100644 index 0000000000..c6d39a9cc8 --- /dev/null +++ b/test/files/pos/t6294.scala @@ -0,0 +1,14 @@ + + + +object A { + @annotation.static final val x = 123 +} + + +object B { + println(A.x) +} + + + |