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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/scanner/class_element_parser.dart

Issue 155703004: Support parameter metadata. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of scanner; 5 part of scanner;
6 6
7 class ClassElementParser extends PartialParser { 7 class ClassElementParser extends PartialParser {
8 ClassElementParser(Listener listener) : super(listener); 8 ClassElementParser(Listener listener) : super(listener);
9 9
10 Token parseClassBody(Token token) => fullParseClassBody(token); 10 Token parseClassBody(Token token) => fullParseClassBody(token);
(...skipping 25 matching lines...) Expand all
36 36
37 ClassNode parseNode(Compiler compiler) { 37 ClassNode parseNode(Compiler compiler) {
38 if (cachedNode != null) return cachedNode; 38 if (cachedNode != null) return cachedNode;
39 compiler.withCurrentElement(this, () { 39 compiler.withCurrentElement(this, () {
40 compiler.parser.measure(() { 40 compiler.parser.measure(() {
41 MemberListener listener = new MemberListener(compiler, this); 41 MemberListener listener = new MemberListener(compiler, this);
42 Parser parser = new ClassElementParser(listener); 42 Parser parser = new ClassElementParser(listener);
43 Token token = parser.parseTopLevelDeclaration(beginToken); 43 Token token = parser.parseTopLevelDeclaration(beginToken);
44 assert(identical(token, endToken.next)); 44 assert(identical(token, endToken.next));
45 cachedNode = listener.popNode(); 45 cachedNode = listener.popNode();
46 assert(listener.nodes.isEmpty); 46 assert(invariant(beginToken, listener.nodes.isEmpty,
47 message: "Non-empty listener stack: ${listener.nodes}"));
47 }); 48 });
48 compiler.patchParser.measure(() { 49 compiler.patchParser.measure(() {
49 if (isPatched) { 50 if (isPatched) {
50 // TODO(lrn): Perhaps extract functionality so it doesn't 51 // TODO(lrn): Perhaps extract functionality so it doesn't
51 // need compiler. 52 // need compiler.
52 compiler.patchParser.parsePatchClassNode(patch); 53 compiler.patchParser.parsePatchClassNode(patch);
53 } 54 }
54 }); 55 });
55 }); 56 });
56 return cachedNode; 57 return cachedNode;
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 194
194 void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) { 195 void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) {
195 popNode(); // Discard arguments. 196 popNode(); // Discard arguments.
196 if (periodBeforeName != null) { 197 if (periodBeforeName != null) {
197 popNode(); // Discard name. 198 popNode(); // Discard name.
198 } 199 }
199 popNode(); // Discard node (Send or Identifier). 200 popNode(); // Discard node (Send or Identifier).
200 pushMetadata(new PartialMetadataAnnotation(beginToken, endToken)); 201 pushMetadata(new PartialMetadataAnnotation(beginToken, endToken));
201 } 202 }
202 } 203 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698