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

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

Issue 1238783003: Handle deferred access as pre-step in SemanticSendVisitor. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 5 years, 5 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
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.send_structure; 5 library dart2js.send_structure;
6 6
7 import 'access_semantics.dart'; 7 import 'access_semantics.dart';
8 import 'operators.dart'; 8 import 'operators.dart';
9 import 'semantic_visitor.dart'; 9 import 'semantic_visitor.dart';
10 import '../dart_types.dart'; 10 import '../dart_types.dart';
(...skipping 2286 matching lines...) Expand 10 before | Expand all | Expand 10 after
2297 arg); 2297 arg);
2298 } 2298 }
2299 } 2299 }
2300 throw new SpannableAssertionFailure(node, 2300 throw new SpannableAssertionFailure(node,
2301 "Invalid compound assigment: ${semantics}"); 2301 "Invalid compound assigment: ${semantics}");
2302 } 2302 }
2303 2303
2304 String toString() => 'postfix($operator,$semantics)'; 2304 String toString() => 'postfix($operator,$semantics)';
2305 } 2305 }
2306 2306
2307
2308 /// The structure for a [Send] whose prefix is a prefix for a deferred library.
2309 /// For instance `deferred.a` where `deferred` is a deferred prefix.
2310 class DeferredPrefixStructure<R, A> implements SendStructure<R, A> {
2311 /// The deferred prefix element.
2312 final PrefixElement prefix;
2313
2314 /// The send structure for the whole [Send] node. For instance a
2315 /// [GetStructure] for `deferred.a` where `a` is a top level member of the
2316 /// deferred library.
2317 final SendStructure sendStructure;
2318
2319 DeferredPrefixStructure(this.prefix, this.sendStructure) {
2320 assert(sendStructure != null);
2321 }
2322
2323 @override
2324 R dispatch(SemanticSendVisitor<R, A> visitor, Send send, A arg) {
2325 visitor.previsitDeferredAccess(send, prefix, arg);
2326 return sendStructure.dispatch(visitor, send, arg);
2327 }
2328 }
2329
2330
2307 /// The structure for a [NewExpression] of a new invocation. 2331 /// The structure for a [NewExpression] of a new invocation.
2308 abstract class NewStructure<R, A> implements SemanticSendStructure<R, A> { 2332 abstract class NewStructure<R, A> implements SemanticSendStructure<R, A> {
2309 /// Calls the matching visit method on [visitor] with [node] and [arg]. 2333 /// Calls the matching visit method on [visitor] with [node] and [arg].
2310 R dispatch(SemanticSendVisitor<R, A> visitor, NewExpression node, A arg); 2334 R dispatch(SemanticSendVisitor<R, A> visitor, NewExpression node, A arg);
2311 } 2335 }
2312 2336
2313 /// The structure for a [NewExpression] of a new invocation. For instance 2337 /// The structure for a [NewExpression] of a new invocation. For instance
2314 /// `new C()`. 2338 /// `new C()`.
2315 class NewInvokeStructure<R, A> extends NewStructure<R, A> { 2339 class NewInvokeStructure<R, A> extends NewStructure<R, A> {
2316 final ConstructorAccessSemantics semantics; 2340 final ConstructorAccessSemantics semantics;
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
2630 ThisConstructorInvokeStructure( 2654 ThisConstructorInvokeStructure(
2631 this.node, this.constructor, this.callStructure); 2655 this.node, this.constructor, this.callStructure);
2632 2656
2633 R dispatch(SemanticDeclarationVisitor<R, A> visitor, A arg) { 2657 R dispatch(SemanticDeclarationVisitor<R, A> visitor, A arg) {
2634 return visitor.visitThisConstructorInvoke( 2658 return visitor.visitThisConstructorInvoke(
2635 node, constructor, node.argumentsNode, callStructure, arg); 2659 node, constructor, node.argumentsNode, callStructure, arg);
2636 } 2660 }
2637 2661
2638 bool get isConstructorInvoke => true; 2662 bool get isConstructorInvoke => true;
2639 } 2663 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart ('k') | pkg/compiler/lib/src/resolved_visitor.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698