| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 analyzer2dart.cps_generator; | 5 library analyzer2dart.cps_generator; |
| 6 | 6 |
| 7 import 'package:analyzer/analyzer.dart'; | 7 import 'package:analyzer/analyzer.dart'; |
| 8 | 8 |
| 9 import 'package:compiler/src/dart_types.dart' as dart2js; | 9 import 'package:compiler/src/dart_types.dart' as dart2js; |
| 10 import 'package:compiler/src/elements/elements.dart' as dart2js; | 10 import 'package:compiler/src/elements/elements.dart' as dart2js; |
| 11 import 'package:analyzer/src/generated/source.dart'; | 11 import 'package:analyzer/src/generated/source.dart'; |
| 12 import 'package:analyzer/src/generated/element.dart' as analyzer; | 12 import 'package:analyzer/src/generated/element.dart' as analyzer; |
| 13 import 'package:sharedfrontend/elements.dart' as shared; |
| 14 import 'package:sharedfrontend/src/access_semantics.dart'; |
| 13 | 15 |
| 14 import 'package:compiler/src/dart2jslib.dart' | 16 import 'package:compiler/src/dart2jslib.dart' |
| 15 show DART_CONSTANT_SYSTEM; | 17 show DART_CONSTANT_SYSTEM; |
| 16 import 'package:compiler/src/cps_ir/cps_ir_nodes.dart' as ir; | 18 import 'package:compiler/src/cps_ir/cps_ir_nodes.dart' as ir; |
| 17 import 'package:compiler/src/cps_ir/cps_ir_builder.dart'; | 19 import 'package:compiler/src/cps_ir/cps_ir_builder.dart'; |
| 18 import 'package:compiler/src/universe/universe.dart'; | 20 import 'package:compiler/src/universe/universe.dart'; |
| 19 | 21 |
| 20 import 'semantic_visitor.dart'; | 22 import 'semantic_visitor.dart'; |
| 21 import 'element_converter.dart'; | 23 import 'element_converter.dart'; |
| 22 import 'util.dart'; | 24 import 'util.dart'; |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 target, | 382 target, |
| 381 new Selector.setter(target.name, target.library), | 383 new Selector.setter(target.name, target.library), |
| 382 build(node.rightHandSide)); | 384 build(node.rightHandSide)); |
| 383 } | 385 } |
| 384 | 386 |
| 385 @override | 387 @override |
| 386 ir.Node visitDynamicAccess(AstNode node, AccessSemantics semantics) { | 388 ir.Node visitDynamicAccess(AstNode node, AccessSemantics semantics) { |
| 387 // TODO(johnniwinther): Handle implicit `this`. | 389 // TODO(johnniwinther): Handle implicit `this`. |
| 388 ir.Primitive receiver = build(semantics.target); | 390 ir.Primitive receiver = build(semantics.target); |
| 389 return irBuilder.buildDynamicGet(receiver, | 391 return irBuilder.buildDynamicGet(receiver, |
| 390 new Selector.getter(semantics.identifier.name, | 392 new Selector.getter(semantics.name, |
| 391 converter.convertElement(element.library))); | 393 converter.convertElement(element.library))); |
| 392 } | 394 } |
| 393 | 395 |
| 394 @override | 396 @override |
| 395 ir.Node visitStaticFieldAccess(AstNode node, AccessSemantics semantics) { | 397 ir.Node visitStaticFieldAccess(AstNode node, AccessSemantics semantics) { |
| 396 analyzer.Element element = semantics.element; | 398 analyzer.Element element = semantics.element; |
| 397 dart2js.Element target = converter.convertElement(element); | 399 dart2js.Element target = converter.convertElement(element); |
| 398 // TODO(johnniwinther): Selector information should be computed in the | 400 // TODO(johnniwinther): Selector information should be computed in the |
| 399 // [TreeShaker] and shared with the [CpsGeneratingVisitor]. | 401 // [TreeShaker] and shared with the [CpsGeneratingVisitor]. |
| 400 assert(invariant(node, target.isTopLevel || target.isStatic, | 402 assert(invariant(node, target.isTopLevel || target.isStatic, |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 513 dart2js.Element variableElement; | 515 dart2js.Element variableElement; |
| 514 Selector variableSelector; | 516 Selector variableSelector; |
| 515 if (node.identifier != null) { | 517 if (node.identifier != null) { |
| 516 AccessSemantics accessSemantics = | 518 AccessSemantics accessSemantics = |
| 517 node.identifier.accept(ACCESS_SEMANTICS_VISITOR); | 519 node.identifier.accept(ACCESS_SEMANTICS_VISITOR); |
| 518 if (accessSemantics.kind == AccessKind.DYNAMIC) { | 520 if (accessSemantics.kind == AccessKind.DYNAMIC) { |
| 519 variableSelector = new Selector.setter( | 521 variableSelector = new Selector.setter( |
| 520 node.identifier.name, converter.convertElement(currentLibrary)); | 522 node.identifier.name, converter.convertElement(currentLibrary)); |
| 521 } else if (accessSemantics.element != null) { | 523 } else if (accessSemantics.element != null) { |
| 522 variableElement = converter.convertElement(accessSemantics.element); | 524 variableElement = converter.convertElement(accessSemantics.element); |
| 525 shared.Element library = accessSemantics.element.library; |
| 523 variableSelector = new Selector.setter( | 526 variableSelector = new Selector.setter( |
| 524 variableElement.name, | 527 variableElement.name, |
| 525 converter.convertElement(accessSemantics.element.library)); | 528 converter.convertElement(library)); |
| 526 } else { | 529 } else { |
| 527 giveUp(node, 'For-in of unresolved variable: $accessSemantics'); | 530 giveUp(node, 'For-in of unresolved variable: $accessSemantics'); |
| 528 } | 531 } |
| 529 } else { | 532 } else { |
| 530 assert(invariant( | 533 assert(invariant( |
| 531 node, node.loopVariable != null, "Loop variable expected")); | 534 node, node.loopVariable != null, "Loop variable expected")); |
| 532 variableElement = converter.convertElement(node.loopVariable.element); | 535 variableElement = converter.convertElement(node.loopVariable.element); |
| 533 buildVariableDeclaration = (IrBuilder builder) { | 536 buildVariableDeclaration = (IrBuilder builder) { |
| 534 builder.declareLocalVariable(variableElement); | 537 builder.declareLocalVariable(variableElement); |
| 535 }; | 538 }; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 556 return irBuilder.buildTypeOperator( | 559 return irBuilder.buildTypeOperator( |
| 557 visit(node.expression), | 560 visit(node.expression), |
| 558 converter.convertType(node.type.type), | 561 converter.convertType(node.type.type), |
| 559 isTypeTest: false); | 562 isTypeTest: false); |
| 560 } | 563 } |
| 561 } | 564 } |
| 562 | 565 |
| 563 class NullCapturedVariableInfo extends DartCapturedVariableInfo { | 566 class NullCapturedVariableInfo extends DartCapturedVariableInfo { |
| 564 Iterable get capturedVariables => const []; | 567 Iterable get capturedVariables => const []; |
| 565 } | 568 } |
| OLD | NEW |