diff options
author | Paul Phillips <paulp@improving.org> | 2011-08-06 14:24:59 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-08-06 14:24:59 +0000 |
commit | ead69ed24557ff42966a2bd5f71b6434ac5343b6 (patch) | |
tree | a908dcd39aa2707c1a745cd84031e2366c170633 /src | |
parent | 4f4a80ad5b85ce3922c80bbc9524f2540918187e (diff) | |
download | scala-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')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 9 |
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)) |