diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2016-05-26 20:10:47 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan@lightbend.com> | 2016-08-11 10:59:15 -0700 |
commit | e26b4f49d80caa8f71a1986f604cca7f4714e3c3 (patch) | |
tree | 6c04be043061379186a9311d82d770a477678761 /src/compiler/scala/tools/nsc/transform/UnCurry.scala | |
parent | 1f6f7f8aa94c622665a35343de8108ea66a787b7 (diff) | |
download | scala-e26b4f49d80caa8f71a1986f604cca7f4714e3c3.tar.gz scala-e26b4f49d80caa8f71a1986f604cca7f4714e3c3.tar.bz2 scala-e26b4f49d80caa8f71a1986f604cca7f4714e3c3.zip |
Uncurry's info transform: non-static module --> method
We do this during uncurry so we can insert the necessary
applications to the empty argument list. Fields is too late.
Refchecks is no longer an info transform.
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/UnCurry.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/UnCurry.scala | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/UnCurry.scala b/src/compiler/scala/tools/nsc/transform/UnCurry.scala index 374e8430d8..a337ab7359 100644 --- a/src/compiler/scala/tools/nsc/transform/UnCurry.scala +++ b/src/compiler/scala/tools/nsc/transform/UnCurry.scala @@ -510,8 +510,11 @@ abstract class UnCurry extends InfoTransform case MethodType(_, _) => tree case tp => tree setType MethodType(Nil, tp.resultType) } - if (tree.symbol.isMethod && !tree.tpe.isInstanceOf[PolyType]) - gen.mkApplyIfNeeded(removeNullary()) + val sym = tree.symbol + // our info transformer may not have run yet, so duplicate flag logic instead of forcing it to run + val isMethodExitingUncurry = (sym hasFlag METHOD) || (sym hasFlag MODULE) && !sym.isStatic + if (isMethodExitingUncurry && !tree.tpe.isInstanceOf[PolyType]) + gen.mkApplyIfNeeded(removeNullary()) // apply () if tree.tpe has zero-arg MethodType else if (tree.isType) TypeTree(tree.tpe) setPos tree.pos else |