summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-11-16 19:38:11 +0000
committerMartin Odersky <odersky@gmail.com>2006-11-16 19:38:11 +0000
commit837661837e2bdc4605e34617296267f2eba80208 (patch)
treea99cb8a367c1216c1058f3ab5b41deb9a03b26cb
parent2538bfa0587ba2c1f9c005fb6af3c67211397b8b (diff)
downloadscala-837661837e2bdc4605e34617296267f2eba80208.tar.gz
scala-837661837e2bdc4605e34617296267f2eba80208.tar.bz2
scala-837661837e2bdc4605e34617296267f2eba80208.zip
fixed bug 798
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala5
-rw-r--r--test/files/neg/bug798.check6
-rw-r--r--test/files/neg/bug798.scala3
3 files changed, 8 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index 142f737283..661238a387 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -335,7 +335,10 @@ trait Namers requires Analyzer {
if (settings.debug.value) log("defining " + sym);
val tp = typeSig(tree)
sym.setInfo(tp)
- //if (sym.isAliasType || sym.isAbstractType) typer.checkNonCyclic(sym)
+ if ((sym.isAliasType || sym.isAbstractType) && !(sym hasFlag PARAM) &&
+ !typer.checkNonCyclic(tree.pos, tp))
+ sym.setInfo(ErrorType) // this early test is there to avoid infinite baseTypes when
+ // adding setters and getters --> bug798
if (settings.debug.value) log("defined " + sym);
validate(sym)
}
diff --git a/test/files/neg/bug798.check b/test/files/neg/bug798.check
index 6fd80bcba5..82286a7dfe 100644
--- a/test/files/neg/bug798.check
+++ b/test/files/neg/bug798.check
@@ -1,4 +1,4 @@
-bug798.scala:5 error: cyclic aliasing or subtyping involving type Bracks
- type Bracks <: Bracks
- ^
+bug798.scala:2 error: cyclic aliasing or subtyping involving type Bracks
+trait Test[Bracks <: Bracks] {
+ ^
one error found
diff --git a/test/files/neg/bug798.scala b/test/files/neg/bug798.scala
index 9d95ae2ddb..a2bf66d19b 100644
--- a/test/files/neg/bug798.scala
+++ b/test/files/neg/bug798.scala
@@ -1,8 +1,7 @@
package test;
-trait Test {
+trait Test[Bracks <: Bracks] {
def f(list : Any) = null;
class C[T]
- type Bracks <: Bracks
val bracks : Bracks;
val singletons = f(bracks);