@@ -62,17 +62,21 @@ Standard-Section: "ASTs" TopLevelStat*
62
62
IMPORT Length qual_Term Selector* -- import qual selectors
63
63
EXPORT Length qual_Term Selector* -- export qual selectors
64
64
ValOrDefDef = VALDEF Length NameRef type_Term rhs_Term? Modifier* -- modifiers val name : type (= rhs)?
65
- DEFDEF Length NameRef TypeParam* Params* returnType_Term
66
- rhs_Term? Modifier* -- modifiers def name [typeparams] paramss : returnType (= rhs)?
65
+ DEFDEF Length NameRef Param* returnType_Term rhs_Term?
66
+ Modifier* -- modifiers def name [typeparams] paramss : returnType (= rhs)?
67
67
Selector = IMPORTED name_NameRef -- name, "_" for normal wildcards, "" for given wildcards
68
68
RENAMED to_NameRef -- => name
69
69
BOUNDED type_Term -- type bound
70
70
71
71
TypeParam = TYPEPARAM Length NameRef type_Term Modifier* -- modifiers name bounds
72
- Param = PARAM Length NameRef type_Term rhs_Term? Modifier* -- modifiers name : type (= rhs_Term)?. `rhsTerm` is present in the case of an aliased class parameter
73
- PARAMEND -- ends a parameter clause
72
+ TermParam = PARAM Length NameRef type_Term rhs_Term? Modifier* -- modifiers name : type (= rhs_Term)?. `rhsTerm` is present in the case of an aliased class parameter
73
+ EMPTYCLAUSE -- an empty parameter clause ()
74
+ SPLITCLAUSE -- splits two non-empty parameter clauses of the same kind
75
+ Param = TypeParam
76
+ TermParam
74
77
-- needed if previous parameter clause is empty or another parameter clause follows
75
- Template = TEMPLATE Length TypeParam* Param* parent_Term* Self? Stat* -- [typeparams] paramss extends parents { self => stats }, where Stat* always starts with the primary constructor.
78
+ Template = TEMPLATE Length TypeParam* TermParam* parent_Term* Self?
79
+ Stat* -- [typeparams] paramss extends parents { self => stats }, where Stat* always starts with the primary constructor.
76
80
Self = SELFDEF selfName_NameRef selfType_Term -- selfName : selfType
77
81
78
82
Term = Path -- Paths represent both types and terms
@@ -222,9 +226,9 @@ Note: The signature of a SELECTin or TERMREFin node is the signature of the sele
222
226
223
227
Note: Tree tags are grouped into 5 categories that determine what follows, and thus allow to compute the size of the tagged tree in a generic way.
224
228
225
- Category 1 (tags 1-49 ) : tag
226
- Category 2 (tags 50-79 ) : tag Nat
227
- Category 3 (tags 80 -109) : tag AST
229
+ Category 1 (tags 1-59 ) : tag
230
+ Category 2 (tags 60-89 ) : tag Nat
231
+ Category 3 (tags 90 -109) : tag AST
228
232
Category 4 (tags 110-127): tag Nat AST
229
233
Category 5 (tags 128-255): tag Length <payload>
230
234
@@ -260,8 +264,8 @@ Standard Section: "Comments" Comment*
260
264
object TastyFormat {
261
265
262
266
final val header : Array [Int ] = Array (0x5C , 0xA1 , 0xAB , 0x1F )
263
- val MajorVersion : Int = 26
264
- val MinorVersion : Int = 1
267
+ val MajorVersion : Int = 27
268
+ val MinorVersion : Int = 0
265
269
266
270
final val ASTsSection = " ASTs"
267
271
final val PositionsSection = " Positions"
@@ -374,46 +378,47 @@ object TastyFormat {
374
378
final val PARAMsetter = 38
375
379
final val EXPORTED = 39
376
380
final val OPEN = 40
377
- final val PARAMEND = 41
378
- final val PARAMalias = 42
379
- final val TRANSPARENT = 43
380
- final val INFIX = 44
381
+ final val PARAMalias = 41
382
+ final val TRANSPARENT = 42
383
+ final val INFIX = 43
384
+ final val EMPTYCLAUSE = 44
385
+ final val SPLITCLAUSE = 45
381
386
382
387
// Cat. 2: tag Nat
383
388
384
- final val SHAREDterm = 50
385
- final val SHAREDtype = 51
386
- final val TERMREFdirect = 52
387
- final val TYPEREFdirect = 53
388
- final val TERMREFpkg = 54
389
- final val TYPEREFpkg = 55
390
- final val RECthis = 56
391
- final val BYTEconst = 57
392
- final val SHORTconst = 58
393
- final val CHARconst = 59
394
- final val INTconst = 60
395
- final val LONGconst = 61
396
- final val FLOATconst = 62
397
- final val DOUBLEconst = 63
398
- final val STRINGconst = 64
399
- final val IMPORTED = 65
400
- final val RENAMED = 66
389
+ final val SHAREDterm = 60
390
+ final val SHAREDtype = 61
391
+ final val TERMREFdirect = 62
392
+ final val TYPEREFdirect = 63
393
+ final val TERMREFpkg = 64
394
+ final val TYPEREFpkg = 65
395
+ final val RECthis = 66
396
+ final val BYTEconst = 67
397
+ final val SHORTconst = 68
398
+ final val CHARconst = 69
399
+ final val INTconst = 70
400
+ final val LONGconst = 71
401
+ final val FLOATconst = 72
402
+ final val DOUBLEconst = 73
403
+ final val STRINGconst = 74
404
+ final val IMPORTED = 75
405
+ final val RENAMED = 76
401
406
402
407
// Cat. 3: tag AST
403
408
404
- final val THIS = 80
405
- final val QUALTHIS = 81
406
- final val CLASSconst = 82
407
- final val BYNAMEtype = 83
408
- final val BYNAMEtpt = 84
409
- final val NEW = 85
410
- final val THROW = 86
411
- final val IMPLICITarg = 87
412
- final val PRIVATEqualified = 88
413
- final val PROTECTEDqualified = 89
414
- final val RECtype = 90
415
- final val SINGLETONtpt = 91
416
- final val BOUNDED = 92
409
+ final val THIS = 90
410
+ final val QUALTHIS = 91
411
+ final val CLASSconst = 92
412
+ final val BYNAMEtype = 93
413
+ final val BYNAMEtpt = 94
414
+ final val NEW = 95
415
+ final val THROW = 96
416
+ final val IMPLICITarg = 97
417
+ final val PRIVATEqualified = 98
418
+ final val PROTECTEDqualified = 99
419
+ final val RECtype = 100
420
+ final val SINGLETONtpt = 101
421
+ final val BOUNDED = 102
417
422
418
423
// Cat. 4: tag Nat AST
419
424
@@ -493,7 +498,7 @@ object TastyFormat {
493
498
494
499
/** Useful for debugging */
495
500
def isLegalTag (tag : Int ): Boolean =
496
- firstSimpleTreeTag <= tag && tag <= INFIX ||
501
+ firstSimpleTreeTag <= tag && tag <= SPLITCLAUSE ||
497
502
firstNatTreeTag <= tag && tag <= RENAMED ||
498
503
firstASTTreeTag <= tag && tag <= BOUNDED ||
499
504
firstNatASTTreeTag <= tag && tag <= NAMEDARG ||
@@ -602,8 +607,9 @@ object TastyFormat {
602
607
case PARAMsetter => " PARAMsetter"
603
608
case EXPORTED => " EXPORTED"
604
609
case OPEN => " OPEN"
605
- case PARAMEND => " PARAMEND"
606
610
case PARAMalias => " PARAMalias"
611
+ case EMPTYCLAUSE => " EMPTYCLAUSE"
612
+ case SPLITCLAUSE => " SPLITCLAUSE"
607
613
608
614
case SHAREDterm => " SHAREDterm"
609
615
case SHAREDtype => " SHAREDtype"
0 commit comments