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

Side by Side Diff: pkg/compiler/lib/src/elements/modelx.dart

Issue 2930293002: Parameterize and move JumpTarget/LabelDefition to elements/jumps.dart (Closed)
Patch Set: Fix Created 3 years, 6 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
« no previous file with comments | « pkg/compiler/lib/src/elements/jumps.dart ('k') | pkg/compiler/lib/src/inferrer/builder.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 elements.modelx; 5 library elements.modelx;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common/names.dart' show Identifiers; 8 import '../common/names.dart' show Identifiers;
9 import '../common/resolution.dart' show Resolution, ParsingContext; 9 import '../common/resolution.dart' show Resolution, ParsingContext;
10 import '../compiler.dart' show Compiler; 10 import '../compiler.dart' show Compiler;
11 import '../constants/constant_constructors.dart'; 11 import '../constants/constant_constructors.dart';
12 import '../constants/constructors.dart'; 12 import '../constants/constructors.dart';
13 import '../constants/expressions.dart'; 13 import '../constants/expressions.dart';
14 import '../diagnostics/messages.dart' show MessageTemplate; 14 import '../diagnostics/messages.dart' show MessageTemplate;
15 import '../ordered_typeset.dart' show OrderedTypeSet; 15 import '../ordered_typeset.dart' show OrderedTypeSet;
16 import '../resolution/class_members.dart' show ClassMemberMixin; 16 import '../resolution/class_members.dart' show ClassMemberMixin;
17 import '../resolution/resolution.dart' show AnalyzableElementX; 17 import '../resolution/resolution.dart' show AnalyzableElementX;
18 import '../resolution/scope.dart' 18 import '../resolution/scope.dart'
19 show ClassScope, LibraryScope, Scope, TypeDeclarationScope; 19 show ClassScope, LibraryScope, Scope, TypeDeclarationScope;
20 import '../resolution/tree_elements.dart' show TreeElements; 20 import '../resolution/tree_elements.dart' show TreeElements;
21 import '../resolution/typedefs.dart' show TypedefCyclicVisitor; 21 import '../resolution/typedefs.dart' show TypedefCyclicVisitor;
22 import '../script.dart'; 22 import '../script.dart';
23 import 'package:front_end/src/fasta/scanner.dart' show ErrorToken, Token; 23 import 'package:front_end/src/fasta/scanner.dart' show ErrorToken, Token;
24 import 'package:front_end/src/fasta/scanner.dart' as Tokens show EOF_TOKEN; 24 import 'package:front_end/src/fasta/scanner.dart' as Tokens show EOF_TOKEN;
25 import '../tree/tree.dart'; 25 import '../tree/tree.dart';
26 import '../util/util.dart'; 26 import '../util/util.dart';
27 import 'common.dart'; 27 import 'common.dart';
28 import 'elements.dart'; 28 import 'elements.dart';
29 import 'entities.dart'; 29 import 'entities.dart';
30 import 'jumps.dart';
30 import 'names.dart'; 31 import 'names.dart';
31 import 'resolution_types.dart'; 32 import 'resolution_types.dart';
32 import 'visitor.dart' show ElementVisitor; 33 import 'visitor.dart' show ElementVisitor;
33 34
34 /// Object that identifies a declaration site. 35 /// Object that identifies a declaration site.
35 /// 36 ///
36 /// For most elements, this is the element itself, but for variable declarations 37 /// For most elements, this is the element itself, but for variable declarations
37 /// where multi-declarations like `var a, b, c` are allowed, the declaration 38 /// where multi-declarations like `var a, b, c` are allowed, the declaration
38 /// site is a separate object. 39 /// site is a separate object.
39 // TODO(johnniwinther): Add [beginToken] and [endToken] getters. 40 // TODO(johnniwinther): Add [beginToken] and [endToken] getters.
(...skipping 3229 matching lines...) Expand 10 before | Expand all | Expand 10 after
3269 UnnamedMixinApplicationElementX( 3270 UnnamedMixinApplicationElementX(
3270 String name, ClassElement subclass, int id, this.node) 3271 String name, ClassElement subclass, int id, this.node)
3271 : this.subclass = subclass, 3272 : this.subclass = subclass,
3272 super(name, subclass.compilationUnit, id); 3273 super(name, subclass.compilationUnit, id);
3273 3274
3274 bool get isUnnamedMixinApplication => true; 3275 bool get isUnnamedMixinApplication => true;
3275 3276
3276 bool get isAbstract => true; 3277 bool get isAbstract => true;
3277 } 3278 }
3278 3279
3279 class LabelDefinitionX implements LabelDefinition { 3280 class LabelDefinitionX implements LabelDefinition<Node> {
3280 final Label label; 3281 final Label label;
3281 final String labelName; 3282 final String labelName;
3282 final JumpTarget target; 3283 final JumpTarget<Node> target;
3283 bool isBreakTarget = false; 3284 bool isBreakTarget = false;
3284 bool isContinueTarget = false; 3285 bool isContinueTarget = false;
3285 3286
3286 LabelDefinitionX(Label label, String labelName, this.target) 3287 LabelDefinitionX(Label label, String labelName, this.target)
3287 : this.label = label, 3288 : this.label = label,
3288 this.labelName = labelName; 3289 this.labelName = labelName;
3289 3290
3290 // In case of a synthetic label, just use [labelName] for identifying the 3291 // In case of a synthetic label, just use [labelName] for identifying the
3291 // label. 3292 // label.
3292 String get name => label == null ? labelName : label.identifier.source; 3293 String get name => label == null ? labelName : label.identifier.source;
3293 3294
3294 void setBreakTarget() { 3295 void setBreakTarget() {
3295 isBreakTarget = true; 3296 isBreakTarget = true;
3296 target.isBreakTarget = true; 3297 target.isBreakTarget = true;
3297 } 3298 }
3298 3299
3299 void setContinueTarget() { 3300 void setContinueTarget() {
3300 isContinueTarget = true; 3301 isContinueTarget = true;
3301 target.isContinueTarget = true; 3302 target.isContinueTarget = true;
3302 } 3303 }
3303 3304
3304 bool get isTarget => isBreakTarget || isContinueTarget; 3305 bool get isTarget => isBreakTarget || isContinueTarget;
3305 3306
3306 String toString() => 'Label:${name}'; 3307 String toString() => 'Label:${name}';
3307 } 3308 }
3308 3309
3309 class JumpTargetX implements JumpTarget { 3310 class JumpTargetX implements JumpTarget<Node> {
3310 final ExecutableElement executableContext; 3311 final ExecutableElement executableContext;
3311 final Node statement; 3312 final Node statement;
3312 final int nestingLevel; 3313 final int nestingLevel;
3313 List<LabelDefinition> labels = <LabelDefinition>[]; 3314 List<LabelDefinition<Node>> labels = <LabelDefinition<Node>>[];
3314 bool isBreakTarget = false; 3315 bool isBreakTarget = false;
3315 bool isContinueTarget = false; 3316 bool isContinueTarget = false;
3316 3317
3317 final int hashCode = ElementX.newHashCode(); 3318 final int hashCode = ElementX.newHashCode();
3318 3319
3319 JumpTargetX(this.statement, this.nestingLevel, this.executableContext); 3320 JumpTargetX(this.statement, this.nestingLevel, this.executableContext);
3320 3321
3321 @override 3322 @override
3322 MemberElement get memberContext => executableContext.memberContext; 3323 MemberElement get memberContext => executableContext.memberContext;
3323 3324
3324 String get name => "target"; 3325 String get name => "target";
3325 3326
3326 bool get isTarget => isBreakTarget || isContinueTarget; 3327 bool get isTarget => isBreakTarget || isContinueTarget;
3327 3328
3328 LabelDefinition addLabel(Label label, String labelName) { 3329 LabelDefinition<Node> addLabel(Label label, String labelName) {
3329 LabelDefinition result = new LabelDefinitionX(label, labelName, this); 3330 LabelDefinition<Node> result = new LabelDefinitionX(label, labelName, this);
3330 labels.add(result); 3331 labels.add(result);
3331 return result; 3332 return result;
3332 } 3333 }
3333 3334
3334 bool get isSwitch => statement is SwitchStatement; 3335 bool get isSwitch => statement is SwitchStatement;
3335 3336
3336 String toString() => 'Target:$statement'; 3337 String toString() => 'Target:$statement';
3337 } 3338 }
3338 3339
3339 class TypeVariableElementX extends ElementX 3340 class TypeVariableElementX extends ElementX
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
3514 body = node.asFunctionExpression().body; 3515 body = node.asFunctionExpression().body;
3515 } 3516 }
3516 return new ParsedResolvedAst( 3517 return new ParsedResolvedAst(
3517 declaration, 3518 declaration,
3518 node, 3519 node,
3519 body, 3520 body,
3520 definingElement.treeElements, 3521 definingElement.treeElements,
3521 definingElement.compilationUnit.script.resourceUri); 3522 definingElement.compilationUnit.script.resourceUri);
3522 } 3523 }
3523 } 3524 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/elements/jumps.dart ('k') | pkg/compiler/lib/src/inferrer/builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698