summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-11-26 23:15:18 -0800
committerJason Zaugg <jzaugg@gmail.com>2013-11-26 23:15:18 -0800
commit073ebbd20ce9775260b83a78ecf9ed6a3e6d3d9e (patch)
tree54774da32b079d290c48a4f2e7ea2e7915ecb45e /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parenta6f758202ada377888563d51915119a386dd6b3e (diff)
parentf30ae6149ddd4386debbf3a5650b1fc005ed00e9 (diff)
downloadscala-073ebbd20ce9775260b83a78ecf9ed6a3e6d3d9e.tar.gz
scala-073ebbd20ce9775260b83a78ecf9ed6a3e6d3d9e.tar.bz2
scala-073ebbd20ce9775260b83a78ecf9ed6a3e6d3d9e.zip
Merge pull request #3197 from retronym/merge/2.10.x-positions-to-master
Merge 2.10.x, and PR #3196, to master
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index 355e52ce2b..6d799b0098 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -3917,9 +3917,14 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
def typedNamedApply(orig: Tree, fun: Tree, args: List[Tree], mode: Mode, pt: Type): Tree = {
def argToBinding(arg: Tree): Tree = arg match {
- case AssignOrNamedArg(Ident(name), rhs) => gen.mkTuple(List(CODE.LIT(name.toString), rhs))
- case _ => gen.mkTuple(List(CODE.LIT(""), arg))
+ case AssignOrNamedArg(i @ Ident(name), rhs) =>
+ atPos(i.pos.withEnd(rhs.pos.end)) {
+ gen.mkTuple(List(atPos(i.pos)(CODE.LIT(name.toString)), rhs))
+ }
+ case _ =>
+ gen.mkTuple(List(CODE.LIT(""), arg))
}
+
val t = treeCopy.Apply(orig, fun, args map argToBinding)
wrapErrors(t, _.typed(t, mode, pt))
}
@@ -3979,7 +3984,10 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
case Some((opName, treeInfo.Applied(_, targs, _))) =>
val fun = gen.mkTypeApply(Select(qual, opName), targs)
if (opName == nme.updateDynamic) suppressMacroExpansion(fun) // SI-7617
- atPos(qual.pos)(Apply(fun, Literal(Constant(name.decode)) :: Nil))
+ val nameStringLit = atPos(treeSelection.pos.withStart(treeSelection.pos.point).makeTransparent) {
+ Literal(Constant(name.decode))
+ }
+ atPos(qual.pos)(Apply(fun, List(nameStringLit)))
case _ =>
setError(tree)
}
@@ -4175,7 +4183,9 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
}
else if(dyna.isDynamicallyUpdatable(lhs1)) {
val rhs1 = typedByValueExpr(rhs)
- val t = Apply(lhs1, List(rhs1))
+ val t = atPos(lhs1.pos.withEnd(rhs1.pos.end)) {
+ Apply(lhs1, List(rhs1))
+ }
dyna.wrapErrors(t, _.typed1(t, mode, pt))
}
else fail()