@@ -156,7 +156,7 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
156
156
if (self.symbol.is(core.Flags .JavaDefined )) Nil // FIXME should also support java packages
157
157
else self.symbol.info.decls.iterator.map(definitionFromSym).toList
158
158
159
- def PackageDef_symbol (self : PackageDef )(given Context ): PackageDefSymbol = self.symbol
159
+ def PackageDef_symbol (self : PackageDef )(given Context ): Symbol = self.symbol
160
160
161
161
type ClassDef = tpd.TypeDef
162
162
@@ -170,7 +170,7 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
170
170
def ClassDef_derived (self : ClassDef )(given Context ): List [TypeTree ] = ClassDef_rhs (self).derived.asInstanceOf [List [TypeTree ]]
171
171
def ClassDef_self (self : ClassDef )(given Context ): Option [ValDef ] = optional(ClassDef_rhs (self).self)
172
172
def ClassDef_body (self : ClassDef )(given Context ): List [Statement ] = ClassDef_rhs (self).body
173
- def ClassDef_symbol (self : ClassDef )(given Context ): ClassDefSymbol = self.symbol.asClass
173
+ def ClassDef_symbol (self : ClassDef )(given Context ): Symbol = self.symbol.asClass
174
174
private def ClassDef_rhs (self : ClassDef ) = self.rhs.asInstanceOf [tpd.Template ]
175
175
176
176
def ClassDef_copy (original : ClassDef )(name : String , constr : DefDef , parents : List [Term | TypeTree ], derived : List [TypeTree ], selfOpt : Option [ValDef ], body : List [Statement ])(given Context ): ClassDef = {
@@ -186,9 +186,9 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
186
186
}
187
187
188
188
def TypeDef_rhs (self : TypeDef )(given Context ): TypeTree | TypeBoundsTree = self.rhs
189
- def TypeDef_symbol (self : TypeDef )(given Context ): TypeDefSymbol = self.symbol.asType
189
+ def TypeDef_symbol (self : TypeDef )(given Context ): Symbol = self.symbol.asType
190
190
191
- def TypeDef_apply (symbol : TypeDefSymbol )(given Context ): TypeDef = withDefaultPos(tpd.TypeDef (symbol))
191
+ def TypeDef_apply (symbol : Symbol )(given Context ): TypeDef = withDefaultPos(tpd.TypeDef (symbol.asType ))
192
192
def TypeDef_copy (original : TypeDef )(name : String , rhs : TypeTree | TypeBoundsTree )(given Context ): TypeDef =
193
193
tpd.cpy.TypeDef (original)(name.toTypeName, rhs)
194
194
@@ -203,10 +203,10 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
203
203
def DefDef_paramss (self : DefDef )(given Context ): List [List [ValDef ]] = self.vparamss
204
204
def DefDef_returnTpt (self : DefDef )(given Context ): TypeTree = self.tpt
205
205
def DefDef_rhs (self : DefDef )(given Context ): Option [Tree ] = optional(self.rhs)
206
- def DefDef_symbol (self : DefDef )(given Context ): DefDefSymbol = self.symbol.asTerm
206
+ def DefDef_symbol (self : DefDef )(given Context ): Symbol = self.symbol.asTerm
207
207
208
- def DefDef_apply (symbol : DefDefSymbol , rhsFn : List [Type ] => List [List [Term ]] => Option [Term ])(given Context ): DefDef =
209
- withDefaultPos(tpd.polyDefDef(symbol, tparams => vparamss => rhsFn(tparams)(vparamss).getOrElse(tpd.EmptyTree )))
208
+ def DefDef_apply (symbol : Symbol , rhsFn : List [Type ] => List [List [Term ]] => Option [Term ])(given Context ): DefDef =
209
+ withDefaultPos(tpd.polyDefDef(symbol.asTerm , tparams => vparamss => rhsFn(tparams)(vparamss).getOrElse(tpd.EmptyTree )))
210
210
211
211
def DefDef_copy (original : DefDef )(name : String , typeParams : List [TypeDef ], paramss : List [List [ValDef ]], tpt : TypeTree , rhs : Option [Term ])(given Context ): DefDef =
212
212
tpd.cpy.DefDef (original)(name.toTermName, typeParams, paramss, tpt, rhs.getOrElse(tpd.EmptyTree ))
@@ -220,10 +220,10 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
220
220
221
221
def ValDef_tpt (self : ValDef )(given Context ): TypeTree = self.tpt
222
222
def ValDef_rhs (self : ValDef )(given Context ): Option [Tree ] = optional(self.rhs)
223
- def ValDef_symbol (self : ValDef )(given Context ): ValDefSymbol = self.symbol.asTerm
223
+ def ValDef_symbol (self : ValDef )(given Context ): Symbol = self.symbol.asTerm
224
224
225
- def ValDef_apply (symbol : ValDefSymbol , rhs : Option [Term ])(given Context ): ValDef =
226
- tpd.ValDef (symbol, rhs.getOrElse(tpd.EmptyTree ))
225
+ def ValDef_apply (symbol : Symbol , rhs : Option [Term ])(given Context ): ValDef =
226
+ tpd.ValDef (symbol.asTerm , rhs.getOrElse(tpd.EmptyTree ))
227
227
228
228
def ValDef_copy (original : ValDef )(name : String , tpt : TypeTree , rhs : Option [Term ])(given Context ): ValDef =
229
229
tpd.cpy.ValDef (original)(name.toTermName, tpt, rhs.getOrElse(tpd.EmptyTree ))
@@ -319,8 +319,8 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
319
319
320
320
def This_id (self : This )(given Context ): Option [Id ] = optional(self.qual)
321
321
322
- def This_apply (cls : ClassDefSymbol )(given Context ): This =
323
- withDefaultPos(tpd.This (cls))
322
+ def This_apply (cls : Symbol )(given Context ): This =
323
+ withDefaultPos(tpd.This (cls.asClass ))
324
324
325
325
def This_copy (original : Tree )(qual : Option [Id ])(given Context ): This =
326
326
tpd.cpy.This (original)(qual.getOrElse(untpd.EmptyTypeIdent ))
@@ -1088,7 +1088,7 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
1088
1088
1089
1089
def Type_simplified (self : Type )(given Context ): Type = self.simplified
1090
1090
1091
- def Type_classSymbol (self : Type )(given Context ): Option [ClassDefSymbol ] =
1091
+ def Type_classSymbol (self : Type )(given Context ): Option [Symbol ] =
1092
1092
if (self.classSymbol.exists) Some (self.classSymbol.asClass) else None
1093
1093
1094
1094
def Type_typeSymbol (self : Type )(given Context ): Symbol = self.typeSymbol
@@ -1100,7 +1100,7 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
1100
1100
def Type_memberType (self : Type )(member : Symbol )(given Context ): Type =
1101
1101
member.info.asSeenFrom(self, member.owner)
1102
1102
1103
- def Type_derivesFrom (self : Type )(cls : ClassDefSymbol )(given Context ): Boolean =
1103
+ def Type_derivesFrom (self : Type )(cls : Symbol )(given Context ): Boolean =
1104
1104
self.derivesFrom(cls)
1105
1105
1106
1106
def Type_isFunctionType (self : Type )(given Context ): Boolean =
@@ -1458,6 +1458,16 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
1458
1458
1459
1459
def Symbol_flags (self : Symbol )(given Context ): Flags = self.flags
1460
1460
1461
+ def Symbol_tree (self : Symbol )(given Context ): Tree = {
1462
+ assert(! self.is(Case , butNot = Enum | Module ))
1463
+ FromSymbol .definitionFromSym(self)
1464
+ }
1465
+
1466
+ def Symbol_pattern (self : Symbol )(given ctx : Context ): Pattern = {
1467
+ assert(self.is(Case , butNot = Enum | Module ))
1468
+ FromSymbol .definitionFromSym(self)
1469
+ }
1470
+
1461
1471
def Symbol_privateWithin (self : Symbol )(given Context ): Option [Type ] = {
1462
1472
val within = self.privateWithin
1463
1473
if (within.exists && ! self.is(core.Flags .Protected )) Some (within.typeRef)
@@ -1506,148 +1516,88 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
1506
1516
def Symbol_isAbstractType (self : Symbol )(given Context ): Boolean = self.isAbstractType
1507
1517
def Symbol_isClassConstructor (self : Symbol )(given Context ): Boolean = self.isClassConstructor
1508
1518
1509
- type PackageDefSymbol = core.Symbols .Symbol
1510
-
1511
- def matchPackageDefSymbol (symbol : Symbol )(given Context ): Option [PackageDefSymbol ] =
1512
- if (symbol.is(core.Flags .Package )) Some (symbol) else None
1513
-
1514
- def PackageDefSymbol_tree (self : PackageDefSymbol )(given Context ): PackageDef =
1515
- FromSymbol .packageDefFromSym(self)
1516
-
1517
- type TypeSymbol = core.Symbols .TypeSymbol
1518
-
1519
- def matchTypeSymbol (symbol : Symbol )(given Context ): Option [TypeSymbol ] =
1520
- if (symbol.isType) Some (symbol.asType) else None
1521
-
1522
- type ClassDefSymbol = core.Symbols .ClassSymbol
1523
-
1524
- def matchClassDefSymbol (symbol : Symbol )(given Context ): Option [ClassDefSymbol ] =
1525
- if (symbol.isClass) Some (symbol.asClass) else None
1526
-
1527
- def ClassDefSymbol_tree (self : ClassDefSymbol )(given Context ): ClassDef =
1528
- FromSymbol .classDef(self)
1529
-
1530
- def ClassDefSymbol_fields (self : Symbol )(given Context ): List [Symbol ] =
1519
+ def Symbol_fields (self : Symbol )(given Context ): List [Symbol ] =
1531
1520
self.unforcedDecls.filter(isField)
1532
1521
1533
- def ClassDefSymbol_field (self : Symbol )(name : String )(given Context ): Option [ Symbol ] = {
1522
+ def Symbol_field (self : Symbol )(name : String )(given Context ): Symbol = {
1534
1523
val sym = self.unforcedDecls.find(sym => sym.name == name.toTermName)
1535
- if (sym.exists && isField(sym)) Some ( sym) else None
1524
+ if (isField(sym)) sym else core. Symbols . NoSymbol
1536
1525
}
1537
1526
1538
- def ClassDefSymbol_classMethod (self : Symbol )(name : String )(given Context ): List [DefDefSymbol ] =
1527
+ def Symbol_classMethod (self : Symbol )(name : String )(given Context ): List [Symbol ] =
1539
1528
self.typeRef.decls.iterator.collect {
1540
1529
case sym if isMethod(sym) && sym.name.toString == name => sym.asTerm
1541
1530
}.toList
1542
1531
1543
- def ClassDefSymbol_classMethods (self : Symbol )(given Context ): List [DefDefSymbol ] =
1532
+ def Symbol_classMethods (self : Symbol )(given Context ): List [Symbol ] =
1544
1533
self.typeRef.decls.iterator.collect {
1545
1534
case sym if isMethod(sym) => sym.asTerm
1546
1535
}.toList
1547
1536
1548
1537
private def appliedTypeRef (sym : Symbol ): Type = sym.typeRef.appliedTo(sym.typeParams.map(_.typeRef))
1549
1538
1550
- def ClassDefSymbol_method (self : Symbol )(name : String )(given Context ): List [DefDefSymbol ] =
1539
+ def Symbol_method (self : Symbol )(name : String )(given Context ): List [Symbol ] =
1551
1540
appliedTypeRef(self).allMembers.iterator.map(_.symbol).collect {
1552
1541
case sym if isMethod(sym) && sym.name.toString == name => sym.asTerm
1553
1542
}.toList
1554
1543
1555
- def ClassDefSymbol_methods (self : Symbol )(given Context ): List [DefDefSymbol ] =
1544
+ def Symbol_methods (self : Symbol )(given Context ): List [Symbol ] =
1556
1545
appliedTypeRef(self).allMembers.iterator.map(_.symbol).collect {
1557
1546
case sym if isMethod(sym) => sym.asTerm
1558
1547
}.toList
1559
1548
1560
1549
private def isMethod (sym : Symbol )(given Context ): Boolean =
1561
1550
sym.isTerm && sym.is(Flags .Method ) && ! sym.isConstructor
1562
1551
1563
- def ClassDefSymbol_caseFields (self : Symbol )(given Context ): List [ValDefSymbol ] =
1552
+ def Symbol_caseFields (self : Symbol )(given Context ): List [Symbol ] =
1564
1553
if (! self.isClass) Nil
1565
1554
else self.asClass.paramAccessors.collect {
1566
1555
case sym if sym.is(Flags .CaseAccessor ) => sym.asTerm
1567
1556
}
1568
1557
1569
- def ClassDefSymbol_companionClass (self : Symbol )(given Context ): Option [ClassDefSymbol ] = {
1570
- val sym = self.companionModule.companionClass
1571
- if (sym.exists) Some (sym.asClass) else None
1572
- }
1573
-
1574
- def ClassDefSymbol_companionModule (self : Symbol )(given Context ): Option [ValDefSymbol ] = {
1575
- val sym = self.companionModule
1576
- if (sym.exists) Some (sym.asTerm) else None
1577
- }
1578
-
1579
- def ClassDefSymbol_moduleClass (self : Symbol )(given Context ): Option [Symbol ] = {
1580
- val sym = self.moduleClass
1581
- if (sym.exists) Some (sym.asTerm) else None
1582
- }
1583
-
1584
1558
private def isField (sym : Symbol )(given Context ): Boolean = sym.isTerm && ! sym.is(Flags .Method )
1585
1559
1586
- def ClassDefSymbol_of (fullName : String )(given ctx : Context ): ClassDefSymbol = ctx.requiredClass(fullName)
1560
+ def Symbol_of (fullName : String )(given ctx : Context ): Symbol =
1561
+ ctx.requiredClass(fullName)
1587
1562
1588
- type TypeDefSymbol = core.Symbols .TypeSymbol
1589
-
1590
- def matchTypeDefSymbol (symbol : Symbol )(given Context ): Option [TypeDefSymbol ] =
1591
- if (symbol.isType) Some (symbol.asType) else None
1592
-
1593
- def TypeDefSymbol_tree (self : TypeDefSymbol )(given Context ): TypeDef =
1594
- FromSymbol .typeDefFromSym(self)
1595
- def TypeDefSymbol_isTypeParam (self : TypeDefSymbol )(given Context ): Boolean =
1563
+ def Symbol_isTypeParam (self : Symbol )(given Context ): Boolean =
1596
1564
self.isTypeParam
1597
1565
1598
- type TypeBindSymbol = core.Symbols .TypeSymbol
1566
+ def Symbol_isType (symbol : Symbol )(given Context ): Boolean =
1567
+ symbol.isType
1599
1568
1600
- def matchTypeBindSymbol (symbol : Symbol )(given Context ): Option [ TypeBindSymbol ] =
1601
- if ( symbol.isType && symbol.is(core. Flags . Case )) Some (symbol.asType) else None
1569
+ def Symbol_isTerm (symbol : Symbol )(given Context ): Boolean =
1570
+ symbol.isTerm
1602
1571
1603
- def TypeBindSymbol_tree ( self : TypeBindSymbol )(given Context ): TypeBind =
1604
- FromSymbol .typeBindFromSym(self )
1572
+ def Symbol_isPackageDef ( symbol : Symbol )(given ctx : Context ): Boolean =
1573
+ symbol.is( Flags . Package )
1605
1574
1606
- type TermSymbol = core.Symbols .TermSymbol
1575
+ def Symbol_isClassDef (symbol : Symbol )(given Context ): Boolean =
1576
+ symbol.isClass
1607
1577
1608
- def matchTermSymbol (symbol : Symbol )(given Context ): Option [ TermSymbol ] =
1609
- if ( symbol.isTerm) Some ( symbol.asTerm) else None
1578
+ def Symbol_isTypeDef (symbol : Symbol )(given ctx : Context ): Boolean =
1579
+ symbol.isType && ! symbol.isClass && ! symbol.is( Flags . Case )
1610
1580
1611
- type DefDefSymbol = core.Symbols .TermSymbol
1581
+ def Symbol_isValDef (symbol : Symbol )(given Context ): Boolean =
1582
+ symbol.isTerm && ! symbol.is(core.Flags .Method ) && ! symbol.is(core.Flags .Case /* , FIXME add this check and fix sourcecode butNot = Enum | Module*/ )
1612
1583
1613
- def matchDefDefSymbol (symbol : Symbol )(given Context ): Option [ DefDefSymbol ] =
1614
- if ( symbol.isTerm && symbol. is(core.Flags .Method )) Some (symbol.asTerm) else None
1584
+ def Symbol_isDefDef (symbol : Symbol )(given Context ): Boolean =
1585
+ symbol.is(core.Flags .Method )
1615
1586
1616
- def DefDefSymbol_tree ( self : DefDefSymbol )(given Context ): DefDef =
1617
- FromSymbol .defDefFromSym(self)
1587
+ def Symbol_isBind ( symbol : Symbol )(given Context ): Boolean =
1588
+ symbol.is(core. Flags . Case , butNot = Enum | Module ) && ! symbol.isClass
1618
1589
1619
- def DefDefSymbol_signature (self : DefDefSymbol )(given Context ): Signature =
1590
+ def Symbol_signature (self : Symbol )(given Context ): Signature =
1620
1591
self.signature
1621
1592
1622
- type ValDefSymbol = core.Symbols .TermSymbol
1623
-
1624
- def matchValDefSymbol (symbol : Symbol )(given Context ): Option [ValDefSymbol ] =
1625
- if (symbol.isTerm && ! symbol.is(core.Flags .Method ) && ! symbol.is(core.Flags .Case )) Some (symbol.asTerm) else None
1626
-
1627
- def ValDefSymbol_tree (self : ValDefSymbol )(given Context ): ValDef =
1628
- FromSymbol .valDefFromSym(self)
1629
-
1630
- def ValDefSymbol_moduleClass (self : ValDefSymbol )(given Context ): Option [ClassDefSymbol ] = {
1631
- val sym = self.moduleClass
1632
- if (sym.exists) Some (sym.asClass) else None
1633
- }
1634
-
1635
- def ValDefSymbol_companionClass (self : ValDefSymbol )(given Context ): Option [ClassDefSymbol ] = {
1636
- val sym = self.companionClass
1637
- if (sym.exists) Some (sym.asClass) else None
1638
- }
1639
-
1640
- type BindSymbol = core.Symbols .TermSymbol
1641
1593
1642
- def matchBindSymbol (symbol : Symbol )(given Context ): Option [BindSymbol ] =
1643
- if (symbol.isTerm && symbol.is(core.Flags .Case )) Some (symbol.asTerm) else None
1594
+ def Symbol_moduleClass (self : Symbol )(given Context ): Symbol = self.moduleClass
1644
1595
1645
- def BindSymbol_tree (self : BindSymbol )(given Context ): Bind =
1646
- FromSymbol .bindFromSym(self)
1596
+ def Symbol_companionClass (self : Symbol )(given Context ): Symbol = self.companionClass
1647
1597
1648
- type NoSymbol = core. Symbols . NoSymbol . type
1598
+ def Symbol_companionModule ( self : Symbol )( given Context ) : Symbol = self.companionModule
1649
1599
1650
- def matchNoSymbol ( symbol : Symbol )( given Context ): Boolean = symbol eq core.Symbols .NoSymbol
1600
+ def Symbol_noSymbol ( given ctx : Context ): Symbol = core.Symbols .NoSymbol
1651
1601
1652
1602
//
1653
1603
// FLAGS
@@ -1792,7 +1742,7 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
1792
1742
def Definitions_Array_length : Symbol = defn.Array_length .asTerm
1793
1743
def Definitions_Array_update : Symbol = defn.Array_update .asTerm
1794
1744
1795
- def Definitions_RepeatedParamClass : ClassDefSymbol = defn.RepeatedParamClass
1745
+ def Definitions_RepeatedParamClass : Symbol = defn.RepeatedParamClass
1796
1746
1797
1747
def Definitions_OptionClass : Symbol = defn.OptionClass
1798
1748
def Definitions_NoneModule : Symbol = defn.NoneModule
0 commit comments