From 5b2990c5119ae58d2c9d90d6b4822d906559aeef Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Tue, 18 Dec 2012 14:50:55 +0100 Subject: SI-6745 Fix lookup We should only consult the decls of the enclosing class. Members of the self type, enclosing scopes, or imports should not be considered. --- test/files/neg/t4460a.check | 4 ++++ test/files/neg/t4460a.scala | 7 +++++++ test/files/neg/t4460b.check | 4 ++++ test/files/neg/t4460b.scala | 9 +++++++++ test/files/neg/t4460c.check | 7 +++++++ test/files/neg/t4460c.scala | 7 +++++++ test/files/pos/t6745.scala | 4 ++++ 7 files changed, 42 insertions(+) create mode 100644 test/files/neg/t4460a.check create mode 100644 test/files/neg/t4460a.scala create mode 100644 test/files/neg/t4460b.check create mode 100644 test/files/neg/t4460b.scala create mode 100644 test/files/neg/t4460c.check create mode 100644 test/files/neg/t4460c.scala create mode 100644 test/files/pos/t6745.scala (limited to 'test/files') 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. !! + ^ +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. !! +} 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. !! + ^ +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. !! + } +} 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 + (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) +} -- cgit v1.2.3