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

Side by Side Diff: pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart

Issue 1130773002: Differentiate between unresolved class and constructor. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 7 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) 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 part of dart2js.semantics_visitor; 5 part of dart2js.semantics_visitor;
6 6
7 /// Interface for bulk handling of a [Node] in a semantic visitor. 7 /// Interface for bulk handling of a [Node] in a semantic visitor.
8 abstract class BulkHandle<R, A> { 8 abstract class BulkHandle<R, A> {
9 /// Handle [node] either regardless of semantics or to report that [node] is 9 /// Handle [node] either regardless of semantics or to report that [node] is
10 /// unhandled. [message] contains a message template for the latter case: 10 /// unhandled. [message] contains a message template for the latter case:
(...skipping 15 matching lines...) Expand all
26 26
27 @override 27 @override
28 R errorInvalidAssert( 28 R errorInvalidAssert(
29 Send node, 29 Send node,
30 NodeList arguments, 30 NodeList arguments,
31 A arg) { 31 A arg) {
32 return bulkHandleError(node, arg); 32 return bulkHandleError(node, arg);
33 } 33 }
34 34
35 @override 35 @override
36 R errorAbstractClassConstructorInvoke(
37 NewExpression node,
38 ConstructorElement element,
39 InterfaceType type,
40 NodeList arguments,
41 CallStructure callStructure,
42 A arg) {
43 return bulkHandleError(node, arg);
44 }
45
46 @override
47 R errorClassTypeLiteralCompound( 36 R errorClassTypeLiteralCompound(
48 Send node, 37 Send node,
49 ConstantExpression constant, 38 ConstantExpression constant,
50 AssignmentOperator operator, 39 AssignmentOperator operator,
51 Node rhs, 40 Node rhs,
52 A arg) { 41 A arg) {
53 return bulkHandleError(node, arg); 42 return bulkHandleError(node, arg);
54 } 43 }
55 44
56 @override 45 @override
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 @override 233 @override
245 R errorLocalFunctionSet( 234 R errorLocalFunctionSet(
246 SendSet node, 235 SendSet node,
247 LocalFunctionElement function, 236 LocalFunctionElement function,
248 Node rhs, 237 Node rhs,
249 A arg) { 238 A arg) {
250 return bulkHandleError(node, arg); 239 return bulkHandleError(node, arg);
251 } 240 }
252 241
253 @override 242 @override
243 R errorNonConstantConstructorInvoke(
244 NewExpression node,
245 Element element,
246 InterfaceType type,
247 NodeList arguments,
248 CallStructure callStructure,
249 A arg) {
250 return bulkHandleError(node, arg);
251 }
252
253 @override
254 R errorStaticFunctionSet( 254 R errorStaticFunctionSet(
255 Send node, 255 Send node,
256 MethodElement function, 256 MethodElement function,
257 Node rhs, 257 Node rhs,
258 A arg) { 258 A arg) {
259 return bulkHandleError(node, arg); 259 return bulkHandleError(node, arg);
260 } 260 }
261 261
262 @override 262 @override
263 R errorStaticGetterSet( 263 R errorStaticGetterSet(
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 R errorUnresolvedCompound( 436 R errorUnresolvedCompound(
437 Send node, 437 Send node,
438 Element element, 438 Element element,
439 AssignmentOperator operator, 439 AssignmentOperator operator,
440 Node rhs, 440 Node rhs,
441 A arg) { 441 A arg) {
442 return bulkHandleError(node, arg); 442 return bulkHandleError(node, arg);
443 } 443 }
444 444
445 @override 445 @override
446 R errorUnresolvedClassConstructorInvoke(
447 NewExpression node,
448 Element element,
449 MalformedType type,
450 NodeList arguments,
451 Selector selector,
452 A arg) {
453 return bulkHandleError(node, arg);
454 }
455
456 @override
457 R errorUnresolvedConstructorInvoke(
458 NewExpression node,
459 Element constructor,
460 DartType type,
461 NodeList arguments,
462 Selector selector,
463 A arg) {
464 return bulkHandleError(node, arg);
465 }
466
467 @override
468 R errorUnresolvedPostfix( 446 R errorUnresolvedPostfix(
469 Send node, 447 Send node,
470 Element element, 448 Element element,
471 IncDecOperator operator, 449 IncDecOperator operator,
472 A arg) { 450 A arg) {
473 return bulkHandleError(node, arg); 451 return bulkHandleError(node, arg);
474 } 452 }
475 453
476 @override 454 @override
477 R errorUnresolvedPrefix( 455 R errorUnresolvedPrefix(
478 Send node, 456 Send node,
479 Element element, 457 Element element,
480 IncDecOperator operator, 458 IncDecOperator operator,
481 A arg) { 459 A arg) {
482 return bulkHandleError(node, arg); 460 return bulkHandleError(node, arg);
483 } 461 }
484 462
485 @override 463 @override
486 R errorUnresolvedRedirectingFactoryConstructorInvoke(
487 NewExpression node,
488 ConstructorElement constructor,
489 InterfaceType type,
490 NodeList arguments,
491 Selector selector,
492 A arg) {
493 return bulkHandleError(node, arg);
494 }
495
496 @override
497 R errorUnresolvedSet( 464 R errorUnresolvedSet(
498 Send node, 465 Send node,
499 Element element, 466 Element element,
500 Node rhs, 467 Node rhs,
501 A arg) { 468 A arg) {
502 return bulkHandleError(node, arg); 469 return bulkHandleError(node, arg);
503 } 470 }
504 471
505 @override 472 @override
506 R errorUnresolvedSuperCompoundIndexSet( 473 R errorUnresolvedSuperCompoundIndexSet(
(...skipping 1828 matching lines...) Expand 10 before | Expand all | Expand 10 after
2335 2302
2336 abstract class NewBulkMixin<R, A> 2303 abstract class NewBulkMixin<R, A>
2337 implements SemanticSendVisitor<R, A>, BulkHandle<R, A> { 2304 implements SemanticSendVisitor<R, A>, BulkHandle<R, A> {
2338 2305
2339 R bulkHandleNew(NewExpression node, A arg) { 2306 R bulkHandleNew(NewExpression node, A arg) {
2340 return bulkHandleNode( 2307 return bulkHandleNode(
2341 node, "Constructor invocation `#` unhandled.", arg); 2308 node, "Constructor invocation `#` unhandled.", arg);
2342 } 2309 }
2343 2310
2344 @override 2311 @override
2312 R visitAbstractClassConstructorInvoke(
2313 NewExpression node,
2314 ConstructorElement element,
2315 InterfaceType type,
2316 NodeList arguments,
2317 CallStructure callStructure,
2318 A arg) {
2319 return bulkHandleNew(node, arg);
2320 }
2321
2322 @override
2345 R visitConstConstructorInvoke( 2323 R visitConstConstructorInvoke(
2346 NewExpression node, 2324 NewExpression node,
2347 ConstructedConstantExpression constant, 2325 ConstructedConstantExpression constant,
2348 A arg) { 2326 A arg) {
2349 return bulkHandleNew(node, arg); 2327 return bulkHandleNew(node, arg);
2350 } 2328 }
2351 2329
2352 R visitGenerativeConstructorInvoke( 2330 R visitGenerativeConstructorInvoke(
2353 NewExpression node, 2331 NewExpression node,
2354 ConstructorElement constructor, 2332 ConstructorElement constructor,
(...skipping 28 matching lines...) Expand all
2383 NewExpression node, 2361 NewExpression node,
2384 ConstructorElement constructor, 2362 ConstructorElement constructor,
2385 InterfaceType type, 2363 InterfaceType type,
2386 ConstructorElement effectiveTarget, 2364 ConstructorElement effectiveTarget,
2387 InterfaceType effectiveTargetType, 2365 InterfaceType effectiveTargetType,
2388 NodeList arguments, 2366 NodeList arguments,
2389 CallStructure callStructure, 2367 CallStructure callStructure,
2390 A arg) { 2368 A arg) {
2391 return bulkHandleNew(node, arg); 2369 return bulkHandleNew(node, arg);
2392 } 2370 }
2371
2372 @override
2373 R visitUnresolvedClassConstructorInvoke(
2374 NewExpression node,
2375 Element element,
2376 DartType type,
2377 NodeList arguments,
2378 Selector selector,
2379 A arg) {
2380 return bulkHandleNew(node, arg);
2381 }
2382
2383 @override
2384 R visitUnresolvedConstructorInvoke(
2385 NewExpression node,
2386 Element constructor,
2387 DartType type,
2388 NodeList arguments,
2389 Selector selector,
2390 A arg) {
2391 return bulkHandleNew(node, arg);
2392 }
2393
2394 @override
2395 R visitUnresolvedRedirectingFactoryConstructorInvoke(
2396 NewExpression node,
2397 ConstructorElement constructor,
2398 InterfaceType type,
2399 NodeList arguments,
2400 CallStructure callStructure,
2401 A arg) {
2402 return bulkHandleNew(node, arg);
2403 }
2393 } 2404 }
2394 2405
2395 /// Visitor that implements [SemanticSendVisitor] by the use of `BulkX` mixins. 2406 /// Visitor that implements [SemanticSendVisitor] by the use of `BulkX` mixins.
2396 /// 2407 ///
2397 /// This class is useful in itself, but shows how to use the `BulkX` mixins and 2408 /// This class is useful in itself, but shows how to use the `BulkX` mixins and
2398 /// tests that the union of the `BulkX` mixins implement all `visit` and `error` 2409 /// tests that the union of the `BulkX` mixins implement all `visit` and `error`
2399 /// methods of [SemanticSendVisitor]. 2410 /// methods of [SemanticSendVisitor].
2400 class BulkSendVisitor<R, A> extends SemanticSendVisitor<R, A> 2411 class BulkSendVisitor<R, A> extends SemanticSendVisitor<R, A>
2401 with GetBulkMixin<R, A>, 2412 with GetBulkMixin<R, A>,
2402 SetBulkMixin<R, A>, 2413 SetBulkMixin<R, A>,
(...skipping 2388 matching lines...) Expand 10 before | Expand all | Expand 10 after
4791 } 4802 }
4792 4803
4793 R visitConstConstructorInvoke( 4804 R visitConstConstructorInvoke(
4794 NewExpression node, 4805 NewExpression node,
4795 ConstructedConstantExpression constant, 4806 ConstructedConstantExpression constant,
4796 A arg) { 4807 A arg) {
4797 return null; 4808 return null;
4798 } 4809 }
4799 4810
4800 @override 4811 @override
4801 R errorUnresolvedClassConstructorInvoke( 4812 R visitUnresolvedClassConstructorInvoke(
4802 NewExpression node, 4813 NewExpression node,
4803 Element constructor, 4814 Element constructor,
4804 MalformedType type, 4815 DartType type,
4805 NodeList arguments, 4816 NodeList arguments,
4806 Selector selector, 4817 Selector selector,
4807 A arg) { 4818 A arg) {
4808 apply(arguments, arg); 4819 apply(arguments, arg);
4809 return null; 4820 return null;
4810 } 4821 }
4811 4822
4812 @override 4823 @override
4813 R errorUnresolvedConstructorInvoke( 4824 R visitUnresolvedConstructorInvoke(
4814 NewExpression node, 4825 NewExpression node,
4815 Element constructor, 4826 Element constructor,
4816 DartType type, 4827 DartType type,
4817 NodeList arguments, 4828 NodeList arguments,
4818 Selector selector, 4829 Selector selector,
4819 A arg) { 4830 A arg) {
4820 apply(arguments, arg); 4831 apply(arguments, arg);
4821 return null; 4832 return null;
4822 } 4833 }
4823 4834
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
4865 ConstructorElement constructor, 4876 ConstructorElement constructor,
4866 InterfaceType type, 4877 InterfaceType type,
4867 NodeList arguments, 4878 NodeList arguments,
4868 CallStructure callStructure, 4879 CallStructure callStructure,
4869 A arg) { 4880 A arg) {
4870 apply(arguments, arg); 4881 apply(arguments, arg);
4871 return null; 4882 return null;
4872 } 4883 }
4873 4884
4874 @override 4885 @override
4875 R errorAbstractClassConstructorInvoke( 4886 R visitAbstractClassConstructorInvoke(
4876 NewExpression node, 4887 NewExpression node,
4877 ConstructorElement element, 4888 ConstructorElement element,
4878 InterfaceType type, 4889 InterfaceType type,
4879 NodeList arguments, 4890 NodeList arguments,
4880 CallStructure callStructure, 4891 CallStructure callStructure,
4881 A arg) { 4892 A arg) {
4882 apply(arguments, arg); 4893 apply(arguments, arg);
4883 return null; 4894 return null;
4884 } 4895 }
4885 4896
4886 @override 4897 @override
4887 R errorUnresolvedRedirectingFactoryConstructorInvoke( 4898 R visitUnresolvedRedirectingFactoryConstructorInvoke(
4888 NewExpression node, 4899 NewExpression node,
4889 ConstructorElement constructor, 4900 ConstructorElement constructor,
4890 InterfaceType type, 4901 InterfaceType type,
4891 NodeList arguments, 4902 NodeList arguments,
4892 Selector selector, 4903 CallStructure callStructure,
4893 A arg) { 4904 A arg) {
4894 apply(arguments, arg); 4905 apply(arguments, arg);
4895 return null; 4906 return null;
4907 }
4908
4909 @override
4910 R errorNonConstantConstructorInvoke(
4911 NewExpression node,
4912 Element element,
4913 InterfaceType type,
4914 NodeList arguments,
4915 CallStructure callStructure,
4916 A arg) {
4917 apply(arguments, arg);
4918 return null;
4896 } 4919 }
4897 } 4920 }
4898 4921
4899 /// [SemanticDeclarationVisitor] that visits subnodes. 4922 /// [SemanticDeclarationVisitor] that visits subnodes.
4900 class TraversalDeclarationMixin<R, A> 4923 class TraversalDeclarationMixin<R, A>
4901 implements SemanticDeclarationVisitor<R, A> { 4924 implements SemanticDeclarationVisitor<R, A> {
4902 @override 4925 @override
4903 R apply(Node node, A arg) { 4926 R apply(Node node, A arg) {
4904 throw new UnimplementedError("TraversalMixin.apply unimplemented"); 4927 throw new UnimplementedError("TraversalMixin.apply unimplemented");
4905 } 4928 }
(...skipping 1683 matching lines...) Expand 10 before | Expand all | Expand 10 after
6589 ConstructorElement constructor, 6612 ConstructorElement constructor,
6590 InterfaceType type, 6613 InterfaceType type,
6591 ConstructorElement effectiveTarget, 6614 ConstructorElement effectiveTarget,
6592 InterfaceType effectiveTargetType, 6615 InterfaceType effectiveTargetType,
6593 NodeList arguments, 6616 NodeList arguments,
6594 CallStructure callStructure, 6617 CallStructure callStructure,
6595 A arg) { 6618 A arg) {
6596 return handleConstructorInvoke( 6619 return handleConstructorInvoke(
6597 node, constructor, type, arguments, callStructure, arg); 6620 node, constructor, type, arguments, callStructure, arg);
6598 } 6621 }
6622
6623 R visitUnresolvedConstructorInvoke(
6624 NewExpression node,
6625 Element constructor,
6626 DartType type,
6627 NodeList arguments,
6628 Selector selector,
6629 A arg) {
6630 return handleConstructorInvoke(
6631 node, constructor, type, arguments, selector.callStructure, arg);
6632 }
6633
6634 R visitUnresolvedClassConstructorInvoke(
6635 NewExpression node,
6636 Element element,
6637 DartType type,
6638 NodeList arguments,
6639 Selector selector,
6640 A arg) {
6641 return handleConstructorInvoke(
6642 node, element, type, arguments, selector.callStructure, arg);
6643 }
6644
6645 R visitAbstractClassConstructorInvoke(
6646 NewExpression node,
6647 ConstructorElement constructor,
6648 InterfaceType type,
6649 NodeList arguments,
6650 CallStructure callStructure,
6651 A arg) {
6652 return handleConstructorInvoke(
6653 node, constructor, type, arguments, callStructure, arg);
6654 }
6655 R visitUnresolvedRedirectingFactoryConstructorInvoke(
6656 NewExpression node,
6657 ConstructorElement constructor,
6658 InterfaceType type,
6659 NodeList arguments,
6660 CallStructure callStructure,
6661 A arg) {
6662 return handleConstructorInvoke(
6663 node, constructor, type, arguments, callStructure, arg);
6664 }
6599 } 6665 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/semantic_visitor.dart ('k') | pkg/compiler/lib/src/resolution/send_resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698