diff options
author | Martin Odersky <odersky@gmail.com> | 2014-03-12 17:02:47 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-03-12 17:05:13 +0100 |
commit | 66291018e0512b2d4e7d6bac017ab47b95939275 (patch) | |
tree | 3ea52f67edcf42c860207ec806d38959654f4f57 /src/dotty/tools/dotc/typer/Typer.scala | |
parent | 7fa78597bf58a7759303095121a432cb258f447c (diff) | |
download | dotty-66291018e0512b2d4e7d6bac017ab47b95939275.tar.gz dotty-66291018e0512b2d4e7d6bac017ab47b95939275.tar.bz2 dotty-66291018e0512b2d4e7d6bac017ab47b95939275.zip |
Fix constructor completion problem detected in t0054
Constructors need to be completed in the context which immediately encloses
a class. Otherwise type references in the constructor see the wrong types,
as is demonstrated in t0054. The difficulty here is that the inner class B
nested in A also extends from A. Then it makes a difference whether the constructor
parameter types of B are resolved in the context of B or in the context of A.
Added explanation for context handling of constructors.
Diffstat (limited to 'src/dotty/tools/dotc/typer/Typer.scala')
-rw-r--r-- | src/dotty/tools/dotc/typer/Typer.scala | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala index e195c2807..ef8ce9eed 100644 --- a/src/dotty/tools/dotc/typer/Typer.scala +++ b/src/dotty/tools/dotc/typer/Typer.scala @@ -699,9 +699,9 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit val TypeBoundsTree(lo, hi) = desugar.typeBoundsTree(tree) val lo1 = typed(lo) val hi1 = typed(hi) - if (false) // need to do in later phase, as this might cause a cyclic reference error. See pos/t0039.scala - if (!(lo1.tpe <:< hi1.tpe)) - ctx.error(i"lower bound ${lo1.tpe} does not conform to upper bound ${hi1.tpe}", tree.pos) + // need to do in later phase, as this might cause a cyclic reference error. See pos/t0039.scala + // if (!(lo1.tpe <:< hi1.tpe)) + // ctx.error(i"lower bound ${lo1.tpe} does not conform to upper bound ${hi1.tpe}", tree.pos) assignType(cpy.TypeBoundsTree(tree, lo1, hi1), lo1, hi1) } |