diff options
author | Paul Phillips <paulp@improving.org> | 2012-04-09 10:12:03 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-04-09 19:43:38 -0700 |
commit | c456bebbcddae490a2ab2860855e936adb60539e (patch) | |
tree | 977cded8b50c1efa7e12bc2aee55d62fa91641d7 /src/compiler/scala/tools/nsc/typechecker | |
parent | 54496744806e9617d8ab745122080c48f60c64e7 (diff) | |
download | scala-c456bebbcddae490a2ab2860855e936adb60539e.tar.gz scala-c456bebbcddae490a2ab2860855e936adb60539e.tar.bz2 scala-c456bebbcddae490a2ab2860855e936adb60539e.zip |
Less laborious type application.
And eliminating redundancy. Reduced gratuitous usage of typeConstructor
on symbols which don't have type parameters.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker')
3 files changed, 7 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala index 7d1198a4a2..75440a1136 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala @@ -1107,7 +1107,7 @@ trait Implicits { /** Re-wraps a type in a manifest before calling inferImplicit on the result */ def findManifest(tp: Type, manifestClass: Symbol = if (full) FullManifestClass else PartialManifestClass) = - inferImplicit(tree, appliedType(manifestClass.typeConstructor, List(tp)), true, false, context).tree + inferImplicit(tree, appliedType(manifestClass, tp), true, false, context).tree def findSubManifest(tp: Type) = findManifest(tp, if (full) FullManifestClass else OptManifestClass) def mot(tp0: Type, from: List[Symbol], to: List[Type]): SearchResult = { diff --git a/src/compiler/scala/tools/nsc/typechecker/MethodSynthesis.scala b/src/compiler/scala/tools/nsc/typechecker/MethodSynthesis.scala index 82ffc3fd9e..3d8c2ea564 100644 --- a/src/compiler/scala/tools/nsc/typechecker/MethodSynthesis.scala +++ b/src/compiler/scala/tools/nsc/typechecker/MethodSynthesis.scala @@ -37,7 +37,7 @@ trait MethodSynthesis { require(container.owner.isPackageClass, "Container must be a top-level class in a package: " + container) require(tparams.size == args.size, "Arguments must match type constructor arity: " + tparams + ", " + args) - typeRef(container.typeConstructor.prefix, container, args map (_.tpe)) + appliedType(container, args map (_.tpe): _*) } def companionType[T](implicit m: M[T]) = diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index 76e1d40af9..f558e0afc7 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -186,7 +186,7 @@ trait Typers extends Modes with Adaptations with PatMatVirtualiser { } val result = wrapImplicit(from) if (result != EmptyTree) result - else wrapImplicit(appliedType(ByNameParamClass.typeConstructor, List(from))) + else wrapImplicit(byNameType(from)) } } @@ -2166,8 +2166,8 @@ trait Typers extends Modes with Adaptations with PatMatVirtualiser { def translateMatch(selector1: Tree, selectorTp: Type, casesAdapted: List[CaseDef], ownType: Type, doTranslation: Boolean, matchFailGen: Option[Tree => Tree] = None) = { def repeatedToSeq(tp: Type): Type = (tp baseType RepeatedParamClass) match { - case TypeRef(_, RepeatedParamClass, args) => appliedType(SeqClass.typeConstructor, args) - case _ => tp + case TypeRef(_, RepeatedParamClass, arg :: Nil) => seqType(arg) + case _ => tp } if (!doTranslation) { // a switch @@ -2240,7 +2240,7 @@ trait Typers extends Modes with Adaptations with PatMatVirtualiser { val (selector1, selectorTp, casesAdapted, resTp, doTranslation) = methodBodyTyper.prepareTranslateMatch(selector, cases, mode, ptRes) val methFormals = paramSyms map (_.tpe) - val parents = List(appliedType(AbstractFunctionClass(arity).typeConstructor, methFormals :+ resTp), SerializableClass.tpe) + val parents = List(abstractFunctionType(methFormals, resTp), SerializableClass.tpe) anonClass setInfo ClassInfoType(parents, newScope, anonClass) methodSym setInfoAndEnter MethodType(paramSyms, resTp) @@ -3555,7 +3555,7 @@ trait Typers extends Modes with Adaptations with PatMatVirtualiser { treeCopy.ArrayValue(tree, elemtpt1, elems1) .setType( (if (isFullyDefined(pt) && !phase.erasedTypes) pt - else appliedType(ArrayClass.typeConstructor, List(elemtpt1.tpe))).notNull) + else arrayType(elemtpt1.tpe)).notNull) } def typedAssign(lhs: Tree, rhs: Tree): Tree = { |