summaryrefslogtreecommitdiff
path: root/test/files/neg/t7636.check
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-10-10 11:24:14 +1000
committerJason Zaugg <jzaugg@gmail.com>2014-10-10 15:57:01 +1000
commit91c34cedc9ee54244f6b49dda691cbe0be182037 (patch)
tree94a4e6a33b6d7966d83526d881cd008ce744cc66 /test/files/neg/t7636.check
parent22233f40f641815fe7b9304bb386ee27c8422603 (diff)
downloadscala-91c34cedc9ee54244f6b49dda691cbe0be182037.tar.gz
scala-91c34cedc9ee54244f6b49dda691cbe0be182037.tar.bz2
scala-91c34cedc9ee54244f6b49dda691cbe0be182037.zip
SI-3439 Fix use of implicit constructor params in super call
When typechecking the primary constructor body, the symbols of constructor parameters of a class are owned by the class's owner. This is done make scoping work; you shouldn't be able to refer to class members in that position. However, other parts of the compiler weren't so happy about this arrangement. The enclosed test case shows that our checks for invalid, top-level implicits was spuriously triggered, and implicit search itself would fail. Furthermore, we had to hack `Run#compiles` to special case top-level early-initialized symbols. See SI-7264 / 86e6e9290. This commit: - introduces an intermediate local dummy term symbol which will act as the owner for constructor parameters and early initialized members - adds this to the `Run#symSource` map if it is top level - simplifies `Run#compiles` accordingly - tests this all in a top-level class, and one nested in another class.
Diffstat (limited to 'test/files/neg/t7636.check')
-rw-r--r--test/files/neg/t7636.check2
1 files changed, 1 insertions, 1 deletions
diff --git a/test/files/neg/t7636.check b/test/files/neg/t7636.check
index f70d50bee3..12391cccc8 100644
--- a/test/files/neg/t7636.check
+++ b/test/files/neg/t7636.check
@@ -4,7 +4,7 @@ t7636.scala:3: error: illegal inheritance;
^
t7636.scala:3: error: type mismatch;
found : Either[_$2,_$3(in constructor C)] where type _$3(in constructor C), type _$2
- required: Either[_, _$3(in object Main)] where type _$3(in object Main)
+ required: Either[_, _$3(in value <local Main>)] where type _$3(in value <local Main>)
class C extends ResultTable(Left(5):Either[_,_])(5)
^
two errors found