Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1022)

Unified Diff: pkg/compiler/lib/src/parser/element_listener.dart

Issue 2750503012: Re-land "Add support for metadata on type variables to Fasta parser." (with fixes). (Closed)
Patch Set: Fixes Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/test/generated/parser_test.dart ('k') | pkg/compiler/lib/src/parser/member_listener.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/parser/element_listener.dart
diff --git a/pkg/compiler/lib/src/parser/element_listener.dart b/pkg/compiler/lib/src/parser/element_listener.dart
index be504f68da6e122903ec4fa7309d2ce4a9141a7b..faad8521598996f7c319ffd0176355bac684994c 100644
--- a/pkg/compiler/lib/src/parser/element_listener.dart
+++ b/pkg/compiler/lib/src/parser/element_listener.dart
@@ -76,6 +76,9 @@ class ElementListener extends Listener {
LinkBuilder<MetadataAnnotation> metadata =
new LinkBuilder<MetadataAnnotation>();
+ /// Indicates whether the parser is currently accepting a type variable.
+ bool inTypeVariable = false;
+
/// Records a stack of booleans for each member parsed (a stack is used to
/// support nested members which isn't currently possible, but it also serves
/// as a simple way to tell we're currently parsing a member). In this case,
@@ -250,8 +253,13 @@ class ElementListener extends Listener {
if (periodBeforeName != null) {
popNode(); // Discard name.
}
- popNode(); // Discard node (Send or Identifier).
- pushMetadata(new PartialMetadataAnnotation(beginToken, endToken));
+ popNode(); // Discard type parameters
+ popNode(); // Discard identifier
+ // TODO(paulberry,ahe): type variable metadata should not be ignored. See
+ // dartbug.com/5841.
+ if (!inTypeVariable) {
+ pushMetadata(new PartialMetadataAnnotation(beginToken, endToken));
+ }
}
@override
@@ -419,7 +427,13 @@ class ElementListener extends Listener {
}
@override
+ void beginTypeVariable(Token token) {
+ inTypeVariable = true;
+ }
+
+ @override
void endTypeVariable(Token token, Token extendsOrSuper) {
+ inTypeVariable = false;
NominalTypeAnnotation bound = popNode();
Identifier name = popNode();
pushNode(new TypeVariable(name, extendsOrSuper, bound));
« no previous file with comments | « pkg/analyzer/test/generated/parser_test.dart ('k') | pkg/compiler/lib/src/parser/member_listener.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698