File tree Expand file tree Collapse file tree 2 files changed +11
-9
lines changed
compiler/src/dotty/tools/dotc/typer Expand file tree Collapse file tree 2 files changed +11
-9
lines changed Original file line number Diff line number Diff line change @@ -650,14 +650,16 @@ object Checking {
650
650
651
651
/** Check the inline override methods only use inline parameters if they override an inline parameter. */
652
652
def checkInlineOverrideParameters (sym : Symbol )(using Context ): Unit =
653
- val params = sym.paramSymss.flatten
654
- if params.exists(_.is(Inline )) then
655
- for
656
- sym2 <- sym.allOverriddenSymbols
657
- (p1, p2) <- params.lazyZip(sym2.paramSymss.flatten)
658
- if p1.is(Inline ) && ! p2.is(Inline )
659
- do
660
- ctx.error(" Cannot override non-inline parameter with an inline parameter" , p1.sourcePos)
653
+ lazy val params = sym.paramSymss.flatten
654
+ for
655
+ sym2 <- sym.allOverriddenSymbols
656
+ (p1, p2) <- sym.paramSymss.flatten.lazyZip(sym2.paramSymss.flatten)
657
+ if p1.is(Inline ) != p2.is(Inline )
658
+ do
659
+ ctx.error(
660
+ if p2.is(Inline ) then " Cannot override inline parameter with a non-inline parameter"
661
+ else " Cannot override non-inline parameter with an inline parameter" ,
662
+ p1.sourcePos)
661
663
662
664
}
663
665
Original file line number Diff line number Diff line change @@ -9,7 +9,7 @@ abstract class Logger {
9
9
class Logger1 extends Logger {
10
10
inline def log1 (msg : String ): Unit = ()
11
11
inline def log2 (msg : String ): Unit = ()
12
- inline def log3 (msg : String ): Unit = ()
12
+ inline def log3 (msg : String ): Unit = () // error: Cannot override inline parameter with a non-inline parameter
13
13
}
14
14
15
15
class Logger2 extends Logger {
You can’t perform that action at this time.
0 commit comments