mirror of
https://github.com/dart-lang/sdk
synced 2024-09-04 16:03:44 +00:00
Introduce support for augmentation libraries in Dart.g
Change-Id: Icc4b89f1b25dd633279d87e9d51f85372d962c7b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/358450 Commit-Queue: Erik Ernst <eernst@google.com> Reviewed-by: William Hesse <whesse@google.com>
This commit is contained in:
parent
eb615fc31b
commit
50ff1c7823
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
// CHANGES:
|
// CHANGES:
|
||||||
//
|
//
|
||||||
|
// v0.40 Include support for augmentation libraries.
|
||||||
|
//
|
||||||
// v0.39 Include latest changes to mixin related class modifiers.
|
// v0.39 Include latest changes to mixin related class modifiers.
|
||||||
//
|
//
|
||||||
// v0.38 Broaden `initializerExpression` to match implemented behavior.
|
// v0.38 Broaden `initializerExpression` to match implemented behavior.
|
||||||
|
@ -266,13 +268,12 @@ topLevelDefinition
|
||||||
| EXTERNAL getterSignature ';'
|
| EXTERNAL getterSignature ';'
|
||||||
| EXTERNAL setterSignature ';'
|
| EXTERNAL setterSignature ';'
|
||||||
| EXTERNAL finalVarOrType identifierList ';'
|
| EXTERNAL finalVarOrType identifierList ';'
|
||||||
| getterSignature functionBody
|
| AUGMENT? getterSignature functionBody
|
||||||
| setterSignature functionBody
|
| AUGMENT? setterSignature functionBody
|
||||||
| functionSignature functionBody
|
| AUGMENT? functionSignature functionBody
|
||||||
| (FINAL | CONST) type? staticFinalDeclarationList ';'
|
| AUGMENT? (FINAL | CONST) type? staticFinalDeclarationList ';'
|
||||||
| LATE FINAL type? initializedIdentifierList ';'
|
| AUGMENT? LATE FINAL type? initializedIdentifierList ';'
|
||||||
| LATE? varOrType identifier ('=' expression)?
|
| AUGMENT? LATE? varOrType initializedIdentifierList ';'
|
||||||
(',' initializedIdentifier)* ';'
|
|
||||||
;
|
;
|
||||||
|
|
||||||
declaredIdentifier
|
declaredIdentifier
|
||||||
|
@ -391,7 +392,7 @@ typeWithParameters
|
||||||
;
|
;
|
||||||
|
|
||||||
classDeclaration
|
classDeclaration
|
||||||
: (classModifiers | mixinClassModifiers)
|
: AUGMENT? (classModifiers | mixinClassModifiers)
|
||||||
CLASS typeWithParameters superclass? interfaces?
|
CLASS typeWithParameters superclass? interfaces?
|
||||||
LBRACE (metadata classMemberDeclaration)* RBRACE
|
LBRACE (metadata classMemberDeclaration)* RBRACE
|
||||||
| classModifiers MIXIN? CLASS mixinApplicationClass
|
| classModifiers MIXIN? CLASS mixinApplicationClass
|
||||||
|
@ -420,7 +421,7 @@ interfaces
|
||||||
;
|
;
|
||||||
|
|
||||||
classMemberDeclaration
|
classMemberDeclaration
|
||||||
: methodSignature functionBody
|
: AUGMENT? methodSignature functionBody
|
||||||
| declaration ';'
|
| declaration ';'
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -429,7 +430,7 @@ mixinApplicationClass
|
||||||
;
|
;
|
||||||
|
|
||||||
mixinDeclaration
|
mixinDeclaration
|
||||||
: BASE? MIXIN typeIdentifier typeParameters?
|
: AUGMENT? BASE? MIXIN typeWithParameters
|
||||||
(ON typeNotVoidNotFunctionList)? interfaces?
|
(ON typeNotVoidNotFunctionList)? interfaces?
|
||||||
LBRACE (metadata mixinMemberDeclaration)* RBRACE
|
LBRACE (metadata mixinMemberDeclaration)* RBRACE
|
||||||
;
|
;
|
||||||
|
@ -440,9 +441,8 @@ mixinMemberDeclaration
|
||||||
;
|
;
|
||||||
|
|
||||||
extensionTypeDeclaration
|
extensionTypeDeclaration
|
||||||
: EXTENSION TYPE CONST? typeWithParameters
|
: AUGMENT? EXTENSION TYPE CONST? typeWithParameters
|
||||||
representationDeclaration
|
representationDeclaration interfaces?
|
||||||
interfaces?
|
|
||||||
LBRACE (metadata extensionTypeMemberDeclaration)* RBRACE
|
LBRACE (metadata extensionTypeMemberDeclaration)* RBRACE
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -457,12 +457,12 @@ extensionTypeMemberDeclaration
|
||||||
;
|
;
|
||||||
|
|
||||||
extensionDeclaration
|
extensionDeclaration
|
||||||
: EXTENSION typeIdentifierNotType? typeParameters? ON type
|
: AUGMENT? EXTENSION typeIdentifierNotType? typeParameters? ON type
|
||||||
LBRACE (metadata extensionMemberDefinition)* RBRACE
|
LBRACE (metadata extensionMemberDeclaration)* RBRACE
|
||||||
;
|
;
|
||||||
|
|
||||||
// TODO: We might want to make this more strict.
|
// TODO: We might want to make this more strict.
|
||||||
extensionMemberDefinition
|
extensionMemberDeclaration
|
||||||
: classMemberDeclaration
|
: classMemberDeclaration
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -484,17 +484,17 @@ declaration
|
||||||
| (EXTERNAL STATIC?)? setterSignature
|
| (EXTERNAL STATIC?)? setterSignature
|
||||||
| (EXTERNAL STATIC?)? functionSignature
|
| (EXTERNAL STATIC?)? functionSignature
|
||||||
| EXTERNAL (STATIC? finalVarOrType | COVARIANT varOrType) identifierList
|
| EXTERNAL (STATIC? finalVarOrType | COVARIANT varOrType) identifierList
|
||||||
| ABSTRACT (finalVarOrType | COVARIANT varOrType) identifierList
|
|
||||||
| EXTERNAL? operatorSignature
|
| EXTERNAL? operatorSignature
|
||||||
| STATIC (FINAL | CONST) type? staticFinalDeclarationList
|
| ABSTRACT (finalVarOrType | COVARIANT varOrType) identifierList
|
||||||
| STATIC LATE FINAL type? initializedIdentifierList
|
| AUGMENT? STATIC (FINAL | CONST) type? staticFinalDeclarationList
|
||||||
| STATIC LATE? varOrType initializedIdentifierList
|
| AUGMENT? STATIC LATE FINAL type? initializedIdentifierList
|
||||||
| COVARIANT LATE FINAL type? identifierList
|
| AUGMENT? STATIC LATE? varOrType initializedIdentifierList
|
||||||
| COVARIANT LATE? varOrType initializedIdentifierList
|
| AUGMENT? COVARIANT LATE FINAL type? identifierList
|
||||||
| LATE? (FINAL type? | varOrType) initializedIdentifierList
|
| AUGMENT? COVARIANT LATE? varOrType initializedIdentifierList
|
||||||
| redirectingFactoryConstructorSignature
|
| AUGMENT? LATE? (FINAL type? | varOrType) initializedIdentifierList
|
||||||
| constantConstructorSignature (redirection | initializers)?
|
| AUGMENT? redirectingFactoryConstructorSignature
|
||||||
| constructorSignature (redirection | initializers)?
|
| AUGMENT? constantConstructorSignature (redirection | initializers)?
|
||||||
|
| AUGMENT? constructorSignature (redirection | initializers)?
|
||||||
;
|
;
|
||||||
|
|
||||||
staticFinalDeclarationList
|
staticFinalDeclarationList
|
||||||
|
@ -591,7 +591,7 @@ mixinApplication
|
||||||
;
|
;
|
||||||
|
|
||||||
enumType
|
enumType
|
||||||
: ENUM typeIdentifier typeParameters? mixins? interfaces? LBRACE
|
: AUGMENT? ENUM typeWithParameters? mixins? interfaces? LBRACE
|
||||||
enumEntry (',' enumEntry)* (',')?
|
enumEntry (',' enumEntry)* (',')?
|
||||||
(';' (metadata classMemberDeclaration)*)?
|
(';' (metadata classMemberDeclaration)*)?
|
||||||
RBRACE
|
RBRACE
|
||||||
|
@ -1360,7 +1360,12 @@ assertion
|
||||||
;
|
;
|
||||||
|
|
||||||
libraryName
|
libraryName
|
||||||
: metadata LIBRARY dottedIdentifierList? ';'
|
: metadata libraryNameBody ';'
|
||||||
|
;
|
||||||
|
|
||||||
|
libraryNameBody
|
||||||
|
: LIBRARY dottedIdentifierList?
|
||||||
|
| AUGMENT LIBRARY uri
|
||||||
;
|
;
|
||||||
|
|
||||||
dottedIdentifierList
|
dottedIdentifierList
|
||||||
|
@ -1369,6 +1374,7 @@ dottedIdentifierList
|
||||||
|
|
||||||
importOrExport
|
importOrExport
|
||||||
: libraryImport
|
: libraryImport
|
||||||
|
| libraryAugmentImport
|
||||||
| libraryExport
|
| libraryExport
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -1376,6 +1382,10 @@ libraryImport
|
||||||
: metadata importSpecification
|
: metadata importSpecification
|
||||||
;
|
;
|
||||||
|
|
||||||
|
libraryAugmentImport
|
||||||
|
: metadata IMPORT AUGMENT uri ';'
|
||||||
|
;
|
||||||
|
|
||||||
importSpecification
|
importSpecification
|
||||||
: IMPORT configurableUri (DEFERRED? AS typeIdentifier)? combinator* ';'
|
: IMPORT configurableUri (DEFERRED? AS typeIdentifier)? combinator* ';'
|
||||||
;
|
;
|
||||||
|
@ -1487,8 +1497,8 @@ typeNotVoidNotFunctionList
|
||||||
;
|
;
|
||||||
|
|
||||||
typeAlias
|
typeAlias
|
||||||
: TYPEDEF typeIdentifier typeParameters? '=' type ';'
|
: AUGMENT? TYPEDEF typeIdentifier typeParameters? '=' type ';'
|
||||||
| TYPEDEF functionTypeAlias
|
| AUGMENT? TYPEDEF functionTypeAlias
|
||||||
;
|
;
|
||||||
|
|
||||||
functionTypeAlias
|
functionTypeAlias
|
||||||
|
@ -1647,6 +1657,7 @@ builtInIdentifier
|
||||||
|
|
||||||
otherIdentifierNotType
|
otherIdentifierNotType
|
||||||
: ASYNC
|
: ASYNC
|
||||||
|
| AUGMENT
|
||||||
| BASE
|
| BASE
|
||||||
| HIDE
|
| HIDE
|
||||||
| OF
|
| OF
|
||||||
|
@ -1931,6 +1942,10 @@ ASYNC
|
||||||
: 'async'
|
: 'async'
|
||||||
;
|
;
|
||||||
|
|
||||||
|
AUGMENT
|
||||||
|
: 'augment'
|
||||||
|
;
|
||||||
|
|
||||||
BASE
|
BASE
|
||||||
: 'base'
|
: 'base'
|
||||||
;
|
;
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
// CHANGES:
|
// CHANGES:
|
||||||
//
|
//
|
||||||
|
// v0.41 Include support for augmentation libraries.
|
||||||
|
//
|
||||||
// v0.40 Include latest changes to mixin related class modifiers.
|
// v0.40 Include latest changes to mixin related class modifiers.
|
||||||
//
|
//
|
||||||
// v0.39 Translate actions from Java to Dart.
|
// v0.39 Translate actions from Java to Dart.
|
||||||
|
@ -272,13 +274,12 @@ topLevelDefinition
|
||||||
| EXTERNAL getterSignature ';'
|
| EXTERNAL getterSignature ';'
|
||||||
| EXTERNAL setterSignature ';'
|
| EXTERNAL setterSignature ';'
|
||||||
| EXTERNAL finalVarOrType identifierList ';'
|
| EXTERNAL finalVarOrType identifierList ';'
|
||||||
| getterSignature functionBody
|
| AUGMENT? getterSignature functionBody
|
||||||
| setterSignature functionBody
|
| AUGMENT? setterSignature functionBody
|
||||||
| functionSignature functionBody
|
| AUGMENT? functionSignature functionBody
|
||||||
| (FINAL | CONST) type? staticFinalDeclarationList ';'
|
| AUGMENT? (FINAL | CONST) type? staticFinalDeclarationList ';'
|
||||||
| LATE FINAL type? initializedIdentifierList ';'
|
| AUGMENT? LATE FINAL type? initializedIdentifierList ';'
|
||||||
| LATE? varOrType identifier ('=' expression)?
|
| AUGMENT? LATE? varOrType initializedIdentifierList ';'
|
||||||
(',' initializedIdentifier)* ';'
|
|
||||||
;
|
;
|
||||||
|
|
||||||
declaredIdentifier
|
declaredIdentifier
|
||||||
|
@ -397,7 +398,7 @@ typeWithParameters
|
||||||
;
|
;
|
||||||
|
|
||||||
classDeclaration
|
classDeclaration
|
||||||
: (classModifiers | mixinClassModifiers)
|
: AUGMENT? (classModifiers | mixinClassModifiers)
|
||||||
CLASS typeWithParameters superclass? interfaces?
|
CLASS typeWithParameters superclass? interfaces?
|
||||||
LBRACE (metadata classMemberDeclaration)* RBRACE
|
LBRACE (metadata classMemberDeclaration)* RBRACE
|
||||||
| classModifiers MIXIN? CLASS mixinApplicationClass
|
| classModifiers MIXIN? CLASS mixinApplicationClass
|
||||||
|
@ -426,7 +427,7 @@ interfaces
|
||||||
;
|
;
|
||||||
|
|
||||||
classMemberDeclaration
|
classMemberDeclaration
|
||||||
: methodSignature functionBody
|
: AUGMENT? methodSignature functionBody
|
||||||
| declaration ';'
|
| declaration ';'
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -435,7 +436,7 @@ mixinApplicationClass
|
||||||
;
|
;
|
||||||
|
|
||||||
mixinDeclaration
|
mixinDeclaration
|
||||||
: BASE? MIXIN typeIdentifier typeParameters?
|
: AUGMENT? BASE? MIXIN typeWithParameters
|
||||||
(ON typeNotVoidNotFunctionList)? interfaces?
|
(ON typeNotVoidNotFunctionList)? interfaces?
|
||||||
LBRACE (metadata mixinMemberDeclaration)* RBRACE
|
LBRACE (metadata mixinMemberDeclaration)* RBRACE
|
||||||
;
|
;
|
||||||
|
@ -446,9 +447,8 @@ mixinMemberDeclaration
|
||||||
;
|
;
|
||||||
|
|
||||||
extensionTypeDeclaration
|
extensionTypeDeclaration
|
||||||
: EXTENSION TYPE CONST? typeWithParameters
|
: AUGMENT? EXTENSION TYPE CONST? typeWithParameters
|
||||||
representationDeclaration
|
representationDeclaration interfaces?
|
||||||
interfaces?
|
|
||||||
LBRACE (metadata extensionTypeMemberDeclaration)* RBRACE
|
LBRACE (metadata extensionTypeMemberDeclaration)* RBRACE
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -463,12 +463,12 @@ extensionTypeMemberDeclaration
|
||||||
;
|
;
|
||||||
|
|
||||||
extensionDeclaration
|
extensionDeclaration
|
||||||
: EXTENSION typeIdentifierNotType? typeParameters? ON type
|
: AUGMENT? EXTENSION typeIdentifierNotType? typeParameters? ON type
|
||||||
LBRACE (metadata extensionMemberDefinition)* RBRACE
|
LBRACE (metadata extensionMemberDeclaration)* RBRACE
|
||||||
;
|
;
|
||||||
|
|
||||||
// TODO: We might want to make this more strict.
|
// TODO: We might want to make this more strict.
|
||||||
extensionMemberDefinition
|
extensionMemberDeclaration
|
||||||
: classMemberDeclaration
|
: classMemberDeclaration
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -490,17 +490,17 @@ declaration
|
||||||
| (EXTERNAL STATIC?)? setterSignature
|
| (EXTERNAL STATIC?)? setterSignature
|
||||||
| (EXTERNAL STATIC?)? functionSignature
|
| (EXTERNAL STATIC?)? functionSignature
|
||||||
| EXTERNAL (STATIC? finalVarOrType | COVARIANT varOrType) identifierList
|
| EXTERNAL (STATIC? finalVarOrType | COVARIANT varOrType) identifierList
|
||||||
| ABSTRACT (finalVarOrType | COVARIANT varOrType) identifierList
|
|
||||||
| EXTERNAL? operatorSignature
|
| EXTERNAL? operatorSignature
|
||||||
| STATIC (FINAL | CONST) type? staticFinalDeclarationList
|
| ABSTRACT (finalVarOrType | COVARIANT varOrType) identifierList
|
||||||
| STATIC LATE FINAL type? initializedIdentifierList
|
| AUGMENT? STATIC (FINAL | CONST) type? staticFinalDeclarationList
|
||||||
| STATIC LATE? varOrType initializedIdentifierList
|
| AUGMENT? STATIC LATE FINAL type? initializedIdentifierList
|
||||||
| COVARIANT LATE FINAL type? identifierList
|
| AUGMENT? STATIC LATE? varOrType initializedIdentifierList
|
||||||
| COVARIANT LATE? varOrType initializedIdentifierList
|
| AUGMENT? COVARIANT LATE FINAL type? identifierList
|
||||||
| LATE? (FINAL type? | varOrType) initializedIdentifierList
|
| AUGMENT? COVARIANT LATE? varOrType initializedIdentifierList
|
||||||
| redirectingFactoryConstructorSignature
|
| AUGMENT? LATE? (FINAL type? | varOrType) initializedIdentifierList
|
||||||
| constantConstructorSignature (redirection | initializers)?
|
| AUGMENT? redirectingFactoryConstructorSignature
|
||||||
| constructorSignature (redirection | initializers)?
|
| AUGMENT? constantConstructorSignature (redirection | initializers)?
|
||||||
|
| AUGMENT? constructorSignature (redirection | initializers)?
|
||||||
;
|
;
|
||||||
|
|
||||||
staticFinalDeclarationList
|
staticFinalDeclarationList
|
||||||
|
@ -597,7 +597,7 @@ mixinApplication
|
||||||
;
|
;
|
||||||
|
|
||||||
enumType
|
enumType
|
||||||
: ENUM typeIdentifier typeParameters? mixins? interfaces? LBRACE
|
: AUGMENT? ENUM typeWithParameters mixins? interfaces? LBRACE
|
||||||
enumEntry (',' enumEntry)* (',')?
|
enumEntry (',' enumEntry)* (',')?
|
||||||
(';' (metadata classMemberDeclaration)*)?
|
(';' (metadata classMemberDeclaration)*)?
|
||||||
RBRACE
|
RBRACE
|
||||||
|
@ -1366,7 +1366,12 @@ assertion
|
||||||
;
|
;
|
||||||
|
|
||||||
libraryName
|
libraryName
|
||||||
: metadata LIBRARY dottedIdentifierList? ';'
|
: metadata libraryNameBody ';'
|
||||||
|
;
|
||||||
|
|
||||||
|
libraryNameBody
|
||||||
|
: LIBRARY dottedIdentifierList?
|
||||||
|
| AUGMENT LIBRARY uri
|
||||||
;
|
;
|
||||||
|
|
||||||
dottedIdentifierList
|
dottedIdentifierList
|
||||||
|
@ -1375,6 +1380,7 @@ dottedIdentifierList
|
||||||
|
|
||||||
importOrExport
|
importOrExport
|
||||||
: libraryImport
|
: libraryImport
|
||||||
|
| libraryAugmentImport
|
||||||
| libraryExport
|
| libraryExport
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -1382,6 +1388,10 @@ libraryImport
|
||||||
: metadata importSpecification
|
: metadata importSpecification
|
||||||
;
|
;
|
||||||
|
|
||||||
|
libraryAugmentImport
|
||||||
|
: metadata IMPORT AUGMENT uri ';'
|
||||||
|
;
|
||||||
|
|
||||||
importSpecification
|
importSpecification
|
||||||
: IMPORT configurableUri (DEFERRED? AS typeIdentifier)? combinator* ';'
|
: IMPORT configurableUri (DEFERRED? AS typeIdentifier)? combinator* ';'
|
||||||
;
|
;
|
||||||
|
@ -1493,8 +1503,8 @@ typeNotVoidNotFunctionList
|
||||||
;
|
;
|
||||||
|
|
||||||
typeAlias
|
typeAlias
|
||||||
: TYPEDEF typeIdentifier typeParameters? '=' type ';'
|
: AUGMENT? TYPEDEF typeWithParameters '=' type ';'
|
||||||
| TYPEDEF functionTypeAlias
|
| AUGMENT? TYPEDEF functionTypeAlias
|
||||||
;
|
;
|
||||||
|
|
||||||
functionTypeAlias
|
functionTypeAlias
|
||||||
|
@ -1653,6 +1663,7 @@ builtInIdentifier
|
||||||
|
|
||||||
otherIdentifierNotType
|
otherIdentifierNotType
|
||||||
: ASYNC
|
: ASYNC
|
||||||
|
| AUGMENT
|
||||||
| BASE
|
| BASE
|
||||||
| HIDE
|
| HIDE
|
||||||
| OF
|
| OF
|
||||||
|
@ -1937,6 +1948,10 @@ ASYNC
|
||||||
: 'async'
|
: 'async'
|
||||||
;
|
;
|
||||||
|
|
||||||
|
AUGMENT
|
||||||
|
: 'augment'
|
||||||
|
;
|
||||||
|
|
||||||
BASE
|
BASE
|
||||||
: 'base'
|
: 'base'
|
||||||
;
|
;
|
||||||
|
|
Loading…
Reference in a new issue