summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-10-30 13:00:41 +0000
committerMartin Odersky <odersky@gmail.com>2006-10-30 13:00:41 +0000
commit640ecf38b7125ff0d2c926a9a634593640cd95b1 (patch)
tree3f5aecd3a80d0ca2c02e3b92079ba0a0a34825b0 /test
parentf28285cee74e3f5da3bee5bdd18969566b75f736 (diff)
downloadscala-640ecf38b7125ff0d2c926a9a634593640cd95b1.tar.gz
scala-640ecf38b7125ff0d2c926a9a634593640cd95b1.tar.bz2
scala-640ecf38b7125ff0d2c926a9a634593640cd95b1.zip
added healing for escaping singleton types.
fixed bug 397
Diffstat (limited to 'test')
-rw-r--r--test/files/neg/bug783.check4
-rw-r--r--test/files/neg/bug783.scala29
-rw-r--r--test/files/pos/bug397.scala16
3 files changed, 49 insertions, 0 deletions
diff --git a/test/files/neg/bug783.check b/test/files/neg/bug783.check
new file mode 100644
index 0000000000..9594db14e7
--- /dev/null
+++ b/test/files/neg/bug783.check
@@ -0,0 +1,4 @@
+bug783.scala:12 error: stable identifier required, but Contexts.this.globalInit0 found.
+ globalInit0.Template(10, 20);
+ ^
+one error found
diff --git a/test/files/neg/bug783.scala b/test/files/neg/bug783.scala
new file mode 100644
index 0000000000..0180d3d634
--- /dev/null
+++ b/test/files/neg/bug783.scala
@@ -0,0 +1,29 @@
+package test;
+
+object Main extends Application {
+ class Global {
+ case class Template(x : Int, y : Int) {
+ Console.println("outer: " + Global.this);
+ }
+ }
+ trait Contexts requires Analyzer {
+ val xxx : global.Template = {
+ assert(globalInit0 != null);
+ globalInit0.Template(10, 20);
+ }
+ }
+ abstract class Analyzer extends Contexts {
+ type Global <: Main.Global;
+ final val global : Global = globalInit;
+ def globalInit : Global;
+ final def globalInit0 = globalInit.asInstanceOf[global.type];
+ }
+
+ object global0 extends Global {
+ object analyzer extends Analyzer {
+ type Global = global0.type;
+ override def globalInit = global0;
+ }
+ }
+ Console.println(global0.analyzer.xxx);
+}
diff --git a/test/files/pos/bug397.scala b/test/files/pos/bug397.scala
new file mode 100644
index 0000000000..87be2987ab
--- /dev/null
+++ b/test/files/pos/bug397.scala
@@ -0,0 +1,16 @@
+abstract class Root {
+
+ abstract class Edge {
+ type V;
+ def source: V;
+ }
+
+ abstract class Graph {
+ type W;
+ type E <: Edge{type V = W};
+ def edge: E;
+ }
+
+ val g: Graph{type W = Int};
+ val x: Int = g.edge.source;
+}