summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-11-09 15:03:13 +0000
committerMartin Odersky <odersky@gmail.com>2007-11-09 15:03:13 +0000
commit9feddc6cb4df699472248fc780505a9b437f13a0 (patch)
tree4f4165955b41e1475a36be5f064ab492c817a7c0 /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parentbf83b15cadf4bea4bc025ef84042f3bcbb5d3621 (diff)
downloadscala-9feddc6cb4df699472248fc780505a9b437f13a0.tar.gz
scala-9feddc6cb4df699472248fc780505a9b437f13a0.tar.bz2
scala-9feddc6cb4df699472248fc780505a9b437f13a0.zip
fixed tickets 146,148,155
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index 8cd65792cc..f780293e78 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -608,7 +608,7 @@ trait Typers { self: Analyzer =>
* If all this fails, error
*/
protected def adapt(tree: Tree, mode: Int, pt: Type): Tree = tree.tpe match {
- case ct @ ConstantType(value) if ((mode & TYPEmode) == 0 && (ct <:< pt) && !inIDE) => // (0)
+ case ct @ ConstantType(value) if ((mode & (TYPEmode | FUNmode)) == 0 && (ct <:< pt) && !inIDE) => // (0)
copy.Literal(tree, value)
case OverloadedType(pre, alts) if ((mode & FUNmode) == 0) => // (1)
inferExprAlternative(tree, pt)
@@ -814,7 +814,8 @@ trait Typers { self: Analyzer =>
*/
def adaptToMember(qual: Tree, name: Name, tp: Type): Tree = {
val qtpe = qual.tpe.widen
- if (qual.isTerm && ((qual.symbol eq null) || !qual.symbol.isTerm || qual.symbol.isValue) &&
+ if (qual.isTerm &&
+ ((qual.symbol eq null) || !qual.symbol.isTerm || qual.symbol.isValue) &&
phase.id <= currentRun.typerPhase.id && !qtpe.isError && !tp.isError &&
qtpe.typeSymbol != AllRefClass && qtpe.typeSymbol != AllClass && qtpe != WildcardType) {
val coercion = inferView(qual.pos, qtpe, name, tp, true)
@@ -1264,6 +1265,10 @@ trait Typers { self: Analyzer =>
val tparams1 = List.mapConserve(ddef.tparams)(typedTypeDef)
val vparamss1 = List.mapConserve(ddef.vparamss)(vparams1 =>
List.mapConserve(vparams1)(typedValDef))
+ for (vparams1 <- vparamss1; if !vparams1.isEmpty; vparam1 <- vparams1.init) {
+ if (vparam1.symbol.tpe.typeSymbol == RepeatedParamClass)
+ error(vparam1.pos, "*-parameter must come last")
+ }
var tpt1 = checkNoEscaping.privates(meth, typedType(ddef.tpt))
if (!settings.Xexperimental.value) {
for (vparams <- vparamss1; vparam <- vparams) {