Skip to content

Commit 22ba798

Browse files
Merge pull request #6316 from dotty-staging/make-inline-non-final
Make inline non final
2 parents b8214f2 + f6e0238 commit 22ba798

File tree

3 files changed

+31
-4
lines changed

3 files changed

+31
-4
lines changed

compiler/src/dotty/tools/dotc/core/Flags.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -592,8 +592,8 @@ object Flags {
592592
/** Assumed to be pure */
593593
final val StableOrErased: FlagSet = StableRealizable | Erased
594594

595-
/** Labeled `private`, `final`, or `inline` */
596-
final val EffectivelyFinal: FlagSet = Private | Final | Inline
595+
/** Labeled `private`, or `final` */
596+
final val EffectivelyFinal: FlagSet = Private | Final
597597

598598
/** A private method */
599599
final val PrivateMethod: FlagConjunction = allOf(Private, Method)

tests/neg-macros/quote-MacroOverride.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ object Test {
66
}
77

88
object B extends A {
9-
inline def f() = ${'{}} // error: may not override
10-
override def g() = () // error: may not override
9+
override inline def f() = () // error: method f of type (): Unit is an inline method, must override at least one concrete method
10+
override def g() = ()
1111
}
1212

1313
}

tests/run/quote-MacroOverride.scala

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
object Test {
2+
3+
abstract class A {
4+
inline def f1(): String = "A.f1"
5+
inline def f2(): String = "A.f2"
6+
def f3(): String = "A.f3"
7+
}
8+
9+
object B extends A {
10+
override def f1(): String = "B.f1"
11+
override inline def f2(): String = "B.f2"
12+
override inline def f3(): String = "B.f3"
13+
}
14+
15+
def main(args: Array[String]): Unit = {
16+
val a: A = B
17+
assert(a.f1() == "A.f1")
18+
assert(a.f2() == "A.f2")
19+
assert(a.f3() == "A.f3")
20+
21+
val b: B.type = B
22+
assert(b.f1() == "B.f1")
23+
assert(b.f2() == "B.f2")
24+
assert(b.f3() == "B.f3")
25+
}
26+
27+
}

0 commit comments

Comments
 (0)