aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/Typer.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-08-15 10:15:19 +0200
committerMartin Odersky <odersky@gmail.com>2013-08-15 10:15:19 +0200
commitbedef0cf3217ac9066411c9e654bf18959adb763 (patch)
treee38c9077c5e7612c310cdc08628bec90749dd02f /src/dotty/tools/dotc/typer/Typer.scala
parentb90aca7ae53d27b442445b9c08c7b485211da9bc (diff)
downloaddotty-bedef0cf3217ac9066411c9e654bf18959adb763.tar.gz
dotty-bedef0cf3217ac9066411c9e654bf18959adb763.tar.bz2
dotty-bedef0cf3217ac9066411c9e654bf18959adb763.zip
Fixed expansion scheme for member defs.
Diffstat (limited to 'src/dotty/tools/dotc/typer/Typer.scala')
-rw-r--r--src/dotty/tools/dotc/typer/Typer.scala20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala
index ab622ef48..b4e1335f8 100644
--- a/src/dotty/tools/dotc/typer/Typer.scala
+++ b/src/dotty/tools/dotc/typer/Typer.scala
@@ -823,21 +823,12 @@ class Typer extends Namer with Applications with Implicits {
def typed(tree: untpd.Tree, pt: Type = WildcardType)(implicit ctx: Context): Tree = {
- def getExpansion(tree: untpd.Tree) = tree match {
- case tree: untpd.MemberDef =>
- expandedTree remove tree match {
- case Some(xtree) => xtree
- case none => tree
- }
- case _ => tree
- }
-
def encodeName(tree: untpd.Tree) = tree match {
case tree: NameTree => tree.withName(tree.name.encode)
case _ => tree
}
- val tree1 = typedExpanded(encodeName(getExpansion(tree)), pt)
+ val tree1 = typedExpanded(encodeName(tree), pt)
ctx.interpolateUndetVars(tree1.tpe.widen, tree1.pos)
adapt(tree1, pt)
}
@@ -853,8 +844,13 @@ class Typer extends Namer with Applications with Implicits {
buf += imp1
traverse(rest)(importContext(imp1.symbol, imp.selectors))
case (mdef: untpd.MemberDef) :: rest =>
- buf += typed(mdef)
- traverse(rest)
+ expandedTree remove mdef match {
+ case Some(xtree) =>
+ traverse(xtree :: rest)
+ case none =>
+ buf += typed(mdef)
+ traverse(rest)
+ }
case Thicket(stats) :: rest =>
traverse(stats ++ rest)
case stat :: rest =>