summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames Iry <james.iry@typesafe.com>2012-12-10 14:49:23 -0800
committerJames Iry <james.iry@typesafe.com>2012-12-10 14:49:23 -0800
commit71e42a799aa11fda75d9d3e7b92da9f61dd1da5b (patch)
treeb22fb2ad6bdf5d3a5cbb0d12e966eb4317faada3 /src
parent7fe7d2537963dd24ea1cca7b0c4b96f96b773c4a (diff)
downloadscala-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.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala4
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)