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 {
650650
651651 /** Check the inline override methods only use inline parameters if they override an inline parameter. */
652652 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)
661663
662664}
663665
Original file line number Diff line number Diff line change @@ -9,7 +9,7 @@ abstract class Logger {
99class Logger1 extends Logger {
1010 inline def log1 (msg : String ): Unit = ()
1111 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
1313}
1414
1515class Logger2 extends Logger {
You can’t perform that action at this time.
0 commit comments