summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandar Prokopec <axel22@gmail.com>2012-08-30 11:04:58 +0200
committerAleksandar Prokopec <axel22@gmail.com>2012-08-30 13:05:49 +0200
commitcb393fcbe35d0a871f23189d791b44be1b826ed2 (patch)
treea76fbcd97879b98a63b9a08637ee39d1886169d3
parenta23edefac652e3be1474fceb3ee15d7eaecf1359 (diff)
downloadscala-cb393fcbe35d0a871f23189d791b44be1b826ed2.tar.gz
scala-cb393fcbe35d0a871f23189d791b44be1b826ed2.tar.bz2
scala-cb393fcbe35d0a871f23189d791b44be1b826ed2.zip
Fix SI-6294.
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/GenICode.scala7
-rw-r--r--test/files/pos/t6294.scala14
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)
+}
+
+
+