diff options
author | Martin Odersky <odersky@gmail.com> | 2014-03-10 17:48:55 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-03-10 17:48:55 +0100 |
commit | 7fa78597bf58a7759303095121a432cb258f447c (patch) | |
tree | 26dc6a9ed47235d50afb1d31d69693b153ae41ed /src/dotty/tools/dotc/core/SymDenotations.scala | |
parent | ba8d9ea2e4b887fc0faa1f636aade84c45292144 (diff) | |
download | dotty-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.scala | 11 |
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) = { |