summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorJames Iry <james.iry@typesafe.com>2012-12-10 15:22:49 -0800
committerJames Iry <james.iry@typesafe.com>2012-12-10 15:25:50 -0800
commitf029c3a141972b23e33310e23db72e0e602a46ca (patch)
tree1c144c372307439b2ae24a1509574ba50c364ae4 /src/compiler
parent71e42a799aa11fda75d9d3e7b92da9f61dd1da5b (diff)
downloadscala-f029c3a141972b23e33310e23db72e0e602a46ca.tar.gz
scala-f029c3a141972b23e33310e23db72e0e602a46ca.tar.bz2
scala-f029c3a141972b23e33310e23db72e0e602a46ca.zip
SI-6795 Simplify errors related to "abstract override" on type members
Instead of saying "only allowed on non-type members of traits" use separate errors for "not allowed on types" and "only allowed on members of traits"
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala7
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala8
2 files changed, 11 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
index 9bceb91d4e..4268398081 100644
--- a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
@@ -980,7 +980,7 @@ trait ContextErrors {
object SymValidateErrors extends Enumeration {
val ImplicitConstr, ImplicitNotTermOrClass, ImplicitAtToplevel,
OverrideClass, SealedNonClass, AbstractNonClass,
- OverrideConstr, AbstractOverride, LazyAndEarlyInit,
+ OverrideConstr, AbstractOverride, AbstractOverrideOnTypeMember, LazyAndEarlyInit,
ByNameParameter, AbstractVar = Value
}
@@ -1077,7 +1077,10 @@ trait ContextErrors {
"`override' modifier not allowed for constructors"
case AbstractOverride =>
- "`abstract override' modifier only allowed for non-type members of traits"
+ "`abstract override' modifier only allowed for members of traits"
+
+ case AbstractOverrideOnTypeMember =>
+ "`abstract override' modifier not allowed for type members"
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 c6eacf1fb7..98b6264051 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -1443,8 +1443,12 @@ trait Namers extends MethodSynthesis {
if (sym.isConstructor && sym.isAnyOverride)
fail(OverrideConstr)
- if (sym.isAbstractOverride && (!sym.owner.isTrait || sym.isType))
- fail(AbstractOverride)
+ if (sym.isAbstractOverride) {
+ if (!sym.owner.isTrait)
+ fail(AbstractOverride)
+ if(sym.isType)
+ fail(AbstractOverrideOnTypeMember)
+ }
if (sym.isLazy && sym.hasFlag(PRESUPER))
fail(LazyAndEarlyInit)
if (sym.info.typeSymbol == FunctionClass(0) && sym.isValueParameter && sym.owner.isCaseClass)