diff options
author | Burak Emir <emir@epfl.ch> | 2006-11-20 17:14:53 +0000 |
---|---|---|
committer | Burak Emir <emir@epfl.ch> | 2006-11-20 17:14:53 +0000 |
commit | 63ceabef32e3b26d188dc6eda39eb9bf6d549bd8 (patch) | |
tree | 7597bb2e01bdb06272a3492d7b12e6c9c069e7c2 | |
parent | f05f4846f1f290faac95b5ecef65b6876d9502cd (diff) | |
download | scala-63ceabef32e3b26d188dc6eda39eb9bf6d549bd8.tar.gz scala-63ceabef32e3b26d188dc6eda39eb9bf6d549bd8.tar.bz2 scala-63ceabef32e3b26d188dc6eda39eb9bf6d549bd8.zip |
preserving position in adapt -Xunapply extension
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index ff4c5f75d4..fdf221b951 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -583,7 +583,8 @@ trait Typers requires Analyzer { if (obj != NoSymbol) tree.setSymbol(obj) obj } - if (definitions.unapplyMember(consp.tpe).exists) Ident(consp).setType(consp.tpe) + if (definitions.unapplyMember(consp.tpe).exists) + atPos(tree.pos) {Ident(consp).setType(consp.tpe)} else errorTree(tree, "" + clazz + " is not a case class, nor does it have unapply/unapplySeq method") } else { errorTree(tree, "" + clazz + " is neither a case class nor a sequence class") @@ -1429,8 +1430,8 @@ trait Typers requires Analyzer { val fun1 = typed(atPos(fun.pos) { Apply(Select(Ident(fun.symbol), unapp), List(arg)) }, EXPRmode, funPt) if (fun1.tpe.isErroneous) setError(tree) else { - var formals0 = if(unapp.name == nme.unapply) optionOfProductElems(fun1.tpe) - else unapplySeqResultToMethodSig(fun1.tpe) + val formals0 = if(unapp.name == nme.unapply) optionOfProductElems(fun1.tpe) + else unapplySeqResultToMethodSig(fun1.tpe) val formals1 = formalTypes(formals0, args.length) val args1 = typedArgs(args, mode, formals0, formals1) UnApply(fun1, args1) setPos tree.pos setType pt |