summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames Iry <jamesiry@gmail.com>2013-05-29 12:53:20 -0700
committerJames Iry <jamesiry@gmail.com>2013-05-29 12:53:20 -0700
commit810a6de757a44d7d481e0ee1bd9c2fb8abe6043d (patch)
tree851f9953d3da078e5dc4b9529b396a4bf06af153 /src
parent6cc39842f79bcf266ca3f49eca1f2a1ba46ed817 (diff)
parent851e39991e7a929e1d83d5e35a024d5b9bd0b75f (diff)
downloadscala-810a6de757a44d7d481e0ee1bd9c2fb8abe6043d.tar.gz
scala-810a6de757a44d7d481e0ee1bd9c2fb8abe6043d.tar.bz2
scala-810a6de757a44d7d481e0ee1bd9c2fb8abe6043d.zip
Merge pull request #2601 from retronym/ticket/7516
SI-7516 Revert "SI-7234 Make named args play nice w. depmet types"
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala b/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
index 802df39f01..d54f894c62 100644
--- a/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
@@ -284,11 +284,13 @@ trait NamesDefaults { self: Analyzer =>
case Typed(expr, Ident(tpnme.WILDCARD_STAR)) => expr.tpe
case _ => seqType(arg.tpe)
}
- else
- // Note stabilizing can lead to a non-conformant argument when existentials are involved, e.g. neg/t3507-old.scala, hence the filter.
- // We have to deconst or types inferred from literal arguments will be Constant(_), e.g. pos/z1730.scala.
- gen.stableTypeFor(arg).filter(_ <:< paramTpe).getOrElse(arg.tpe).deconst
- )
+ else {
+ // TODO In 83c9c764b, we tried to a stable type here to fix SI-7234. But the resulting TypeTree over a
+ // singleton type without an original TypeTree fails to retypecheck after a resetLocalAttrs (SI-7516),
+ // which is important for (at least) macros.
+ arg.tpe
+ }
+ ).widen // have to widen or types inferred from literal defaults will be singletons
val s = context.owner.newValue(unit.freshTermName("x$"), arg.pos) setInfo (
if (byName) functionType(Nil, argTpe) else argTpe
)