@@ -123,7 +123,7 @@ class KernelImpl(val rootContext: core.Contexts.Context, val rootPosition: util.
123
123
else self.symbol.info.decls.iterator.map(definitionFromSym).toList
124
124
}
125
125
126
- def PackageDef_symbol (self : PackageDef )(implicit ctx : Context ): PackageSymbol = self.symbol
126
+ def PackageDef_symbol (self : PackageDef )(implicit ctx : Context ): PackageDefSymbol = self.symbol
127
127
128
128
type ClassDef = tpd.TypeDef
129
129
@@ -137,7 +137,7 @@ class KernelImpl(val rootContext: core.Contexts.Context, val rootPosition: util.
137
137
def ClassDef_derived (self : ClassDef )(implicit ctx : Context ): List [TypeTree ] = ClassDef_rhs (self).derived.asInstanceOf [List [TypeTree ]]
138
138
def ClassDef_self (self : ClassDef )(implicit ctx : Context ): Option [ValDef ] = optional(ClassDef_rhs (self).self)
139
139
def ClassDef_body (self : ClassDef )(implicit ctx : Context ): List [Statement ] = ClassDef_rhs (self).body
140
- def ClassDef_symbol (self : ClassDef )(implicit ctx : Context ): ClassSymbol = self.symbol.asClass
140
+ def ClassDef_symbol (self : ClassDef )(implicit ctx : Context ): ClassDefSymbol = self.symbol.asClass
141
141
private def ClassDef_rhs (self : ClassDef ) = self.rhs.asInstanceOf [tpd.Template ]
142
142
143
143
def ClassDef_copy (original : ClassDef )(name : String , constr : DefDef , parents : List [Tree /* Term | TypeTree */ ], derived : List [TypeTree ], selfOpt : Option [ValDef ], body : List [Statement ])(implicit ctx : Context ): ClassDef = {
@@ -153,9 +153,9 @@ class KernelImpl(val rootContext: core.Contexts.Context, val rootPosition: util.
153
153
}
154
154
155
155
def TypeDef_rhs (self : TypeDef )(implicit ctx : Context ): Tree /* TypeTree | TypeBoundsTree*/ = self.rhs
156
- def TypeDef_symbol (self : TypeDef )(implicit ctx : Context ): TypeSymbol = self.symbol.asType
156
+ def TypeDef_symbol (self : TypeDef )(implicit ctx : Context ): TypeDefSymbol = self.symbol.asType
157
157
158
- def TypeDef_apply (symbol : TypeSymbol )(implicit ctx : Context ): TypeDef = withDefaultPos(ctx => tpd.TypeDef (symbol)(ctx))
158
+ def TypeDef_apply (symbol : TypeDefSymbol )(implicit ctx : Context ): TypeDef = withDefaultPos(ctx => tpd.TypeDef (symbol)(ctx))
159
159
def TypeDef_copy (original : TypeDef )(name : String , rhs : Tree /* TypeTree | TypeBoundsTree*/ )(implicit ctx : Context ): TypeDef =
160
160
tpd.cpy.TypeDef (original)(name.toTypeName, rhs)
161
161
@@ -170,9 +170,9 @@ class KernelImpl(val rootContext: core.Contexts.Context, val rootPosition: util.
170
170
def DefDef_paramss (self : DefDef )(implicit ctx : Context ): List [List [ValDef ]] = self.vparamss
171
171
def DefDef_returnTpt (self : DefDef )(implicit ctx : Context ): TypeTree = self.tpt
172
172
def DefDef_rhs (self : DefDef )(implicit ctx : Context ): Option [Tree ] = optional(self.rhs)
173
- def DefDef_symbol (self : DefDef )(implicit ctx : Context ): DefSymbol = self.symbol.asTerm
173
+ def DefDef_symbol (self : DefDef )(implicit ctx : Context ): DefDefSymbol = self.symbol.asTerm
174
174
175
- def DefDef_apply (symbol : DefSymbol , rhsFn : List [Type ] => List [List [Term ]] => Option [Term ])(implicit ctx : Context ): DefDef =
175
+ def DefDef_apply (symbol : DefDefSymbol , rhsFn : List [Type ] => List [List [Term ]] => Option [Term ])(implicit ctx : Context ): DefDef =
176
176
withDefaultPos(ctx => tpd.polyDefDef(symbol, tparams => vparamss => rhsFn(tparams)(vparamss).getOrElse(tpd.EmptyTree ))(ctx))
177
177
178
178
def DefDef_copy (original : DefDef )(name : String , typeParams : List [TypeDef ], paramss : List [List [ValDef ]], tpt : TypeTree , rhs : Option [Term ])(implicit ctx : Context ): DefDef =
@@ -187,9 +187,9 @@ class KernelImpl(val rootContext: core.Contexts.Context, val rootPosition: util.
187
187
188
188
def ValDef_tpt (self : ValDef )(implicit ctx : Context ): TypeTree = self.tpt
189
189
def ValDef_rhs (self : ValDef )(implicit ctx : Context ): Option [Tree ] = optional(self.rhs)
190
- def ValDef_symbol (self : ValDef )(implicit ctx : Context ): ValSymbol = self.symbol.asTerm
190
+ def ValDef_symbol (self : ValDef )(implicit ctx : Context ): ValDefSymbol = self.symbol.asTerm
191
191
192
- def ValDef_apply (symbol : ValSymbol , rhs : Option [Term ])(implicit ctx : Context ): ValDef =
192
+ def ValDef_apply (symbol : ValDefSymbol , rhs : Option [Term ])(implicit ctx : Context ): ValDef =
193
193
tpd.ValDef (symbol, rhs.getOrElse(tpd.EmptyTree ))
194
194
195
195
def ValDef_copy (original : ValDef )(name : String , tpt : TypeTree , rhs : Option [Term ])(implicit ctx : Context ): ValDef =
@@ -278,7 +278,7 @@ class KernelImpl(val rootContext: core.Contexts.Context, val rootPosition: util.
278
278
279
279
def This_id (self : This )(implicit ctx : Context ): Option [Id ] = optional(self.qual)
280
280
281
- def This_apply (cls : ClassSymbol )(implicit ctx : Context ): This =
281
+ def This_apply (cls : ClassDefSymbol )(implicit ctx : Context ): This =
282
282
withDefaultPos(ctx => tpd.This (cls)(ctx))
283
283
284
284
def This_copy (original : Tree )(qual : Option [Id ])(implicit ctx : Context ): This =
@@ -996,7 +996,7 @@ class KernelImpl(val rootContext: core.Contexts.Context, val rootPosition: util.
996
996
997
997
def Type_dealias (self : Type )(implicit ctx : Context ): Type = self.dealias
998
998
999
- def Type_classSymbol (self : Type )(implicit ctx : Context ): Option [ClassSymbol ] =
999
+ def Type_classSymbol (self : Type )(implicit ctx : Context ): Option [ClassDefSymbol ] =
1000
1000
if (self.classSymbol.exists) Some (self.classSymbol.asClass) else None
1001
1001
1002
1002
def Type_typeSymbol (self : Type )(implicit ctx : Context ): Symbol = self.typeSymbol
@@ -1427,49 +1427,54 @@ class KernelImpl(val rootContext: core.Contexts.Context, val rootPosition: util.
1427
1427
def Symbol_isAbstractType (self : Symbol )(implicit ctx : Context ): Boolean = self.isAbstractType
1428
1428
def Symbol_isClassConstructor (self : Symbol )(implicit ctx : Context ): Boolean = self.isClassConstructor
1429
1429
1430
- type PackageSymbol = core.Symbols .Symbol
1430
+ type PackageDefSymbol = core.Symbols .Symbol
1431
1431
1432
- def matchPackageSymbol (symbol : Symbol )(implicit ctx : Context ): Option [PackageSymbol ] =
1432
+ def matchPackageDefSymbol (symbol : Symbol )(implicit ctx : Context ): Option [PackageDefSymbol ] =
1433
1433
if (symbol.is(core.Flags .Package )) Some (symbol) else None
1434
1434
1435
- def PackageSymbol_tree (self : PackageSymbol )(implicit ctx : Context ): PackageDef =
1435
+ def PackageDefSymbol_tree (self : PackageDefSymbol )(implicit ctx : Context ): PackageDef =
1436
1436
FromSymbol .packageDefFromSym(self)
1437
1437
1438
- type ClassSymbol = core.Symbols .ClassSymbol
1438
+ type TypeSymbol = core.Symbols .TypeSymbol
1439
+
1440
+ def matchTypeSymbol (symbol : Symbol )(implicit ctx : Context ): Option [TypeSymbol ] =
1441
+ if (symbol.isType) Some (symbol.asType) else None
1442
+
1443
+ type ClassDefSymbol = core.Symbols .ClassSymbol
1439
1444
1440
- def matchClassSymbol (symbol : Symbol )(implicit ctx : Context ): Option [ClassSymbol ] =
1445
+ def matchClassDefSymbol (symbol : Symbol )(implicit ctx : Context ): Option [ClassDefSymbol ] =
1441
1446
if (symbol.isClass) Some (symbol.asClass) else None
1442
1447
1443
- def ClassSymbol_tree (self : ClassSymbol )(implicit ctx : Context ): ClassDef =
1448
+ def ClassDefSymbol_tree (self : ClassDefSymbol )(implicit ctx : Context ): ClassDef =
1444
1449
FromSymbol .classDef(self)
1445
1450
1446
- def ClassSymbol_fields (self : Symbol )(implicit ctx : Context ): List [Symbol ] =
1451
+ def ClassDefSymbol_fields (self : Symbol )(implicit ctx : Context ): List [Symbol ] =
1447
1452
self.unforcedDecls.filter(isField)
1448
1453
1449
- def ClassSymbol_field (self : Symbol )(name : String )(implicit ctx : Context ): Option [Symbol ] = {
1454
+ def ClassDefSymbol_field (self : Symbol )(name : String )(implicit ctx : Context ): Option [Symbol ] = {
1450
1455
val sym = self.unforcedDecls.find(sym => sym.name == name.toTermName)
1451
1456
if (sym.exists && isField(sym)) Some (sym) else None
1452
1457
}
1453
1458
1454
- def ClassSymbol_classMethod (self : Symbol )(name : String )(implicit ctx : Context ): List [DefSymbol ] = {
1459
+ def ClassDefSymbol_classMethod (self : Symbol )(name : String )(implicit ctx : Context ): List [DefDefSymbol ] = {
1455
1460
self.typeRef.decls.iterator.collect {
1456
1461
case sym if isMethod(sym) && sym.name.toString == name => sym.asTerm
1457
1462
}.toList
1458
1463
}
1459
1464
1460
- def ClassSymbol_classMethods (self : Symbol )(implicit ctx : Context ): List [DefSymbol ] = {
1465
+ def ClassDefSymbol_classMethods (self : Symbol )(implicit ctx : Context ): List [DefDefSymbol ] = {
1461
1466
self.typeRef.decls.iterator.collect {
1462
1467
case sym if isMethod(sym) => sym.asTerm
1463
1468
}.toList
1464
1469
}
1465
1470
1466
- def ClassSymbol_method (self : Symbol )(name : String )(implicit ctx : Context ): List [DefSymbol ] = {
1471
+ def ClassDefSymbol_method (self : Symbol )(name : String )(implicit ctx : Context ): List [DefDefSymbol ] = {
1467
1472
self.typeRef.allMembers.iterator.map(_.symbol).collect {
1468
1473
case sym if isMethod(sym) && sym.name.toString == name => sym.asTerm
1469
1474
}.toList
1470
1475
}
1471
1476
1472
- def ClassSymbol_methods (self : Symbol )(implicit ctx : Context ): List [DefSymbol ] = {
1477
+ def ClassDefSymbol_methods (self : Symbol )(implicit ctx : Context ): List [DefDefSymbol ] = {
1473
1478
self.typeRef.allMembers.iterator.map(_.symbol).collect {
1474
1479
case sym if isMethod(sym) => sym.asTerm
1475
1480
}.toList
@@ -1478,67 +1483,80 @@ class KernelImpl(val rootContext: core.Contexts.Context, val rootPosition: util.
1478
1483
private def isMethod (sym : Symbol )(implicit ctx : Context ): Boolean =
1479
1484
sym.isTerm && sym.is(Flags .Method ) && ! sym.isConstructor
1480
1485
1481
- def ClassSymbol_caseFields (self : Symbol )(implicit ctx : Context ): List [ValSymbol ] = {
1486
+ def ClassDefSymbol_caseFields (self : Symbol )(implicit ctx : Context ): List [ValDefSymbol ] = {
1482
1487
if (! self.isClass) Nil
1483
1488
else self.asClass.paramAccessors.collect {
1484
1489
case sym if sym.is(Flags .CaseAccessor ) => sym.asTerm
1485
1490
}
1486
1491
}
1487
1492
1488
- def ClassSymbol_companionClass (self : Symbol )(implicit ctx : Context ): Option [ClassSymbol ] = {
1493
+ def ClassDefSymbol_companionClass (self : Symbol )(implicit ctx : Context ): Option [ClassDefSymbol ] = {
1489
1494
val sym = self.companionModule.companionClass
1490
1495
if (sym.exists) Some (sym.asClass) else None
1491
1496
}
1492
1497
1493
- def ClassSymbol_companionModule (self : Symbol )(implicit ctx : Context ): Option [ValSymbol ] = {
1498
+ def ClassDefSymbol_companionModule (self : Symbol )(implicit ctx : Context ): Option [ValDefSymbol ] = {
1494
1499
val sym = self.companionModule
1495
1500
if (sym.exists) Some (sym.asTerm) else None
1496
1501
}
1497
1502
1498
- def ClassSymbol_moduleClass (self : Symbol )(implicit ctx : Context ): Option [Symbol ] = {
1503
+ def ClassDefSymbol_moduleClass (self : Symbol )(implicit ctx : Context ): Option [Symbol ] = {
1499
1504
val sym = self.moduleClass
1500
1505
if (sym.exists) Some (sym.asTerm) else None
1501
1506
}
1502
1507
1503
1508
private def isField (sym : Symbol )(implicit ctx : Context ): Boolean = sym.isTerm && ! sym.is(Flags .Method )
1504
1509
1505
- def ClassSymbol_of (fullName : String )(implicit ctx : Context ): ClassSymbol = ctx.requiredClass(fullName)
1510
+ def ClassDefSymbol_of (fullName : String )(implicit ctx : Context ): ClassDefSymbol = ctx.requiredClass(fullName)
1506
1511
1507
- type TypeSymbol = core.Symbols .TypeSymbol
1512
+ type TypeDefSymbol = core.Symbols .TypeSymbol
1508
1513
1509
- def matchTypeSymbol (symbol : Symbol )(implicit ctx : Context ): Option [TypeSymbol ] =
1514
+ def matchTypeDefSymbol (symbol : Symbol )(implicit ctx : Context ): Option [TypeDefSymbol ] =
1510
1515
if (symbol.isType) Some (symbol.asType) else None
1511
1516
1512
- def TypeSymbol_tree (self : TypeSymbol )(implicit ctx : Context ): TypeDef =
1517
+ def TypeDefSymbol_tree (self : TypeDefSymbol )(implicit ctx : Context ): TypeDef =
1513
1518
FromSymbol .typeDefFromSym(self)
1514
- def TypeSymbol_isTypeParam (self : TypeSymbol )(implicit ctx : Context ): Boolean =
1519
+ def TypeDefSymbol_isTypeParam (self : TypeDefSymbol )(implicit ctx : Context ): Boolean =
1515
1520
self.isTypeParam
1516
1521
1517
- type DefSymbol = core.Symbols .TermSymbol
1522
+ type TypeBindSymbol = core.Symbols .TypeSymbol
1523
+
1524
+ def matchTypeBindSymbol (symbol : Symbol )(implicit ctx : Context ): Option [TypeBindSymbol ] =
1525
+ if (symbol.isType && symbol.is(core.Flags .Case )) Some (symbol.asType) else None
1526
+
1527
+ def TypeBindSymbol_tree (self : TypeBindSymbol )(implicit ctx : Context ): TypeTree_TypeBind =
1528
+ FromSymbol .typeBindFromSym(self)
1529
+
1530
+ type TermSymbol = core.Symbols .TermSymbol
1531
+
1532
+ def matchTermSymbol (symbol : Symbol )(implicit ctx : Context ): Option [TermSymbol ] =
1533
+ if (symbol.isTerm) Some (symbol.asTerm) else None
1534
+
1535
+ type DefDefSymbol = core.Symbols .TermSymbol
1518
1536
1519
- def matchDefSymbol (symbol : Symbol )(implicit ctx : Context ): Option [DefSymbol ] =
1537
+ def matchDefDefSymbol (symbol : Symbol )(implicit ctx : Context ): Option [DefDefSymbol ] =
1520
1538
if (symbol.isTerm && symbol.is(core.Flags .Method )) Some (symbol.asTerm) else None
1521
1539
1522
- def DefSymbol_tree (self : DefSymbol )(implicit ctx : Context ): DefDef =
1540
+ def DefDefSymbol_tree (self : DefDefSymbol )(implicit ctx : Context ): DefDef =
1523
1541
FromSymbol .defDefFromSym(self)
1524
1542
1525
- def DefSymbol_signature (self : DefSymbol )(implicit ctx : Context ): Signature =
1543
+ def DefDefSymbol_signature (self : DefDefSymbol )(implicit ctx : Context ): Signature =
1526
1544
self.signature
1527
1545
1528
- type ValSymbol = core.Symbols .TermSymbol
1546
+ type ValDefSymbol = core.Symbols .TermSymbol
1529
1547
1530
- def matchValSymbol (symbol : Symbol )(implicit ctx : Context ): Option [ValSymbol ] =
1548
+ def matchValDefSymbol (symbol : Symbol )(implicit ctx : Context ): Option [ValDefSymbol ] =
1531
1549
if (symbol.isTerm && ! symbol.is(core.Flags .Method ) && ! symbol.is(core.Flags .Case )) Some (symbol.asTerm) else None
1532
1550
1533
- def ValSymbol_tree (self : ValSymbol )(implicit ctx : Context ): ValDef =
1551
+ def ValDefSymbol_tree (self : ValDefSymbol )(implicit ctx : Context ): ValDef =
1534
1552
FromSymbol .valDefFromSym(self)
1535
1553
1536
- def ValSymbol_moduleClass (self : ValSymbol )(implicit ctx : Context ): Option [ClassSymbol ] = {
1554
+ def ValDefSymbol_moduleClass (self : ValDefSymbol )(implicit ctx : Context ): Option [ClassDefSymbol ] = {
1537
1555
val sym = self.moduleClass
1538
1556
if (sym.exists) Some (sym.asClass) else None
1539
1557
}
1540
1558
1541
- def ValSymbol_companionClass (self : ValSymbol )(implicit ctx : Context ): Option [ClassSymbol ] = {
1559
+ def ValDefSymbol_companionClass (self : ValDefSymbol )(implicit ctx : Context ): Option [ClassDefSymbol ] = {
1542
1560
val sym = self.companionClass
1543
1561
if (sym.exists) Some (sym.asClass) else None
1544
1562
}
0 commit comments