| OLD | NEW |
| 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; |
| (...skipping 3319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3330 UnnamedMixinApplicationElementX( | 3330 UnnamedMixinApplicationElementX( |
| 3331 String name, ClassElement subclass, int id, this.node) | 3331 String name, ClassElement subclass, int id, this.node) |
| 3332 : this.subclass = subclass, | 3332 : this.subclass = subclass, |
| 3333 super(name, subclass.compilationUnit, id); | 3333 super(name, subclass.compilationUnit, id); |
| 3334 | 3334 |
| 3335 bool get isUnnamedMixinApplication => true; | 3335 bool get isUnnamedMixinApplication => true; |
| 3336 | 3336 |
| 3337 bool get isAbstract => true; | 3337 bool get isAbstract => true; |
| 3338 } | 3338 } |
| 3339 | 3339 |
| 3340 class LabelDefinitionX implements LabelDefinition<Node> { | 3340 class LabelDefinitionX extends LabelDefinition<Node> { |
| 3341 final Label label; | 3341 final Label label; |
| 3342 final String labelName; | 3342 final String labelName; |
| 3343 final JumpTargetX target; | 3343 final JumpTargetX target; |
| 3344 bool isBreakTarget = false; | 3344 bool isBreakTarget = false; |
| 3345 bool isContinueTarget = false; | 3345 bool isContinueTarget = false; |
| 3346 | 3346 |
| 3347 LabelDefinitionX(Label label, String labelName, this.target) | 3347 LabelDefinitionX(Label label, String labelName, this.target) |
| 3348 : this.label = label, | 3348 : this.label = label, |
| 3349 this.labelName = labelName; | 3349 this.labelName = labelName; |
| 3350 | 3350 |
| 3351 // In case of a synthetic label, just use [labelName] for identifying the | 3351 // In case of a synthetic label, just use [labelName] for identifying the |
| 3352 // label. | 3352 // label. |
| 3353 String get name => label == null ? labelName : label.identifier.source; | 3353 String get name => label == null ? labelName : label.identifier.source; |
| 3354 | 3354 |
| 3355 void setBreakTarget() { | 3355 void setBreakTarget() { |
| 3356 isBreakTarget = true; | 3356 isBreakTarget = true; |
| 3357 target.isBreakTarget = true; | 3357 target.isBreakTarget = true; |
| 3358 } | 3358 } |
| 3359 | 3359 |
| 3360 void setContinueTarget() { | 3360 void setContinueTarget() { |
| 3361 isContinueTarget = true; | 3361 isContinueTarget = true; |
| 3362 target.isContinueTarget = true; | 3362 target.isContinueTarget = true; |
| 3363 } | 3363 } |
| 3364 | 3364 |
| 3365 bool get isTarget => isBreakTarget || isContinueTarget; | |
| 3366 | |
| 3367 String toString() => 'Label:${name}'; | 3365 String toString() => 'Label:${name}'; |
| 3368 } | 3366 } |
| 3369 | 3367 |
| 3370 class JumpTargetX implements JumpTarget<Node> { | 3368 class JumpTargetX extends JumpTarget<Node> { |
| 3371 final ExecutableElement executableContext; | 3369 final ExecutableElement executableContext; |
| 3372 final Node statement; | 3370 final Node statement; |
| 3373 final int nestingLevel; | 3371 final int nestingLevel; |
| 3374 List<LabelDefinition<Node>> labels = <LabelDefinition<Node>>[]; | 3372 List<LabelDefinition<Node>> labels = <LabelDefinition<Node>>[]; |
| 3375 bool isBreakTarget = false; | 3373 bool isBreakTarget = false; |
| 3376 bool isContinueTarget = false; | 3374 bool isContinueTarget = false; |
| 3377 | 3375 |
| 3378 final int hashCode = ElementX.newHashCode(); | 3376 final int hashCode = ElementX.newHashCode(); |
| 3379 | 3377 |
| 3380 JumpTargetX(this.statement, this.nestingLevel, this.executableContext); | 3378 JumpTargetX(this.statement, this.nestingLevel, this.executableContext); |
| 3381 | 3379 |
| 3382 @override | 3380 @override |
| 3383 MemberElement get memberContext => executableContext.memberContext; | 3381 MemberElement get memberContext => executableContext.memberContext; |
| 3384 | 3382 |
| 3385 String get name => "target"; | |
| 3386 | |
| 3387 bool get isTarget => isBreakTarget || isContinueTarget; | |
| 3388 | |
| 3389 LabelDefinition<Node> addLabel(Label label, String labelName, | 3383 LabelDefinition<Node> addLabel(Label label, String labelName, |
| 3390 {bool isBreakTarget: false}) { | 3384 {bool isBreakTarget: false}) { |
| 3391 LabelDefinitionX result = new LabelDefinitionX(label, labelName, this); | 3385 LabelDefinitionX result = new LabelDefinitionX(label, labelName, this); |
| 3392 labels.add(result); | 3386 labels.add(result); |
| 3393 if (isBreakTarget) { | 3387 if (isBreakTarget) { |
| 3394 result.setBreakTarget(); | 3388 result.setBreakTarget(); |
| 3395 } | 3389 } |
| 3396 return result; | 3390 return result; |
| 3397 } | 3391 } |
| 3398 | 3392 |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3579 body = node.asFunctionExpression().body; | 3573 body = node.asFunctionExpression().body; |
| 3580 } | 3574 } |
| 3581 return new ParsedResolvedAst( | 3575 return new ParsedResolvedAst( |
| 3582 declaration, | 3576 declaration, |
| 3583 node, | 3577 node, |
| 3584 body, | 3578 body, |
| 3585 definingElement.treeElements, | 3579 definingElement.treeElements, |
| 3586 definingElement.compilationUnit.script.resourceUri); | 3580 definingElement.compilationUnit.script.resourceUri); |
| 3587 } | 3581 } |
| 3588 } | 3582 } |
| OLD | NEW |