@@ -156,7 +156,7 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
156156 if (self.symbol.is(core.Flags .JavaDefined )) Nil // FIXME should also support java packages
157157 else self.symbol.info.decls.iterator.map(definitionFromSym).toList
158158
159- def PackageDef_symbol (self : PackageDef )(given Context ): PackageDefSymbol = self.symbol
159+ def PackageDef_symbol (self : PackageDef )(given Context ): Symbol = self.symbol
160160
161161 type ClassDef = tpd.TypeDef
162162
@@ -170,7 +170,7 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
170170 def ClassDef_derived (self : ClassDef )(given Context ): List [TypeTree ] = ClassDef_rhs (self).derived.asInstanceOf [List [TypeTree ]]
171171 def ClassDef_self (self : ClassDef )(given Context ): Option [ValDef ] = optional(ClassDef_rhs (self).self)
172172 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
174174 private def ClassDef_rhs (self : ClassDef ) = self.rhs.asInstanceOf [tpd.Template ]
175175
176176 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
186186 }
187187
188188 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
190190
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 ))
192192 def TypeDef_copy (original : TypeDef )(name : String , rhs : TypeTree | TypeBoundsTree )(given Context ): TypeDef =
193193 tpd.cpy.TypeDef (original)(name.toTypeName, rhs)
194194
@@ -203,10 +203,10 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
203203 def DefDef_paramss (self : DefDef )(given Context ): List [List [ValDef ]] = self.vparamss
204204 def DefDef_returnTpt (self : DefDef )(given Context ): TypeTree = self.tpt
205205 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
207207
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 )))
210210
211211 def DefDef_copy (original : DefDef )(name : String , typeParams : List [TypeDef ], paramss : List [List [ValDef ]], tpt : TypeTree , rhs : Option [Term ])(given Context ): DefDef =
212212 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
220220
221221 def ValDef_tpt (self : ValDef )(given Context ): TypeTree = self.tpt
222222 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
224224
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 ))
227227
228228 def ValDef_copy (original : ValDef )(name : String , tpt : TypeTree , rhs : Option [Term ])(given Context ): ValDef =
229229 tpd.cpy.ValDef (original)(name.toTermName, tpt, rhs.getOrElse(tpd.EmptyTree ))
@@ -319,8 +319,8 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
319319
320320 def This_id (self : This )(given Context ): Option [Id ] = optional(self.qual)
321321
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 ))
324324
325325 def This_copy (original : Tree )(qual : Option [Id ])(given Context ): This =
326326 tpd.cpy.This (original)(qual.getOrElse(untpd.EmptyTypeIdent ))
@@ -1088,7 +1088,7 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
10881088
10891089 def Type_simplified (self : Type )(given Context ): Type = self.simplified
10901090
1091- def Type_classSymbol (self : Type )(given Context ): Option [ClassDefSymbol ] =
1091+ def Type_classSymbol (self : Type )(given Context ): Option [Symbol ] =
10921092 if (self.classSymbol.exists) Some (self.classSymbol.asClass) else None
10931093
10941094 def Type_typeSymbol (self : Type )(given Context ): Symbol = self.typeSymbol
@@ -1100,7 +1100,7 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
11001100 def Type_memberType (self : Type )(member : Symbol )(given Context ): Type =
11011101 member.info.asSeenFrom(self, member.owner)
11021102
1103- def Type_derivesFrom (self : Type )(cls : ClassDefSymbol )(given Context ): Boolean =
1103+ def Type_derivesFrom (self : Type )(cls : Symbol )(given Context ): Boolean =
11041104 self.derivesFrom(cls)
11051105
11061106 def Type_isFunctionType (self : Type )(given Context ): Boolean =
@@ -1458,6 +1458,16 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
14581458
14591459 def Symbol_flags (self : Symbol )(given Context ): Flags = self.flags
14601460
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+
14611471 def Symbol_privateWithin (self : Symbol )(given Context ): Option [Type ] = {
14621472 val within = self.privateWithin
14631473 if (within.exists && ! self.is(core.Flags .Protected )) Some (within.typeRef)
@@ -1506,148 +1516,88 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
15061516 def Symbol_isAbstractType (self : Symbol )(given Context ): Boolean = self.isAbstractType
15071517 def Symbol_isClassConstructor (self : Symbol )(given Context ): Boolean = self.isClassConstructor
15081518
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 ] =
15311520 self.unforcedDecls.filter(isField)
15321521
1533- def ClassDefSymbol_field (self : Symbol )(name : String )(given Context ): Option [ Symbol ] = {
1522+ def Symbol_field (self : Symbol )(name : String )(given Context ): Symbol = {
15341523 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
15361525 }
15371526
1538- def ClassDefSymbol_classMethod (self : Symbol )(name : String )(given Context ): List [DefDefSymbol ] =
1527+ def Symbol_classMethod (self : Symbol )(name : String )(given Context ): List [Symbol ] =
15391528 self.typeRef.decls.iterator.collect {
15401529 case sym if isMethod(sym) && sym.name.toString == name => sym.asTerm
15411530 }.toList
15421531
1543- def ClassDefSymbol_classMethods (self : Symbol )(given Context ): List [DefDefSymbol ] =
1532+ def Symbol_classMethods (self : Symbol )(given Context ): List [Symbol ] =
15441533 self.typeRef.decls.iterator.collect {
15451534 case sym if isMethod(sym) => sym.asTerm
15461535 }.toList
15471536
15481537 private def appliedTypeRef (sym : Symbol ): Type = sym.typeRef.appliedTo(sym.typeParams.map(_.typeRef))
15491538
1550- def ClassDefSymbol_method (self : Symbol )(name : String )(given Context ): List [DefDefSymbol ] =
1539+ def Symbol_method (self : Symbol )(name : String )(given Context ): List [Symbol ] =
15511540 appliedTypeRef(self).allMembers.iterator.map(_.symbol).collect {
15521541 case sym if isMethod(sym) && sym.name.toString == name => sym.asTerm
15531542 }.toList
15541543
1555- def ClassDefSymbol_methods (self : Symbol )(given Context ): List [DefDefSymbol ] =
1544+ def Symbol_methods (self : Symbol )(given Context ): List [Symbol ] =
15561545 appliedTypeRef(self).allMembers.iterator.map(_.symbol).collect {
15571546 case sym if isMethod(sym) => sym.asTerm
15581547 }.toList
15591548
15601549 private def isMethod (sym : Symbol )(given Context ): Boolean =
15611550 sym.isTerm && sym.is(Flags .Method ) && ! sym.isConstructor
15621551
1563- def ClassDefSymbol_caseFields (self : Symbol )(given Context ): List [ValDefSymbol ] =
1552+ def Symbol_caseFields (self : Symbol )(given Context ): List [Symbol ] =
15641553 if (! self.isClass) Nil
15651554 else self.asClass.paramAccessors.collect {
15661555 case sym if sym.is(Flags .CaseAccessor ) => sym.asTerm
15671556 }
15681557
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-
15841558 private def isField (sym : Symbol )(given Context ): Boolean = sym.isTerm && ! sym.is(Flags .Method )
15851559
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)
15871562
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 =
15961564 self.isTypeParam
15971565
1598- type TypeBindSymbol = core.Symbols .TypeSymbol
1566+ def Symbol_isType (symbol : Symbol )(given Context ): Boolean =
1567+ symbol.isType
15991568
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
16021571
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 )
16051574
1606- type TermSymbol = core.Symbols .TermSymbol
1575+ def Symbol_isClassDef (symbol : Symbol )(given Context ): Boolean =
1576+ symbol.isClass
16071577
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 )
16101580
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*/ )
16121583
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 )
16151586
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
16181589
1619- def DefDefSymbol_signature (self : DefDefSymbol )(given Context ): Signature =
1590+ def Symbol_signature (self : Symbol )(given Context ): Signature =
16201591 self.signature
16211592
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
16411593
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
16441595
1645- def BindSymbol_tree (self : BindSymbol )(given Context ): Bind =
1646- FromSymbol .bindFromSym(self)
1596+ def Symbol_companionClass (self : Symbol )(given Context ): Symbol = self.companionClass
16471597
1648- type NoSymbol = core. Symbols . NoSymbol . type
1598+ def Symbol_companionModule ( self : Symbol )( given Context ) : Symbol = self.companionModule
16491599
1650- def matchNoSymbol ( symbol : Symbol )( given Context ): Boolean = symbol eq core.Symbols .NoSymbol
1600+ def Symbol_noSymbol ( given ctx : Context ): Symbol = core.Symbols .NoSymbol
16511601
16521602 //
16531603 // FLAGS
@@ -1792,7 +1742,7 @@ class ReflectionCompilerInterface(val rootContext: core.Contexts.Context) extend
17921742 def Definitions_Array_length : Symbol = defn.Array_length .asTerm
17931743 def Definitions_Array_update : Symbol = defn.Array_update .asTerm
17941744
1795- def Definitions_RepeatedParamClass : ClassDefSymbol = defn.RepeatedParamClass
1745+ def Definitions_RepeatedParamClass : Symbol = defn.RepeatedParamClass
17961746
17971747 def Definitions_OptionClass : Symbol = defn.OptionClass
17981748 def Definitions_NoneModule : Symbol = defn.NoneModule
0 commit comments