summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Namers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-03-20 12:03:12 +0000
committerMartin Odersky <odersky@gmail.com>2006-03-20 12:03:12 +0000
commit5459db1226b86027e0817acb0a2f41e0c12b28ed (patch)
tree2662cea2c40283eadcdccb5d53d58f769a825601 /src/compiler/scala/tools/nsc/typechecker/Namers.scala
parent4ddf81c21818dadb435a4a43b91ae69688d8bc1d (diff)
downloadscala-5459db1226b86027e0817acb0a2f41e0c12b28ed.tar.gz
scala-5459db1226b86027e0817acb0a2f41e0c12b28ed.tar.bz2
scala-5459db1226b86027e0817acb0a2f41e0c12b28ed.zip
1.
2. Changed method compareTo in class Ordered to compare. 3. Moved retsynch to pending 4. Fixed bug 550
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Namers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index da9918c317..f6581950bd 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -199,7 +199,7 @@ trait Namers requires Analyzer {
def applicableTypeParams(owner: Symbol): List[Symbol] =
if (owner.isTerm || owner.isPackageClass) List()
- else applicableTypeParams(owner.owner) ::: owner.unsafeTypeParams;
+ else applicableTypeParams(owner.owner) ::: owner.typeParams;
def deSkolemize: TypeMap = new DeSkolemizeMap(applicableTypeParams(context.owner));
@@ -349,7 +349,7 @@ trait Namers requires Analyzer {
override def complete(sym: Symbol): unit = {
val clazz = tree.symbol;
var tpe = clazz.primaryConstructor.tpe;
- val tparams = clazz.unsafeTypeParams;
+ val tparams = clazz.typeParams;
if (!tparams.isEmpty) tpe = PolyType(tparams, tpe).cloneInfo(sym);
sym.setInfo(tpe);
}
@@ -477,7 +477,7 @@ trait Namers requires Analyzer {
checkContractive(sym, result)
case ValDef(_, _, tpt, rhs) =>
- if (tpt.isEmpty)
+ if (tpt.isEmpty) {
if (rhs.isEmpty) {
context.error(tpt.pos, "missing parameter type");
ErrorType
@@ -485,7 +485,7 @@ trait Namers requires Analyzer {
tpt.tpe = deconstIfNotFinal(sym, newTyper(context.make(tree, sym)).computeType(rhs));
tpt.tpe
}
- else {
+ } else {
val typer1 =
if (sym.hasFlag(PARAM) && sym.owner.isConstructor && !phase.erasedTypes)
newTyper(context.makeConstructorContext)
@@ -545,6 +545,8 @@ trait Namers requires Analyzer {
Flags.flagsToString(flag1) + " and " + Flags.flagsToString(flag2));
if (sym.hasFlag(IMPLICIT) && !sym.isTerm)
context.error(sym.pos, "`implicit' modifier can be used only for values, variables and methods");
+ if (sym.hasFlag(IMPLICIT) && sym.owner.isPackage)
+ context.error(sym.pos, "`implicit' modifier cannot be used for top-level objects");
if (sym.hasFlag(ABSTRACT) && !sym.isClass)
context.error(sym.pos, "`abstract' modifier can be used only for classes; " +
"\nit should be omitted for abstract members");