summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-07-25 15:27:04 +0000
committerMartin Odersky <odersky@gmail.com>2007-07-25 15:27:04 +0000
commit538e22b80c657dcc3326959a8601cd0a0da78e37 (patch)
tree12eae89e320905e7f2286751c93024007a733bdf
parent95eaa29b50cd8de56c798a6461d933d763a946fc (diff)
downloadscala-538e22b80c657dcc3326959a8601cd0a0da78e37.tar.gz
scala-538e22b80c657dcc3326959a8601cd0a0da78e37.tar.bz2
scala-538e22b80c657dcc3326959a8601cd0a0da78e37.zip
fixed bugs 1237, 1241
-rw-r--r--src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala6
-rw-r--r--test/files/neg/bug1224.check2
-rw-r--r--test/files/neg/bug1241.check4
-rw-r--r--test/files/neg/bug1241.scala8
-rw-r--r--test/files/pos/bug1237.scala15
5 files changed, 32 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala
index 736a5539b5..9b8ec5525c 100644
--- a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala
+++ b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala
@@ -169,8 +169,10 @@ abstract class ExplicitOuter extends InfoTransform with TransMatcher with Patter
/** Select and apply outer accessor from 'base'
* The result is typed but not positioned.
*/
- private def outerSelect(base: Tree): Tree =
- localTyper.typed(Apply(Select(base, outerAccessor(base.tpe.typeSymbol)), List()))
+ private def outerSelect(base: Tree): Tree = {
+ val path = Apply(Select(base, outerAccessor(base.tpe.typeSymbol.toInterface)), List())
+ localTyper.typed(path)
+ }
/** The path
* <blockquote><pre>`base'.$outer$$C1 ... .$outer$$Cn</pre></blockquote>
diff --git a/test/files/neg/bug1224.check b/test/files/neg/bug1224.check
index 98babb0489..515f823e50 100644
--- a/test/files/neg/bug1224.check
+++ b/test/files/neg/bug1224.check
@@ -1,4 +1,4 @@
bug1224.scala:4: error: illegal cyclic reference involving type T
- type T >: C[T] <: C[C[T]]
+ type T >: C[T] <: C[C[T]]
^
one error found
diff --git a/test/files/neg/bug1241.check b/test/files/neg/bug1241.check
new file mode 100644
index 0000000000..79271f56be
--- /dev/null
+++ b/test/files/neg/bug1241.check
@@ -0,0 +1,4 @@
+bug1241.scala:5: error: AnyRef{def hello(): Unit} does not have a constructor
+ val x4 = new T { def hello() { println("4") } } // error!
+ ^
+one error found
diff --git a/test/files/neg/bug1241.scala b/test/files/neg/bug1241.scala
new file mode 100644
index 0000000000..68a2c963c4
--- /dev/null
+++ b/test/files/neg/bug1241.scala
@@ -0,0 +1,8 @@
+object test extends Application {
+ // more..
+ type T = { def hello() }
+ //val x4 = new AnyRef { def hello() { println("4") } } // ok!
+ val x4 = new T { def hello() { println("4") } } // error!
+ x4.hello()
+ // more..
+}
diff --git a/test/files/pos/bug1237.scala b/test/files/pos/bug1237.scala
new file mode 100644
index 0000000000..01f656f580
--- /dev/null
+++ b/test/files/pos/bug1237.scala
@@ -0,0 +1,15 @@
+class HelloWorld {
+ def main(args: Array[String]) {
+
+ object TypeBool;
+
+ trait Fct
+ {
+ def g(x : int) = TypeBool // breaks.
+
+ // def g(x : int) = 3 // fine.
+ }
+
+ ()
+ }
+}