Add support for parts with imports in Dart.g
This CL adds support for having import and export directives in a part
file, following the 'parts with imports' feature proposal. It is
needed at this time because tests are being written where some parts
do have imports and exports, and those tests shouldn't give rise to a
parsing failure.
Change-Id: I70076c7b0bd8795a60983306a8b40e7bc55a863b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/384282
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
diff --git a/tools/spec_parser/Dart.g b/tools/spec_parser/Dart.g
index 17f3952..619b4e8 100644
--- a/tools/spec_parser/Dart.g
+++ b/tools/spec_parser/Dart.g
@@ -4,6 +4,9 @@
// CHANGES:
//
+// v0.46 Rename `libraryDefinition` to `libraryDeclaration`, as in the
+// language specification. Add support for libraries with imports.
+//
// v0.45 Update rule about augmenting extension type declaration to omit
// the primary constructor.
//
@@ -259,11 +262,11 @@
// ---------------------------------------- Grammar rules.
startSymbol
- : libraryDefinition
+ : libraryDeclaration
| partDeclaration
;
-libraryDefinition
+libraryDeclaration
: FEFF? SCRIPT_TAG?
libraryName?
importOrExport*
@@ -1452,7 +1455,11 @@
;
partDeclaration
- : FEFF? partHeader (metadata topLevelDefinition)* EOF
+ : FEFF? partHeader
+ importOrExport*
+ partDirective*
+ (metadata topLevelDefinition)*
+ EOF
;
uri
diff --git a/tools/spec_parser/dart_spec_parser/Dart.g4 b/tools/spec_parser/dart_spec_parser/Dart.g4
index 8ef5593..56070ea 100644
--- a/tools/spec_parser/dart_spec_parser/Dart.g4
+++ b/tools/spec_parser/dart_spec_parser/Dart.g4
@@ -4,6 +4,9 @@
// CHANGES:
//
+// v0.47 Rename `libraryDefinition` to `libraryDeclaration`, as in the
+// language specification. Add support for libraries with imports.
+//
// v0.46 Update rule about augmenting extension type declaration to omit
// the primary constructor.
//
@@ -265,11 +268,11 @@
// ---------------------------------------- Grammar rules.
startSymbol
- : libraryDefinition
+ : libraryDeclaration
| partDeclaration
;
-libraryDefinition
+libraryDeclaration
: FEFF? SCRIPT_TAG?
libraryName?
importOrExport*
@@ -1458,7 +1461,11 @@
;
partDeclaration
- : FEFF? partHeader (metadata topLevelDefinition)* EOF
+ : FEFF? partHeader
+ importOrExport*
+ partDirective*
+ (metadata topLevelDefinition)*
+ EOF
;
uri