diff options
author | James Iry <james.iry@typesafe.com> | 2012-12-10 14:49:23 -0800 |
---|---|---|
committer | James Iry <james.iry@typesafe.com> | 2012-12-10 14:49:23 -0800 |
commit | 71e42a799aa11fda75d9d3e7b92da9f61dd1da5b (patch) | |
tree | b22fb2ad6bdf5d3a5cbb0d12e966eb4317faada3 /src | |
parent | 7fe7d2537963dd24ea1cca7b0c4b96f96b773c4a (diff) | |
download | scala-71e42a799aa11fda75d9d3e7b92da9f61dd1da5b.tar.gz scala-71e42a799aa11fda75d9d3e7b92da9f61dd1da5b.tar.bz2 scala-71e42a799aa11fda75d9d3e7b92da9f61dd1da5b.zip |
SI-6795 Adds negative check for "abstract override" on types in traits
"abstract override" shouldn't was being allowed on types in traits but the result
made no sense and the spec says that shouldn't be allowed.
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala index ae3b0bc0b7..9bceb91d4e 100644 --- a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala +++ b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala @@ -1077,7 +1077,7 @@ trait ContextErrors { "`override' modifier not allowed for constructors" case AbstractOverride => - "`abstract override' modifier only allowed for members of traits" + "`abstract override' modifier only allowed for non-type members of traits" case LazyAndEarlyInit => "`lazy' definitions may not be initialized early" diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index 3f546c9a51..c6eacf1fb7 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -1443,8 +1443,8 @@ trait Namers extends MethodSynthesis { if (sym.isConstructor && sym.isAnyOverride) fail(OverrideConstr) - if (sym.isAbstractOverride && !sym.owner.isTrait) - fail(AbstractOverride) + if (sym.isAbstractOverride && (!sym.owner.isTrait || sym.isType)) + fail(AbstractOverride) if (sym.isLazy && sym.hasFlag(PRESUPER)) fail(LazyAndEarlyInit) if (sym.info.typeSymbol == FunctionClass(0) && sym.isValueParameter && sym.owner.isCaseClass) |