| 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;
|
|
|