Skip to content

Commit 52923b0

Browse files
Merge pull request #9584 from dotty-staging/fix-#9499
Fix #9499: Add ExtensionMethod flag to Reflection
2 parents 4b81eda + b39e245 commit 52923b0

File tree

5 files changed

+164
-157
lines changed

5 files changed

+164
-157
lines changed

compiler/src/dotty/tools/dotc/tastyreflect/ReflectionCompilerInterface.scala

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1855,42 +1855,43 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
18551855
/** Intersection of the two flag sets */
18561856
def Flags_and(self: Flags)(that: Flags): Flags = self & that
18571857

1858-
def Flags_EmptyFlags: Flags = core.Flags.EmptyFlags
1859-
def Flags_Private: Flags = core.Flags.Private
1860-
def Flags_Protected: Flags = core.Flags.Protected
18611858
def Flags_Abstract: Flags = core.Flags.Abstract
1862-
def Flags_Open: Flags = core.Flags.Open
1863-
def Flags_Final: Flags = core.Flags.Final
1864-
def Flags_Sealed: Flags = core.Flags.Sealed
1859+
def Flags_Artifact: Flags = core.Flags.Artifact
18651860
def Flags_Case: Flags = core.Flags.Case
1866-
def Flags_Implicit: Flags = core.Flags.Implicit
1867-
def Flags_Given: Flags = core.Flags.Given
1861+
def Flags_CaseAcessor: Flags = core.Flags.CaseAccessor
1862+
def Flags_Contravariant: Flags = core.Flags.Contravariant
1863+
def Flags_Covariant: Flags = core.Flags.Covariant
1864+
def Flags_EmptyFlags: Flags = core.Flags.EmptyFlags
1865+
def Flags_Enum: Flags = core.Flags.Enum
18681866
def Flags_Erased: Flags = core.Flags.Erased
1869-
def Flags_Lazy: Flags = core.Flags.Lazy
1870-
def Flags_Override: Flags = core.Flags.Override
1867+
def Flags_ExtensionMethod: Flags = core.Flags.ExtensionMethod
1868+
def Flags_FieldAccessor: Flags = core.Flags.Accessor
1869+
def Flags_Final: Flags = core.Flags.Final
1870+
def Flags_Given: Flags = core.Flags.Given
1871+
def Flags_HasDefault: Flags = core.Flags.HasDefault
1872+
def Flags_Implicit: Flags = core.Flags.Implicit
18711873
def Flags_Inline: Flags = core.Flags.Inline
1872-
def Flags_Macro: Flags = core.Flags.Macro
1873-
def Flags_Static: Flags = core.Flags.JavaStatic
18741874
def Flags_JavaDefined: Flags = core.Flags.JavaDefined
1875-
def Flags_Object: Flags = core.Flags.Module
1876-
def Flags_Trait: Flags = core.Flags.Trait
1875+
def Flags_Lazy: Flags = core.Flags.Lazy
18771876
def Flags_Local: Flags = core.Flags.Local
1878-
def Flags_Synthetic: Flags = core.Flags.Synthetic
1879-
def Flags_Artifact: Flags = core.Flags.Artifact
1877+
def Flags_Macro: Flags = core.Flags.Macro
1878+
def Flags_ModuleClass: Flags = core.Flags.ModuleClass
18801879
def Flags_Mutable: Flags = core.Flags.Mutable
1881-
def Flags_FieldAccessor: Flags = core.Flags.Accessor
1882-
def Flags_CaseAcessor: Flags = core.Flags.CaseAccessor
1883-
def Flags_Covariant: Flags = core.Flags.Covariant
1884-
def Flags_Contravariant: Flags = core.Flags.Contravariant
1885-
def Flags_Scala2X: Flags = core.Flags.Scala2x
1886-
def Flags_HasDefault: Flags = core.Flags.HasDefault
1887-
def Flags_StableRealizable: Flags = core.Flags.StableRealizable
1880+
def Flags_Object: Flags = core.Flags.Module
1881+
def Flags_Open: Flags = core.Flags.Open
1882+
def Flags_Override: Flags = core.Flags.Override
1883+
def Flags_Package: Flags = core.Flags.Package
18881884
def Flags_Param: Flags = core.Flags.Param
18891885
def Flags_ParamAccessor: Flags = core.Flags.ParamAccessor
1890-
def Flags_Enum: Flags = core.Flags.Enum
1891-
def Flags_ModuleClass: Flags = core.Flags.ModuleClass
1886+
def Flags_Private: Flags = core.Flags.Private
18921887
def Flags_PrivateLocal: Flags = core.Flags.PrivateLocal
1893-
def Flags_Package: Flags = core.Flags.Package
1888+
def Flags_Protected: Flags = core.Flags.Protected
1889+
def Flags_Scala2X: Flags = core.Flags.Scala2x
1890+
def Flags_Sealed: Flags = core.Flags.Sealed
1891+
def Flags_StableRealizable: Flags = core.Flags.StableRealizable
1892+
def Flags_Static: Flags = core.Flags.JavaStatic
1893+
def Flags_Synthetic: Flags = core.Flags.Synthetic
1894+
def Flags_Trait: Flags = core.Flags.Trait
18941895

18951896

18961897
/////////////////

library/src/scala/internal/tasty/CompilerInterface.scala

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1404,41 +1404,42 @@ trait CompilerInterface {
14041404
/** Intersection of the two flag sets */
14051405
def Flags_and(self: Flags)(that: Flags): Flags
14061406

1407-
def Flags_EmptyFlags: Flags
1408-
def Flags_Private: Flags
1409-
def Flags_Protected: Flags
14101407
def Flags_Abstract: Flags
1411-
def Flags_Final: Flags
1412-
def Flags_Sealed: Flags
1408+
def Flags_Artifact: Flags
14131409
def Flags_Case: Flags
1414-
def Flags_Implicit: Flags
1415-
def Flags_Given: Flags
1410+
def Flags_CaseAcessor: Flags
1411+
def Flags_Contravariant: Flags
1412+
def Flags_Covariant: Flags
1413+
def Flags_EmptyFlags: Flags
1414+
def Flags_Enum: Flags
14161415
def Flags_Erased: Flags
1417-
def Flags_Lazy: Flags
1418-
def Flags_Override: Flags
1416+
def Flags_ExtensionMethod: Flags
1417+
def Flags_FieldAccessor: Flags
1418+
def Flags_Final: Flags
1419+
def Flags_Given: Flags
1420+
def Flags_HasDefault: Flags
1421+
def Flags_Implicit: Flags
14191422
def Flags_Inline: Flags
1420-
def Flags_Macro: Flags
1421-
def Flags_Static: Flags
14221423
def Flags_JavaDefined: Flags
1423-
def Flags_Object: Flags
1424-
def Flags_Trait: Flags
1424+
def Flags_Lazy: Flags
14251425
def Flags_Local: Flags
1426-
def Flags_Synthetic: Flags
1427-
def Flags_Artifact: Flags
1426+
def Flags_Macro: Flags
1427+
def Flags_ModuleClass: Flags
14281428
def Flags_Mutable: Flags
1429-
def Flags_FieldAccessor: Flags
1430-
def Flags_CaseAcessor: Flags
1431-
def Flags_Covariant: Flags
1432-
def Flags_Contravariant: Flags
1433-
def Flags_Scala2X: Flags
1434-
def Flags_HasDefault: Flags
1435-
def Flags_StableRealizable: Flags
1429+
def Flags_Object: Flags
1430+
def Flags_Override: Flags
1431+
def Flags_Package: Flags
14361432
def Flags_Param: Flags
14371433
def Flags_ParamAccessor: Flags
1438-
def Flags_Enum: Flags
1439-
def Flags_ModuleClass: Flags
1434+
def Flags_Private: Flags
14401435
def Flags_PrivateLocal: Flags
1441-
def Flags_Package: Flags
1436+
def Flags_Protected: Flags
1437+
def Flags_Scala2X: Flags
1438+
def Flags_Sealed: Flags
1439+
def Flags_StableRealizable: Flags
1440+
def Flags_Static: Flags
1441+
def Flags_Synthetic: Flags
1442+
def Flags_Trait: Flags
14421443

14431444

14441445
/////////////////

library/src/scala/tasty/Reflection.scala

Lines changed: 63 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -2831,110 +2831,113 @@ class Reflection(private[scala] val internal: CompilerInterface) { self =>
28312831

28322832
object Flags:
28332833

2834+
/** Is this symbol `abstract` */
2835+
def Abstract: Flags = internal.Flags_Abstract
2836+
2837+
/** Was this symbol generated by Scala compiler */
2838+
def Artifact: Flags = internal.Flags_Artifact
2839+
2840+
/** Is this symbol `case` */
2841+
def Case: Flags = internal.Flags_Case
2842+
2843+
/** Is this symbol a getter for case class parameter */
2844+
def CaseAcessor: Flags = internal.Flags_CaseAcessor
2845+
2846+
/** Is this symbol a type parameter marked as contravariant `-` */
2847+
def Contravariant: Flags = internal.Flags_Contravariant
2848+
2849+
/** Is this symbol a type parameter marked as covariant `+` */
2850+
def Covariant: Flags = internal.Flags_Covariant
2851+
28342852
/** The empty set of flags */
28352853
def EmptyFlags = internal.Flags_EmptyFlags
28362854

2837-
/** Is this symbol `private` */
2838-
def Private: Flags = internal.Flags_Private
2855+
/** Is this symbol an enum */
2856+
def Enum: Flags = internal.Flags_Enum
28392857

2840-
/** Is this symbol `protected` */
2841-
def Protected: Flags = internal.Flags_Protected
2858+
/** Is this symbol `erased` */
2859+
def Erased: Flags = internal.Flags_Erased
28422860

2843-
/** Is this symbol `abstract` */
2844-
def Abstract: Flags = internal.Flags_Abstract
2861+
/** Is this symbol a `def` defined in an `extension` */
2862+
def ExtensionMethod: Flags = internal.Flags_ExtensionMethod
2863+
2864+
/** Is this symbol a getter or a setter */
2865+
def FieldAccessor: Flags = internal.Flags_FieldAccessor
28452866

28462867
/** Is this symbol `final` */
28472868
def Final: Flags = internal.Flags_Final
28482869

2849-
/** Is this symbol `sealed` */
2850-
def Sealed: Flags = internal.Flags_Sealed
2870+
/** Is this symbol an inferable ("given") parameter */
2871+
def Given: Flags = internal.Flags_Given
28512872

2852-
/** Is this symbol `case` */
2853-
def Case: Flags = internal.Flags_Case
2873+
/** Is this symbol a parameter with a default value? */
2874+
def HasDefault: Flags = internal.Flags_HasDefault
28542875

28552876
/** Is this symbol `implicit` */
28562877
def Implicit: Flags = internal.Flags_Implicit
28572878

2858-
/** Is this symbol an inferable ("given") parameter */
2859-
def Given: Flags = internal.Flags_Given
2879+
/** Is this symbol `inline` */
2880+
def Inline: Flags = internal.Flags_Inline
28602881

2861-
/** Is this symbol `erased` */
2862-
def Erased: Flags = internal.Flags_Erased
2882+
/** Is this symbol defined in a Java class */
2883+
def JavaDefined: Flags = internal.Flags_JavaDefined
28632884

28642885
/** Is this symbol `lazy` */
28652886
def Lazy: Flags = internal.Flags_Lazy
28662887

2867-
/** Is this symbol `override` */
2868-
def Override: Flags = internal.Flags_Override
2869-
2870-
/** Is this symbol `inline` */
2871-
def Inline: Flags = internal.Flags_Inline
2888+
/** Is this symbol local? Used in conjunction with private/private[Type] to mean private[this] extends Modifier proctected[this] */
2889+
def Local: Flags = internal.Flags_Local
28722890

28732891
/** Is this symbol marked as a macro. An inline method containing toplevel splices */
28742892
def Macro: Flags = internal.Flags_Macro
28752893

2876-
/** Is this symbol marked as static. Mapped to static Java member */
2877-
def Static: Flags = internal.Flags_Static
2894+
/** Is this symbol a module class */
2895+
def ModuleClass: Flags = internal.Flags_ModuleClass
28782896

2879-
/** Is this symbol defined in a Java class */
2880-
def JavaDefined: Flags = internal.Flags_JavaDefined
2897+
/** Is this symbol a `var` (when used on a ValDef) */
2898+
def Mutable: Flags = internal.Flags_Mutable
28812899

28822900
/** Is this symbol an object or its class (used for a ValDef or a ClassDef extends Modifier respectively) */
28832901
def Object: Flags = internal.Flags_Object
28842902

2885-
/** Is this symbol a trait */
2886-
def Trait: Flags = internal.Flags_Trait
2887-
2888-
/** Is this symbol local? Used in conjunction with private/private[Type] to mean private[this] extends Modifier proctected[this] */
2889-
def Local: Flags = internal.Flags_Local
2890-
2891-
/** Was this symbol generated by Scala compiler */
2892-
def Synthetic: Flags = internal.Flags_Synthetic
2903+
/** Is this symbol `override` */
2904+
def Override: Flags = internal.Flags_Override
28932905

2894-
/** Is this symbol to be tagged Java Synthetic */
2895-
def Artifact: Flags = internal.Flags_Artifact
2906+
/** Is this symbol a package */
2907+
def Package: Flags = internal.Flags_Package
28962908

2897-
/** Is this symbol a `var` (when used on a ValDef) */
2898-
def Mutable: Flags = internal.Flags_Mutable
2909+
/** Is this symbol a parameter */
2910+
def Param: Flags = internal.Flags_Param
28992911

2900-
/** Is this symbol a getter or a setter */
2901-
def FieldAccessor: Flags = internal.Flags_FieldAccessor
2912+
/** Is this symbol a parameter accessor */
2913+
def ParamAccessor: Flags = internal.Flags_ParamAccessor
29022914

2903-
/** Is this symbol a getter for case class parameter */
2904-
def CaseAcessor: Flags = internal.Flags_CaseAcessor
2915+
/** Is this symbol `private` */
2916+
def Private: Flags = internal.Flags_Private
29052917

2906-
/** Is this symbol a type parameter marked as covariant `+` */
2907-
def Covariant: Flags = internal.Flags_Covariant
2918+
/** Is this symbol labeled private[this] */
2919+
def PrivateLocal: Flags = internal.Flags_PrivateLocal
29082920

2909-
/** Is this symbol a type parameter marked as contravariant `-` */
2910-
def Contravariant: Flags = internal.Flags_Contravariant
2921+
/** Is this symbol `protected` */
2922+
def Protected: Flags = internal.Flags_Protected
29112923

29122924
/** Was this symbol imported from Scala2.x */
29132925
def Scala2X: Flags = internal.Flags_Scala2X
29142926

2915-
/** Is this symbol a parameter with a default value? */
2916-
def HasDefault: Flags = internal.Flags_HasDefault
2927+
/** Is this symbol `sealed` */
2928+
def Sealed: Flags = internal.Flags_Sealed
29172929

29182930
/** Is this symbol member that is assumed to be stable and realizable */
29192931
def StableRealizable: Flags = internal.Flags_StableRealizable
29202932

2921-
/** Is this symbol a parameter */
2922-
def Param: Flags = internal.Flags_Param
2923-
2924-
/** Is this symbol a parameter accessor */
2925-
def ParamAccessor: Flags = internal.Flags_ParamAccessor
2926-
2927-
/** Is this symbol an enum */
2928-
def Enum: Flags = internal.Flags_Enum
2929-
2930-
/** Is this symbol a module class */
2931-
def ModuleClass: Flags = internal.Flags_ModuleClass
2933+
/** Is this symbol marked as static. Mapped to static Java member */
2934+
def Static: Flags = internal.Flags_Static
29322935

2933-
/** Is this symbol labeled private[this] */
2934-
def PrivateLocal: Flags = internal.Flags_PrivateLocal
2936+
/** Is this symbol to be tagged Java Synthetic */
2937+
def Synthetic: Flags = internal.Flags_Synthetic
29352938

2936-
/** Is this symbol a package */
2937-
def Package: Flags = internal.Flags_Package
2939+
/** Is this symbol a trait */
2940+
def Trait: Flags = internal.Flags_Trait
29382941

29392942
extension (flags: Flags):
29402943
/** Is the given flag set a subset of this flag sets */

library/src/scala/tasty/reflect/ExtractorsPrinter.scala

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,39 +18,40 @@ class ExtractorsPrinter[R <: Reflection & Singleton](val tasty: R) extends Print
1818

1919
def showFlags(flags: Flags)(using ctx: Context): String = {
2020
val flagList = List.newBuilder[String]
21-
if (flags.is(Flags.Private)) flagList += "Flags.Private"
22-
if (flags.is(Flags.Protected)) flagList += "Flags.Protected"
2321
if (flags.is(Flags.Abstract)) flagList += "Flags.Abstract"
24-
if (flags.is(Flags.Final)) flagList += "Flags.Final"
25-
if (flags.is(Flags.Sealed)) flagList += "Flags.Sealed"
22+
if (flags.is(Flags.Artifact)) flagList += "Flags.Artifact"
2623
if (flags.is(Flags.Case)) flagList += "Flags.Case"
27-
if (flags.is(Flags.Implicit)) flagList += "Flags.Implicit"
24+
if (flags.is(Flags.CaseAcessor)) flagList += "Flags.CaseAcessor"
25+
if (flags.is(Flags.Contravariant)) flagList += "Flags.Contravariant"
26+
if (flags.is(Flags.Covariant)) flagList += "Flags.Covariant"
27+
if (flags.is(Flags.Enum)) flagList += "Flags.Enum"
2828
if (flags.is(Flags.Erased)) flagList += "Flags.Erased"
29-
if (flags.is(Flags.Lazy)) flagList += "Flags.Lazy"
30-
if (flags.is(Flags.Override)) flagList += "Flags.Override"
29+
if (flags.is(Flags.ExtensionMethod)) flagList += "Flags.ExtensionMethod"
30+
if (flags.is(Flags.FieldAccessor)) flagList += "Flags.FieldAccessor"
31+
if (flags.is(Flags.Final)) flagList += "Flags.Final"
32+
if (flags.is(Flags.HasDefault)) flagList += "Flags.HasDefault"
33+
if (flags.is(Flags.Implicit)) flagList += "Flags.Implicit"
3134
if (flags.is(Flags.Inline)) flagList += "Flags.Inline"
32-
if (flags.is(Flags.Macro)) flagList += "Flags.Macro"
3335
if (flags.is(Flags.JavaDefined)) flagList += "Flags.JavaDefined"
34-
if (flags.is(Flags.Static)) flagList += "Flags.javaStatic"
35-
if (flags.is(Flags.Object)) flagList += "Flags.Object"
36-
if (flags.is(Flags.Trait)) flagList += "Flags.Trait"
36+
if (flags.is(Flags.Lazy)) flagList += "Flags.Lazy"
3737
if (flags.is(Flags.Local)) flagList += "Flags.Local"
38-
if (flags.is(Flags.Synthetic)) flagList += "Flags.Synthetic"
39-
if (flags.is(Flags.Artifact)) flagList += "Flags.Artifact"
38+
if (flags.is(Flags.Macro)) flagList += "Flags.Macro"
39+
if (flags.is(Flags.ModuleClass)) flagList += "Flags.ModuleClass"
4040
if (flags.is(Flags.Mutable)) flagList += "Flags.Mutable"
41-
if (flags.is(Flags.FieldAccessor)) flagList += "Flags.FieldAccessor"
42-
if (flags.is(Flags.CaseAcessor)) flagList += "Flags.CaseAcessor"
43-
if (flags.is(Flags.Covariant)) flagList += "Flags.Covariant"
44-
if (flags.is(Flags.Contravariant)) flagList += "Flags.Contravariant"
45-
if (flags.is(Flags.Scala2X)) flagList += "Flags.Scala2X"
46-
if (flags.is(Flags.HasDefault)) flagList += "Flags.HasDefault"
47-
if (flags.is(Flags.StableRealizable)) flagList += "Flags.StableRealizable"
41+
if (flags.is(Flags.Object)) flagList += "Flags.Object"
42+
if (flags.is(Flags.Override)) flagList += "Flags.Override"
43+
if (flags.is(Flags.Package)) flagList += "Flags.Package"
4844
if (flags.is(Flags.Param)) flagList += "Flags.Param"
4945
if (flags.is(Flags.ParamAccessor)) flagList += "Flags.ParamAccessor"
50-
if (flags.is(Flags.Enum)) flagList += "Flags.Enum"
51-
if (flags.is(Flags.ModuleClass)) flagList += "Flags.ModuleClass"
46+
if (flags.is(Flags.Private)) flagList += "Flags.Private"
5247
if (flags.is(Flags.PrivateLocal)) flagList += "Flags.PrivateLocal"
53-
if (flags.is(Flags.Package)) flagList += "Flags.Package"
48+
if (flags.is(Flags.Protected)) flagList += "Flags.Protected"
49+
if (flags.is(Flags.Scala2X)) flagList += "Flags.Scala2X"
50+
if (flags.is(Flags.Sealed)) flagList += "Flags.Sealed"
51+
if (flags.is(Flags.StableRealizable)) flagList += "Flags.StableRealizable"
52+
if (flags.is(Flags.Static)) flagList += "Flags.javaStatic"
53+
if (flags.is(Flags.Synthetic)) flagList += "Flags.Synthetic"
54+
if (flags.is(Flags.Trait)) flagList += "Flags.Trait"
5455
flagList.result().mkString(" | ")
5556
}
5657

0 commit comments

Comments
 (0)