aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/SymDenotations.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-03-10 17:48:55 +0100
committerMartin Odersky <odersky@gmail.com>2014-03-10 17:48:55 +0100
commit7fa78597bf58a7759303095121a432cb258f447c (patch)
tree26dc6a9ed47235d50afb1d31d69693b153ae41ed /src/dotty/tools/dotc/core/SymDenotations.scala
parentba8d9ea2e4b887fc0faa1f636aade84c45292144 (diff)
downloaddotty-7fa78597bf58a7759303095121a432cb258f447c.tar.gz
dotty-7fa78597bf58a7759303095121a432cb258f447c.tar.bz2
dotty-7fa78597bf58a7759303095121a432cb258f447c.zip
Fix problems related to t0039
This test case exercised several problems: 1.)2.) Two ways to run into a cyclic references. Fixed by - assuming an early info when completing a typedef, similarly to what is done for a classdef - doing wellformed bounds checking in a later phase. Failure to check whether arguments correspond to F-bounds. - a substitution was missing.
Diffstat (limited to 'src/dotty/tools/dotc/core/SymDenotations.scala')
-rw-r--r--src/dotty/tools/dotc/core/SymDenotations.scala11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/SymDenotations.scala b/src/dotty/tools/dotc/core/SymDenotations.scala
index 5fbf6c2c4..bbe5cf986 100644
--- a/src/dotty/tools/dotc/core/SymDenotations.scala
+++ b/src/dotty/tools/dotc/core/SymDenotations.scala
@@ -145,9 +145,14 @@ object SymDenotations {
if (myFlags is Touched) throw new CyclicReference(this)
myFlags |= Touched
- completions.println(s"completing ${this.debugString}")
- completer.complete(this)
- completions.println(s"completed ${this.debugString}")
+ // completions.println(s"completing ${this.debugString}")
+ try completer.complete(this)
+ catch {
+ case ex: CyclicReference =>
+ completions.println(s"error while completing ${this.debugString}")
+ throw ex
+ }
+ // completions.println(s"completed ${this.debugString}")
}
protected[dotc] final def info_=(tp: Type) = {