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

Unified Diff: dart/sdk/lib/_internal/compiler/implementation/scanner/listener.dart

Issue 12184017: MetadataAnnotation should be spannable. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 10 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
Index: dart/sdk/lib/_internal/compiler/implementation/scanner/listener.dart
diff --git a/dart/sdk/lib/_internal/compiler/implementation/scanner/listener.dart b/dart/sdk/lib/_internal/compiler/implementation/scanner/listener.dart
index 289c2c821ef91460cdd74a8db0fb89e2e320880b..cf34f92d77629f17788c6d5628cd31cb2a2ad74f 100644
--- a/dart/sdk/lib/_internal/compiler/implementation/scanner/listener.dart
+++ b/dart/sdk/lib/_internal/compiler/implementation/scanner/listener.dart
@@ -765,7 +765,7 @@ class ElementListener extends Listener {
popNode(); // Discard name.
}
popNode(); // Discard node (Send or Identifier).
- pushMetadata(new PartialMetadataAnnotation(beginToken));
+ pushMetadata(new PartialMetadataAnnotation(beginToken, endToken));
}
void endClassDeclaration(int interfacesCount, Token beginToken,
@@ -2008,10 +2008,19 @@ class PartialTypedefElement extends TypedefElementX {
/// A [MetadataAnnotation] which is constructed on demand.
class PartialMetadataAnnotation extends MetadataAnnotationX {
final Token beginToken;
+ final Token tokenAfterEndToken;
Expression cachedNode;
Constant value;
- PartialMetadataAnnotation(this.beginToken);
+ PartialMetadataAnnotation(this.beginToken, this.tokenAfterEndToken);
+
+ Token get endToken {
+ Token token = beginToken;
+ while (token.kind != EOF_TOKEN) {
+ if (identical(token.next, tokenAfterEndToken)) return token;
+ token = token.next;
+ }
+ }
Node parseNode(DiagnosticListener listener) {
if (cachedNode != null) return cachedNode;

Powered by Google App Engine
This is Rietveld 408576698