Skip to content

Commit a7ce985

Browse files
committed
Cleanup Symbol.isXYZ methods and add docs
1 parent 8e7233f commit a7ce985

File tree

3 files changed

+68
-36
lines changed

3 files changed

+68
-36
lines changed

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

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1516,15 +1516,6 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
15161516
def Symbol_isAbstractType(self: Symbol)(given Context): Boolean = self.isAbstractType
15171517
def Symbol_isClassConstructor(self: Symbol)(given Context): Boolean = self.isClassConstructor
15181518

1519-
def Symbol_isPackageDefSymbol(symbol: Symbol)(given Context): Boolean =
1520-
symbol.is(core.Flags.Package)
1521-
1522-
def Symbol_isTypeSymbol(symbol: Symbol)(given Context): Boolean =
1523-
symbol.isType
1524-
1525-
def Symbol_isClassDefSymbol(symbol: Symbol)(given Context): Boolean =
1526-
symbol.isClass
1527-
15281519
def Symbol_fields(self: Symbol)(given Context): List[Symbol] =
15291520
self.unforcedDecls.filter(isField)
15301521

@@ -1572,20 +1563,33 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
15721563
def Symbol_isTypeParam(self: Symbol)(given Context): Boolean =
15731564
self.isTypeParam
15741565

1575-
def Symbol_isTypeBindSymbol(symbol: Symbol)(given Context): Boolean =
1576-
symbol.isType && symbol.is(core.Flags.Case)
1566+
def Symbol_isType(symbol: Symbol)(given Context): Boolean =
1567+
symbol.isType
15771568

1578-
def Symbol_isTermSymbol(symbol: Symbol)(given Context): Boolean =
1569+
def Symbol_isTerm(symbol: Symbol)(given Context): Boolean =
15791570
symbol.isTerm
15801571

1581-
def Symbol_isDefDefSymbol(symbol: Symbol)(given Context): Boolean =
1582-
symbol.isTerm && symbol.is(core.Flags.Method)
1572+
def Symbol_isPackageDef(symbol: Symbol)(given ctx: Context): Boolean =
1573+
symbol.is(Flags.Package)
1574+
1575+
def Symbol_isClassDef(symbol: Symbol)(given Context): Boolean =
1576+
symbol.isClass
1577+
1578+
def Symbol_isTypeDef(symbol: Symbol)(given ctx: Context): Boolean =
1579+
symbol.isType && !symbol.isClass && !symbol.is(Flags.Case)
1580+
1581+
def Symbol_isValDef(symbol: Symbol)(given Context): Boolean =
1582+
symbol.isTerm && !symbol.is(core.Flags.Method) && !symbol.is(core.Flags.Case)
1583+
1584+
def Symbol_isDefDef(symbol: Symbol)(given Context): Boolean =
1585+
symbol.is(core.Flags.Method)
1586+
1587+
def Symbol_isBind(symbol: Symbol)(given Context): Boolean =
1588+
symbol.is(core.Flags.Case, butNot = Enum | Module) && !symbol.isClass
15831589

15841590
def Symbol_signature(self: Symbol)(given Context): Signature =
15851591
self.signature
15861592

1587-
def Symbol_isValDefSymbol(symbol: Symbol)(given Context): Boolean =
1588-
symbol.isTerm && !symbol.is(core.Flags.Method) && !symbol.is(core.Flags.Case)
15891593

15901594
def Symbol_moduleClass(self: Symbol)(given Context): Symbol = self.moduleClass
15911595

library/src/scala/tasty/reflect/CompilerInterface.scala

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1239,12 +1239,6 @@ trait CompilerInterface {
12391239

12401240
def Symbol_isDefinedInCurrentRun(self: Symbol)(given ctx: Context): Boolean
12411241

1242-
def Symbol_isPackageDefSymbol(symbol: Symbol)(given ctx: Context): Boolean
1243-
1244-
def Symbol_isTypeSymbol(symbol: Symbol)(given ctx: Context): Boolean
1245-
1246-
def Symbol_isClassDefSymbol(symbol: Symbol)(given ctx: Context): Boolean
1247-
12481242
/** Fields directly declared in the class */
12491243
def Symbol_fields(self: Symbol)(given ctx: Context): List[Symbol]
12501244

@@ -1270,17 +1264,32 @@ trait CompilerInterface {
12701264

12711265
def Symbol_isTypeParam(self: Symbol)(given ctx: Context): Boolean
12721266

1273-
def Symbol_isTypeBindSymbol(symbol: Symbol)(given ctx: Context): Boolean
1267+
def Symbol_isPackageDef(symbol: Symbol)(given ctx: Context): Boolean
1268+
1269+
/** Is this the definition of a type? */
1270+
def Symbol_isType(symbol: Symbol)(given ctx: Context): Boolean
1271+
1272+
/** Is this the definition of a term? */
1273+
def Symbol_isTerm(symbol: Symbol)(given ctx: Context): Boolean
12741274

1275-
def Symbol_isTermSymbol(symbol: Symbol)(given ctx: Context): Boolean
1275+
/** Is this the definition of a ClassDef tree? */
1276+
def Symbol_isClassDef(symbol: Symbol)(given ctx: Context): Boolean
12761277

1277-
def Symbol_isDefDefSymbol(symbol: Symbol)(given ctx: Context): Boolean
1278+
/** Is this the definition of a TypeDef tree? */
1279+
def Symbol_isTypeDef(symbol: Symbol)(given ctx: Context): Boolean
1280+
1281+
/** Is this the definition of a DefDef tree? */
1282+
def Symbol_isDefDef(symbol: Symbol)(given ctx: Context): Boolean
1283+
1284+
/** Is this the definition of a ValDef tree? */
1285+
def Symbol_isValDef(symbol: Symbol)(given ctx: Context): Boolean
1286+
1287+
/** Is this the definition of a Bind pattern? */
1288+
def Symbol_isBind(symbol: Symbol)(given ctx: Context): Boolean
12781289

12791290
/** Signature of this definition */
12801291
def Symbol_signature(self: Symbol)(given ctx: Context): Signature
12811292

1282-
def Symbol_isValDefSymbol(symbol: Symbol)(given ctx: Context): Boolean
1283-
12841293
/** The class symbol of the companion module class */
12851294
def Symbol_moduleClass(self: Symbol)(given ctx: Context): Symbol
12861295

library/src/scala/tasty/reflect/SymbolOps.scala

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,36 @@ trait SymbolOps extends Core { selfSymbolOps: FlagsOps =>
6363
def isAbstractType(given ctx: Context): Boolean = internal.Symbol_isAbstractType(self)
6464
def isClassConstructor(given ctx: Context): Boolean = internal.Symbol_isClassConstructor(self)
6565

66-
def isType(given ctx: Context): Boolean = internal.Symbol_isTypeSymbol(self)
67-
def isTerm(given ctx: Context): Boolean = internal.Symbol_isTermSymbol(self)
68-
def isValDef(given ctx: Context): Boolean = internal.Symbol_isValDefSymbol(self)
69-
def isDefDef(given ctx: Context): Boolean = internal.Symbol_isDefDefSymbol(self)
70-
def isTypeDef(given ctx: Context): Boolean = self.isType && !self.flags.is(Flags.Case)
71-
def isClassDef(given ctx: Context): Boolean = internal.Symbol_isClassDefSymbol(self)
72-
def isBind(given ctx: Context): Boolean = self.isTerm && self.flags.is(Flags.Case)
73-
def isTypeBind(given ctx: Context): Boolean = self.isType && self.flags.is(Flags.Case)
74-
def isPackageDef(given ctx: Context): Boolean = internal.Symbol_isPackageDefSymbol(self)
66+
/** Is this the definition of a type? */
67+
def isType(given ctx: Context): Boolean = internal.Symbol_isType(self)
68+
69+
/** Is this the definition of a term? */
70+
def isTerm(given ctx: Context): Boolean = internal.Symbol_isTerm(self)
71+
72+
/** Is this the definition of a PackageDef tree? */
73+
def isPackageDef(given ctx: Context): Boolean = internal.Symbol_isPackageDef(self)
74+
75+
/** Is this the definition of a ClassDef tree? */
76+
def isClassDef(given ctx: Context): Boolean = internal.Symbol_isClassDef(self)
77+
78+
/** Is this the definition of a TypeDef tree */
79+
def isTypeDef(given ctx: Context): Boolean = internal.Symbol_isTypeDef(self)
80+
81+
/** Is this the definition of a ValDef tree? */
82+
def isValDef(given ctx: Context): Boolean = internal.Symbol_isValDef(self)
83+
84+
/** Is this the definition of a DefDef tree? */
85+
def isDefDef(given ctx: Context): Boolean = internal.Symbol_isDefDef(self)
86+
87+
/** Is this the definition of a Bind pattern? */
88+
def isBind(given ctx: Context): Boolean = internal.Symbol_isBind(self)
89+
90+
/** Does this symbol represent a no definition? */
7591
def isNoSymbol(given ctx: Context): Boolean = self == Symbol.noSymbol
7692

93+
/** Does this symbol represent a definition? */
94+
def exists(given ctx: Context): Boolean = self != Symbol.noSymbol
95+
7796
/** Fields directly declared in the class */
7897
def fields(given ctx: Context): List[Symbol] =
7998
internal.Symbol_fields(self)

0 commit comments

Comments
 (0)