@@ -5,7 +5,7 @@ import transform._
5
5
import core ._
6
6
import config ._
7
7
import Symbols ._ , SymDenotations ._ , Types ._ , Contexts ._ , Decorators ._ , Flags ._ , Names ._ , NameOps ._
8
- import StdNames ._ , Denotations ._ , Scopes ._ , Constants .Constant
8
+ import StdNames ._ , Denotations ._ , Scopes ._ , Constants .Constant , SymUtils . _
9
9
import Annotations ._
10
10
import util .Positions ._
11
11
import scala .collection .{ mutable , immutable }
@@ -29,9 +29,6 @@ object RefChecks {
29
29
def apply (pre : Type , name : Name )(implicit ctx : Context ): Boolean = isDefaultGetter(name)
30
30
}
31
31
32
- private val AnyOverride = Override | AbsOverride
33
- private val AnyOverrideOrSynthetic = AnyOverride | Synthetic
34
-
35
32
/** Only one overloaded alternative is allowed to define default arguments */
36
33
private def checkOverloadedRestrictions (clazz : Symbol )(implicit ctx : Context ): Unit = {
37
34
// Using the default getters (such as methodName$default$1) as a cheap way of
@@ -254,8 +251,10 @@ object RefChecks {
254
251
overrideError(" cannot be used here - classes can only override abstract types" )
255
252
} else if (other.isEffectivelyFinal) { // (1.2)
256
253
overrideError(i " cannot override final member ${other.showLocated}" )
257
- } else if (! other.is(Deferred ) && ! isDefaultGetter(other.name) && ! member.is(AnyOverrideOrSynthetic )) {
258
- // (*) Synthetic exclusion for (at least) default getters, fixes SI-5178. We cannot assign the OVERRIDE flag to
254
+ } else if (! other.is(Deferred ) &&
255
+ ! isDefaultGetter(other.name) &&
256
+ ! member.isAnyOverride) {
257
+ // (*) Exclusion for default getters, fixes SI-5178. We cannot assign the Override flag to
259
258
// the default getter: one default getter might sometimes override, sometimes not. Example in comment on ticket.
260
259
if (member.owner != clazz && other.owner != clazz && ! (other.owner derivesFrom member.owner))
261
260
emitOverrideError(
@@ -266,13 +265,13 @@ object RefChecks {
266
265
overrideError(" needs `override' modifier" )
267
266
} else if (other.is(AbsOverride ) && other.isIncompleteIn(clazz) && ! member.is(AbsOverride )) {
268
267
overrideError(" needs `abstract override' modifiers" )
269
- } else if (member.is(AnyOverride ) && other.is(Accessor ) &&
268
+ } else if (member.is(Override ) && other.is(Accessor ) &&
270
269
other.accessedFieldOrGetter.is(Mutable , butNot = Lazy )) {
271
270
// !?! this is not covered by the spec. We need to resolve this either by changing the spec or removing the test here.
272
271
// !!! is there a !?! convention? I'm !!!ing this to make sure it turns up on my searches.
273
272
if (! ctx.settings.overrideVars.value)
274
273
overrideError(" cannot override a mutable variable" )
275
- } else if (member.is( AnyOverride ) &&
274
+ } else if (member.isAnyOverride &&
276
275
! (member.owner.thisType.baseClasses exists (_ isSubClass other.owner)) &&
277
276
! member.is(Deferred ) && ! other.is(Deferred ) &&
278
277
intersectionIsEmpty(member.extendedOverriddenSymbols, other.extendedOverriddenSymbols)) {
@@ -550,7 +549,7 @@ object RefChecks {
550
549
551
550
// 4. Check that every defined member with an `override` modifier overrides some other member.
552
551
for (member <- clazz.info.decls)
553
- if (member.is( AnyOverride ) && ! (clazz.thisType.baseClasses exists (hasMatchingSym(_, member)))) {
552
+ if (member.isAnyOverride && ! (clazz.thisType.baseClasses exists (hasMatchingSym(_, member)))) {
554
553
// for (bc <- clazz.info.baseClasses.tail) Console.println("" + bc + " has " + bc.info.decl(member.name) + ":" + bc.info.decl(member.name).tpe);//DEBUG
555
554
556
555
val nonMatching = clazz.info.member(member.name).altsWith(alt => alt.owner != clazz && ! alt.is(Final ))
@@ -563,7 +562,8 @@ object RefChecks {
563
562
val superSigs = ms.map(_.showDcl).mkString(" \n " )
564
563
issueError(s " . \n Note: the super classes of ${member.owner} contain the following, non final members named ${member.name}: \n ${superSigs}" )
565
564
}
566
- member.resetFlag(AnyOverride )
565
+ member.resetFlag(Override )
566
+ member.resetFlag(AbsOverride )
567
567
}
568
568
}
569
569
0 commit comments