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

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

Issue 1842033004: Add *IndexSetIfNull methods to SemanticSendVisitor. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 4 years, 8 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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.resolution.members; 5 library dart2js.resolution.members;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common/names.dart' show 8 import '../common/names.dart' show
9 Selectors; 9 Selectors;
10 import '../common/resolution.dart' show 10 import '../common/resolution.dart' show
(...skipping 3196 matching lines...) Expand 10 before | Expand all | Expand 10 after
3207 registry.setSelector(node, setterSelector); 3207 registry.setSelector(node, setterSelector);
3208 registry.setOperatorSelectorInComplexSendSet(node, operatorSelector); 3208 registry.setOperatorSelectorInComplexSendSet(node, operatorSelector);
3209 3209
3210 registry.registerDynamicUse( 3210 registry.registerDynamicUse(
3211 new DynamicUse(getterSelector, null)); 3211 new DynamicUse(getterSelector, null));
3212 registry.registerDynamicUse( 3212 registry.registerDynamicUse(
3213 new DynamicUse(setterSelector, null)); 3213 new DynamicUse(setterSelector, null));
3214 registry.registerDynamicUse( 3214 registry.registerDynamicUse(
3215 new DynamicUse(operatorSelector, null)); 3215 new DynamicUse(operatorSelector, null));
3216 3216
3217 SendStructure sendStructure = 3217 SendStructure sendStructure;
3218 new CompoundIndexSetStructure(semantics, operator); 3218 if (operator.kind == AssignmentOperatorKind.IF_NULL) {
3219 sendStructure = new IndexSetIfNullStructure(semantics);
3220 } else {
3221 sendStructure = new CompoundIndexSetStructure(semantics, operator);
3222 }
3219 registry.registerSendStructure(node, sendStructure); 3223 registry.registerSendStructure(node, sendStructure);
3220 return const NoneResult(); 3224 return const NoneResult();
3221 } 3225 }
3222 } 3226 }
3223 } 3227 }
3224 3228
3225 /// Handle super index operations like `super[a] = b`, `super[a] += b`, and 3229 /// Handle super index operations like `super[a] = b`, `super[a] += b`, and
3226 /// `super[a]++`. 3230 /// `super[a]++`.
3227 // TODO(johnniwinther): Share code with [handleIndexSendSet]. 3231 // TODO(johnniwinther): Share code with [handleIndexSendSet].
3228 ResolutionResult handleSuperIndexSendSet(SendSet node) { 3232 ResolutionResult handleSuperIndexSendSet(SendSet node) {
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
3331 3335
3332 // TODO(23998): Remove these when selectors are only accessed 3336 // TODO(23998): Remove these when selectors are only accessed
3333 // through the send structure. 3337 // through the send structure.
3334 registry.setGetterSelectorInComplexSendSet(node, getterSelector); 3338 registry.setGetterSelectorInComplexSendSet(node, getterSelector);
3335 registry.setSelector(node, setterSelector); 3339 registry.setSelector(node, setterSelector);
3336 registry.setOperatorSelectorInComplexSendSet(node, operatorSelector); 3340 registry.setOperatorSelectorInComplexSendSet(node, operatorSelector);
3337 3341
3338 registry.registerDynamicUse( 3342 registry.registerDynamicUse(
3339 new DynamicUse(operatorSelector, null)); 3343 new DynamicUse(operatorSelector, null));
3340 3344
3341 SendStructure sendStructure = 3345 SendStructure sendStructure;
3342 new CompoundIndexSetStructure(semantics, operator); 3346 if (operator.kind == AssignmentOperatorKind.IF_NULL) {
3347 sendStructure = new IndexSetIfNullStructure(semantics);
3348 } else {
3349 sendStructure = new CompoundIndexSetStructure(semantics, operator);
3350 }
3343 registry.registerSendStructure(node, sendStructure); 3351 registry.registerSendStructure(node, sendStructure);
3344 return const NoneResult(); 3352 return const NoneResult();
3345 } 3353 }
3346 } 3354 }
3347 } 3355 }
3348 3356
3349 /// Handle super index operations like `super.a = b`, `super.a += b`, and 3357 /// Handle super index operations like `super.a = b`, `super.a += b`, and
3350 /// `super.a++`. 3358 /// `super.a++`.
3351 // TODO(johnniwinther): Share code with [handleSuperIndexSendSet]. 3359 // TODO(johnniwinther): Share code with [handleSuperIndexSendSet].
3352 ResolutionResult handleSuperSendSet(SendSet node) { 3360 ResolutionResult handleSuperSendSet(SendSet node) {
(...skipping 1517 matching lines...) Expand 10 before | Expand all | Expand 10 after
4870 } 4878 }
4871 return const NoneResult(); 4879 return const NoneResult();
4872 } 4880 }
4873 } 4881 }
4874 4882
4875 /// Looks up [name] in [scope] and unwraps the result. 4883 /// Looks up [name] in [scope] and unwraps the result.
4876 Element lookupInScope(DiagnosticReporter reporter, Node node, 4884 Element lookupInScope(DiagnosticReporter reporter, Node node,
4877 Scope scope, String name) { 4885 Scope scope, String name) {
4878 return Elements.unwrap(scope.lookup(name), reporter, node); 4886 return Elements.unwrap(scope.lookup(name), reporter, node);
4879 } 4887 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/info/send_info.dart ('k') | pkg/compiler/lib/src/resolution/semantic_visitor.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698