diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-11-26 23:15:18 -0800 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-11-26 23:15:18 -0800 |
commit | 073ebbd20ce9775260b83a78ecf9ed6a3e6d3d9e (patch) | |
tree | 54774da32b079d290c48a4f2e7ea2e7915ecb45e /src/compiler/scala/tools/nsc/typechecker | |
parent | a6f758202ada377888563d51915119a386dd6b3e (diff) | |
parent | f30ae6149ddd4386debbf3a5650b1fc005ed00e9 (diff) | |
download | scala-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')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 18 |
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() |