diff options
author | Martin Odersky <odersky@gmail.com> | 2006-11-16 19:38:11 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-11-16 19:38:11 +0000 |
commit | 837661837e2bdc4605e34617296267f2eba80208 (patch) | |
tree | a99cb8a367c1216c1058f3ab5b41deb9a03b26cb | |
parent | 2538bfa0587ba2c1f9c005fb6af3c67211397b8b (diff) | |
download | scala-837661837e2bdc4605e34617296267f2eba80208.tar.gz scala-837661837e2bdc4605e34617296267f2eba80208.tar.bz2 scala-837661837e2bdc4605e34617296267f2eba80208.zip |
fixed bug 798
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 5 | ||||
-rw-r--r-- | test/files/neg/bug798.check | 6 | ||||
-rw-r--r-- | test/files/neg/bug798.scala | 3 |
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); |