diff options
author | Martin Odersky <odersky@gmail.com> | 2014-08-24 17:32:27 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-08-24 17:50:52 +0200 |
commit | bdefca99bc8a7ef6c1d895aecad66b81a18fa9e7 (patch) | |
tree | 49e519fb8a9bc45959f00e558e82a9655d0063b7 /src/dotty/tools/dotc/typer/Typer.scala | |
parent | 412fc2ce472acf8b59dba05ee96d3c09a6bb2d41 (diff) | |
download | dotty-bdefca99bc8a7ef6c1d895aecad66b81a18fa9e7.tar.gz dotty-bdefca99bc8a7ef6c1d895aecad66b81a18fa9e7.tar.bz2 dotty-bdefca99bc8a7ef6c1d895aecad66b81a18fa9e7.zip |
Fix context for super calls
Super calls need to have special contexts, going beyond super-mode.
It's explained in detail in Context#superCallContext.
this(...) calls also need special contexts, but this is not enabled yet
(some tests fail, need to track down why).
Diffstat (limited to 'src/dotty/tools/dotc/typer/Typer.scala')
-rw-r--r-- | src/dotty/tools/dotc/typer/Typer.scala | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala index 1cfd03e4c..67c9e15af 100644 --- a/src/dotty/tools/dotc/typer/Typer.scala +++ b/src/dotty/tools/dotc/typer/Typer.scala @@ -818,7 +818,8 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit } def typedClassDef(cdef: untpd.TypeDef, cls: ClassSymbol)(implicit ctx: Context) = track("typedClassDef") { - val superCtx = ctx.fresh addMode Mode.InSuperCall + val TypeDef(mods, name, impl @ Template(constr, parents, self, body)) = cdef + val superCtx = ctx.superCallContext def typedParent(tree: untpd.Tree): Tree = if (tree.isType) typedType(tree)(superCtx) else { @@ -838,7 +839,6 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit else parents } - val TypeDef(mods, name, impl @ Template(constr, parents, self, body)) = cdef val mods1 = addTypedModifiersAnnotations(mods, cls) val constr1 = typed(constr).asInstanceOf[DefDef] val parents1 = ensureConstrCall(ensureFirstIsClass( |