diff options
author | Martin Odersky <odersky@gmail.com> | 2006-03-20 12:03:12 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-03-20 12:03:12 +0000 |
commit | 5459db1226b86027e0817acb0a2f41e0c12b28ed (patch) | |
tree | 2662cea2c40283eadcdccb5d53d58f769a825601 /src/compiler/scala/tools/nsc/typechecker/Namers.scala | |
parent | 4ddf81c21818dadb435a4a43b91ae69688d8bc1d (diff) | |
download | scala-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.scala | 10 |
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"); |