diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2012-12-18 14:50:55 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-12-18 14:50:55 +0100 |
commit | 5b2990c5119ae58d2c9d90d6b4822d906559aeef (patch) | |
tree | 781534b812df3dec35194ba31df7c7d8f324b59a /test | |
parent | e14917528e1c080a7f10785e21de36f3a7769718 (diff) | |
download | scala-5b2990c5119ae58d2c9d90d6b4822d906559aeef.tar.gz scala-5b2990c5119ae58d2c9d90d6b4822d906559aeef.tar.bz2 scala-5b2990c5119ae58d2c9d90d6b4822d906559aeef.zip |
SI-6745 Fix <init> lookup
We should only consult the decls of the enclosing
class. Members of the self type, enclosing scopes,
or imports should not be considered.
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/t4460a.check | 4 | ||||
-rw-r--r-- | test/files/neg/t4460a.scala | 7 | ||||
-rw-r--r-- | test/files/neg/t4460b.check | 4 | ||||
-rw-r--r-- | test/files/neg/t4460b.scala | 9 | ||||
-rw-r--r-- | test/files/neg/t4460c.check | 7 | ||||
-rw-r--r-- | test/files/neg/t4460c.scala | 7 | ||||
-rw-r--r-- | test/files/pos/t6745.scala | 4 |
7 files changed, 42 insertions, 0 deletions
diff --git a/test/files/neg/t4460a.check b/test/files/neg/t4460a.check new file mode 100644 index 0000000000..b711e7acb1 --- /dev/null +++ b/test/files/neg/t4460a.check @@ -0,0 +1,4 @@ +t4460a.scala:6: error: called constructor's definition must precede calling constructor's definition + def this() = this() // was binding to Predef.<init> !! + ^ +one error found diff --git a/test/files/neg/t4460a.scala b/test/files/neg/t4460a.scala new file mode 100644 index 0000000000..0a7a22178d --- /dev/null +++ b/test/files/neg/t4460a.scala @@ -0,0 +1,7 @@ +trait A + +class B(val x: Int) { + self: A => + + def this() = this() // was binding to Predef.<init> !! +} diff --git a/test/files/neg/t4460b.check b/test/files/neg/t4460b.check new file mode 100644 index 0000000000..f0e703fd10 --- /dev/null +++ b/test/files/neg/t4460b.check @@ -0,0 +1,4 @@ +t4460b.scala:7: error: called constructor's definition must precede calling constructor's definition + def this() = this() // was binding to Predef.<init> !! + ^ +one error found diff --git a/test/files/neg/t4460b.scala b/test/files/neg/t4460b.scala new file mode 100644 index 0000000000..1233017dd4 --- /dev/null +++ b/test/files/neg/t4460b.scala @@ -0,0 +1,9 @@ +trait A + +class Outer() { + class B(val x: Int) { + self: A => + + def this() = this() // was binding to Predef.<init> !! + } +} diff --git a/test/files/neg/t4460c.check b/test/files/neg/t4460c.check new file mode 100644 index 0000000000..4e96711b8b --- /dev/null +++ b/test/files/neg/t4460c.check @@ -0,0 +1,7 @@ +t4460c.scala:4: error: overloaded method constructor B with alternatives: + (a: String)B <and> + (x: Int)B + cannot be applied to () + def this(a: String) = this() + ^ +one error found diff --git a/test/files/neg/t4460c.scala b/test/files/neg/t4460c.scala new file mode 100644 index 0000000000..1ae258508e --- /dev/null +++ b/test/files/neg/t4460c.scala @@ -0,0 +1,7 @@ +class B(val x: Int) { + self: A => + + def this(a: String) = this() +} + +class A() diff --git a/test/files/pos/t6745.scala b/test/files/pos/t6745.scala new file mode 100644 index 0000000000..2ab8e6d39a --- /dev/null +++ b/test/files/pos/t6745.scala @@ -0,0 +1,4 @@ +class Bar(val i: Int) { + self: Any with AnyRef => + def this() = this(0) +} |