summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Namers.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-08-06 14:24:59 +0000
committerPaul Phillips <paulp@improving.org>2011-08-06 14:24:59 +0000
commitead69ed24557ff42966a2bd5f71b6434ac5343b6 (patch)
treea908dcd39aa2707c1a745cd84031e2366c170633 /src/compiler/scala/tools/nsc/typechecker/Namers.scala
parent4f4a80ad5b85ce3922c80bbc9524f2540918187e (diff)
downloadscala-ead69ed24557ff42966a2bd5f71b6434ac5343b6.tar.gz
scala-ead69ed24557ff42966a2bd5f71b6434ac5343b6.tar.bz2
scala-ead69ed24557ff42966a2bd5f71b6434ac5343b6.zip
Disallowed implicit modifier on auxiliary const...
Disallowed implicit modifier on auxiliary constructors, since it either silently accomplishes nothing or crashes the compiler. If it should do something useful let me know. Closes SI-4882, review by odersky.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Namers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index 7a42d6e519..2ebfdc7426 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -1343,6 +1343,13 @@ trait Namers { self: Analyzer =>
" for: " + sym);
}
+ if (sym.isConstructor) {
+ if (sym.hasFlag(OVERRIDE | ABSOVERRIDE))
+ context.error(sym.pos, "`override' modifier not allowed for constructors")
+ if (sym.isImplicit)
+ context.error(sym.pos, "`implicit' modifier not allowed for constructors")
+ }
+
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.isPackageClass)
@@ -1354,8 +1361,6 @@ trait Namers { self: Analyzer =>
"\nit should be omitted for abstract members")
if (sym.hasFlag(OVERRIDE | ABSOVERRIDE) && !sym.hasFlag(TRAIT) && sym.isClass)
context.error(sym.pos, "`override' modifier not allowed for classes")
- if (sym.hasFlag(OVERRIDE | ABSOVERRIDE) && sym.isConstructor)
- context.error(sym.pos, "`override' modifier not allowed for constructors")
if (sym.hasFlag(ABSOVERRIDE) && !sym.owner.isTrait)
context.error(sym.pos, "`abstract override' modifier only allowed for members of traits")
if (sym.isLazy && sym.hasFlag(PRESUPER))