Skip to content

Commit a1e4e42

Browse files
committed
Add reflect Flags.AbsOverride
1 parent 0397de1 commit a1e4e42

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

compiler/src/scala/quoted/runtime/impl/QuotesImpl.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2753,6 +2753,7 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
27532753

27542754
object Flags extends FlagsModule:
27552755
def Abstract: Flags = dotc.core.Flags.Abstract
2756+
def AbsOverride: Flags = dotc.core.Flags.AbsOverride
27562757
def Artifact: Flags = dotc.core.Flags.Artifact
27572758
def Case: Flags = dotc.core.Flags.Case
27582759
def CaseAccessor: Flags = dotc.core.Flags.CaseAccessor

library/src/scala/quoted/Quotes.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4229,6 +4229,18 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
42294229
/** Is this symbol `abstract` */
42304230
def Abstract: Flags
42314231

4232+
/** Is this symbol is labeled with of abstract & override
4233+
*
4234+
* The override modifier has an additional significance when combined with the abstract modifier.
4235+
* That modifier combination is only allowed for value members of traits.
4236+
*
4237+
* We call a member MM of a template incomplete if it is either abstract (i.e. defined by a declaration), or it is labeled abstract and override and every member overridden by MM is again incomplete.
4238+
*
4239+
* Note that the abstract override modifier combination does not influence the concept whether a member is concrete or abstract.
4240+
* A member is abstract if only a declaration is given for it; it is concrete if a full definition is given.
4241+
*/
4242+
@experimental def AbsOverride: Flags
4243+
42324244
/** Is this generated by Scala compiler.
42334245
* Corresponds to ACC_SYNTHETIC in the JVM.
42344246
*/

tests/run-custom-args/tasty-inspector/stdlibExperimentalDefinitions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ val experimentalDefinitionInLibrary = Set(
7676
"scala.quoted.Quotes.reflectModule.SymbolModule.newClass",
7777
"scala.quoted.Quotes.reflectModule.SymbolModule.freshName",
7878
"scala.quoted.Quotes.reflectModule.SymbolMethods.info",
79+
"scala.quoted.Quotes.reflectModule.FlagsModule.AbsOverride",
7980

8081
// New APIs: Lightweight lazy vals. Can be stabilized in 3.3.0
8182
"scala.runtime.LazyVals$.Evaluating",

0 commit comments

Comments
 (0)