@@ -315,7 +315,10 @@ object Checking {
315
315
fail(AbstractMemberMayNotHaveModifier (sym, flag))
316
316
def checkNoConflict (flag1 : FlagSet , flag2 : FlagSet ) =
317
317
if (sym.is(allOf(flag1, flag2)))
318
- fail(i " illegal combination of modifiers: $flag1 and $flag2 for: $sym" )
318
+ fail(i " illegal combination of modifiers: ` $flag1` and ` $flag2` for: $sym" )
319
+ def checkApplicable (flag : FlagSet , ok : Boolean ) =
320
+ if (! ok && ! sym.is(Synthetic ))
321
+ fail(i " modifier ` $flag` is not allowed for this definition " )
319
322
320
323
if (sym.is(ImplicitCommon )) {
321
324
if (sym.owner.is(Package ))
@@ -345,6 +348,9 @@ object Checking {
345
348
checkNoConflict(Final , Sealed )
346
349
checkNoConflict(Private , Protected )
347
350
checkNoConflict(Abstract , Override )
351
+ checkNoConflict(Lazy , Inline )
352
+ if (sym.is(Inline )) checkApplicable(Inline , sym.is(Method , butNot = Mutable ))
353
+ if (sym.is(Lazy )) checkApplicable(Lazy , ! sym.is(Method | Mutable ))
348
354
if (sym.isType && ! sym.is(Deferred ))
349
355
for (cls <- sym.allOverriddenSymbols.filter(_.isClass)) {
350
356
fail(CannotHaveSameNameAs (sym, cls, CannotHaveSameNameAs .CannotBeOverridden ))
0 commit comments