aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/FirstTransform.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-10-26 15:46:38 +0100
committerMartin Odersky <odersky@gmail.com>2014-10-26 16:24:02 +0100
commit70946d7e2f8f3ca69b2ebba63f7afe34a53946a6 (patch)
tree39df50c33520939fc0484cdf3d0df42359da6244 /src/dotty/tools/dotc/transform/FirstTransform.scala
parentf459bf085d743c801fe724089438c0082014121f (diff)
downloaddotty-70946d7e2f8f3ca69b2ebba63f7afe34a53946a6.tar.gz
dotty-70946d7e2f8f3ca69b2ebba63f7afe34a53946a6.tar.bz2
dotty-70946d7e2f8f3ca69b2ebba63f7afe34a53946a6.zip
Better tests and bugfix for named args
The original problem was that in an expression f(x = bar(y = z)) only the outer named arg was eliminated by FirstTransform. The first error was that the postcondition in FirstTransform did not get to the named arg, because it got called from the overrdden typed method in TreeChecker, yet function arguments were evaluated with typedUnadapted. action: change Retyper and TreeChecker to override typedUndapped instead of typed. This flushed out the second error: transformOther in FirstTransform needs to recursively transform the argument of a NamedArg, because the framework itself does not handle NamedArg nodes. Now, all tests pass except that TreeChecker itself fails -Ycheck:gettersSetters due to a problem with handling by-name function types. This should be fixed in a separate PR.
Diffstat (limited to 'src/dotty/tools/dotc/transform/FirstTransform.scala')
-rw-r--r--src/dotty/tools/dotc/transform/FirstTransform.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/FirstTransform.scala b/src/dotty/tools/dotc/transform/FirstTransform.scala
index 05255c982..fed47b160 100644
--- a/src/dotty/tools/dotc/transform/FirstTransform.scala
+++ b/src/dotty/tools/dotc/transform/FirstTransform.scala
@@ -123,7 +123,7 @@ class FirstTransform extends MiniPhaseTransform with IdentityDenotTransformer {
override def transformOther(tree: Tree)(implicit ctx: Context, info: TransformerInfo) = tree match {
case tree: Import => EmptyTree
- case tree: NamedArg => tree.arg
+ case tree: NamedArg => transform(tree.arg)
case AppliedTypeTree(tycon, args) =>
val tparams = tycon.tpe.typeSymbol.typeParams
Checking.checkBounds(