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

Side by Side Diff: pkg/compiler/lib/src/parser/node_listener.dart

Issue 2535373003: Resolve type arguments to generic methods. (Closed)
Patch Set: Created 4 years 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
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 library dart2js.parser.node_listener; 5 library dart2js.parser.node_listener;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../elements/elements.dart' show CompilationUnitElement; 8 import '../elements/elements.dart' show CompilationUnitElement;
9 import '../native/native.dart' as native; 9 import '../native/native.dart' as native;
10 import '../tokens/precedence_constants.dart' as Precedence show INDEX_INFO; 10 import '../tokens/precedence_constants.dart' as Precedence show INDEX_INFO;
(...skipping 11 matching lines...) Expand all
22 void addLibraryTag(LibraryTag tag) { 22 void addLibraryTag(LibraryTag tag) {
23 pushNode(tag); 23 pushNode(tag);
24 } 24 }
25 25
26 void addPartOfTag(PartOf tag) { 26 void addPartOfTag(PartOf tag) {
27 pushNode(tag); 27 pushNode(tag);
28 } 28 }
29 29
30 void endLibraryName(Token libraryKeyword, Token semicolon) { 30 void endLibraryName(Token libraryKeyword, Token semicolon) {
31 Expression name = popNode(); 31 Expression name = popNode();
32 pushNode(new LibraryName(libraryKeyword, name, 32 pushNode(new LibraryName(
33 // TODO(sigmund): Import AST nodes have pointers to MetadataAnnotation 33 libraryKeyword,
34 // (element) instead of Metatada (node). 34 name,
35 null)); 35 // TODO(sigmund): Import AST nodes have pointers to MetadataAnnotation
36 // (element) instead of Metatada (node).
37 null));
36 } 38 }
37 39
38 void endImport(Token importKeyword, Token deferredKeyword, Token asKeyword, 40 void endImport(Token importKeyword, Token deferredKeyword, Token asKeyword,
39 Token semicolon) { 41 Token semicolon) {
40 NodeList combinators = popNode(); 42 NodeList combinators = popNode();
41 Identifier prefix = asKeyword != null ? popNode() : null; 43 Identifier prefix = asKeyword != null ? popNode() : null;
42 NodeList conditionalUris = popNode(); 44 NodeList conditionalUris = popNode();
43 StringNode uri = popLiteralString(); 45 StringNode uri = popLiteralString();
44 pushNode(new Import(importKeyword, uri, conditionalUris, prefix, 46 pushNode(new Import(
45 combinators, 47 importKeyword,
46 // TODO(sigmund): Import AST nodes have pointers to MetadataAnnotation 48 uri,
47 // (element) instead of Metatada (node). 49 conditionalUris,
48 null, isDeferred: deferredKeyword != null)); 50 prefix,
51 combinators,
52 // TODO(sigmund): Import AST nodes have pointers to MetadataAnnotation
53 // (element) instead of Metatada (node).
54 null,
55 isDeferred: deferredKeyword != null));
49 } 56 }
50 57
51 void endExport(Token exportKeyword, Token semicolon) { 58 void endExport(Token exportKeyword, Token semicolon) {
52 NodeList combinators = popNode(); 59 NodeList combinators = popNode();
53 NodeList conditionalUris = popNode(); 60 NodeList conditionalUris = popNode();
54 StringNode uri = popLiteralString(); 61 StringNode uri = popLiteralString();
55 pushNode(new Export(exportKeyword, uri, conditionalUris, combinators, 62 pushNode(new Export(
56 // TODO(sigmund): Import AST nodes have pointers to MetadataAnnotation 63 exportKeyword,
57 // (element) instead of Metatada (node). 64 uri,
58 null)); 65 conditionalUris,
66 combinators,
67 // TODO(sigmund): Import AST nodes have pointers to MetadataAnnotation
68 // (element) instead of Metatada (node).
69 null));
59 } 70 }
60 71
61 void endPart(Token partKeyword, Token semicolon) { 72 void endPart(Token partKeyword, Token semicolon) {
62 StringNode uri = popLiteralString(); 73 StringNode uri = popLiteralString();
63 pushNode(new Part(partKeyword, uri, 74 pushNode(new Part(
64 // TODO(sigmund): Import AST nodes have pointers to MetadataAnnotation 75 partKeyword,
65 // (element) instead of Metatada (node). 76 uri,
66 null)); 77 // TODO(sigmund): Import AST nodes have pointers to MetadataAnnotation
78 // (element) instead of Metatada (node).
79 null));
67 } 80 }
68 81
69 void endPartOf(Token partKeyword, Token semicolon) { 82 void endPartOf(Token partKeyword, Token semicolon) {
70 Expression name = popNode(); // name 83 Expression name = popNode(); // name
71 pushNode(new PartOf(partKeyword, name, 84 pushNode(new PartOf(
72 // TODO(sigmund): Import AST nodes have pointers to MetadataAnnotation 85 partKeyword,
73 // (element) instead of Metatada (node). 86 name,
74 null)); 87 // TODO(sigmund): Import AST nodes have pointers to MetadataAnnotation
88 // (element) instead of Metatada (node).
89 null));
75 } 90 }
76 91
77 void endClassDeclaration(int interfacesCount, Token beginToken, 92 void endClassDeclaration(int interfacesCount, Token beginToken,
78 Token extendsKeyword, Token implementsKeyword, Token endToken) { 93 Token extendsKeyword, Token implementsKeyword, Token endToken) {
79 NodeList body = popNode(); 94 NodeList body = popNode();
80 NodeList interfaces = 95 NodeList interfaces =
81 makeNodeList(interfacesCount, implementsKeyword, null, ","); 96 makeNodeList(interfacesCount, implementsKeyword, null, ",");
82 Node supertype = popNode(); 97 Node supertype = popNode();
83 NodeList typeParameters = popNode(); 98 NodeList typeParameters = popNode();
84 Identifier name = popNode(); 99 Identifier name = popNode();
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 void handleConditionalExpression(Token question, Token colon) { 373 void handleConditionalExpression(Token question, Token colon) {
359 Node elseExpression = popNode(); 374 Node elseExpression = popNode();
360 Node thenExpression = popNode(); 375 Node thenExpression = popNode();
361 Node condition = popNode(); 376 Node condition = popNode();
362 pushNode(new Conditional( 377 pushNode(new Conditional(
363 condition, thenExpression, elseExpression, question, colon)); 378 condition, thenExpression, elseExpression, question, colon));
364 } 379 }
365 380
366 void endSend(Token token) { 381 void endSend(Token token) {
367 NodeList arguments = popNode(); 382 NodeList arguments = popNode();
368 popNode(); // typeArguments 383 NodeList typeArguments = popNode();
369 Node selector = popNode(); 384 Node selector = popNode();
370 // TODO(ahe): Handle receiver. 385 // TODO(ahe): Handle receiver.
371 pushNode(new Send(null, selector, arguments)); 386 pushNode(new Send(null, selector, arguments, typeArguments));
372 } 387 }
373 388
374 void endFunctionBody(int count, Token beginToken, Token endToken) { 389 void endFunctionBody(int count, Token beginToken, Token endToken) {
375 if (count == 0 && beginToken == null) { 390 if (count == 0 && beginToken == null) {
376 pushNode(new EmptyStatement(endToken)); 391 pushNode(new EmptyStatement(endToken));
377 } else { 392 } else {
378 pushNode(new Block(makeNodeList(count, beginToken, endToken, null))); 393 pushNode(new Block(makeNodeList(count, beginToken, endToken, null)));
379 } 394 }
380 } 395 }
381 396
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 void log(message) { 864 void log(message) {
850 reporter.log(message); 865 reporter.log(message);
851 } 866 }
852 867
853 void internalError({Token token, Node node}) { 868 void internalError({Token token, Node node}) {
854 // TODO(ahe): This should call reporter.internalError. 869 // TODO(ahe): This should call reporter.internalError.
855 Spannable spannable = (token == null) ? node : token; 870 Spannable spannable = (token == null) ? node : token;
856 throw new SpannableAssertionFailure(spannable, 'Internal error in parser.'); 871 throw new SpannableAssertionFailure(spannable, 'Internal error in parser.');
857 } 872 }
858 } 873 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698