| 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'; | |
| 15 | 13 |
| 16 import 'package:compiler/src/dart2jslib.dart' | 14 import 'package:compiler/src/dart2jslib.dart' |
| 17 show DART_CONSTANT_SYSTEM; | 15 show DART_CONSTANT_SYSTEM; |
| 18 import 'package:compiler/src/cps_ir/cps_ir_nodes.dart' as ir; | 16 import 'package:compiler/src/cps_ir/cps_ir_nodes.dart' as ir; |
| 19 import 'package:compiler/src/cps_ir/cps_ir_builder.dart'; | 17 import 'package:compiler/src/cps_ir/cps_ir_builder.dart'; |
| 20 import 'package:compiler/src/universe/universe.dart'; | 18 import 'package:compiler/src/universe/universe.dart'; |
| 21 | 19 |
| 22 import 'semantic_visitor.dart'; | 20 import 'semantic_visitor.dart'; |
| 23 import 'element_converter.dart'; | 21 import 'element_converter.dart'; |
| 24 import 'util.dart'; | 22 import 'util.dart'; |
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 target, | 393 target, |
| 396 new Selector.setter(target.name, target.library), | 394 new Selector.setter(target.name, target.library), |
| 397 build(node.rightHandSide)); | 395 build(node.rightHandSide)); |
| 398 } | 396 } |
| 399 | 397 |
| 400 @override | 398 @override |
| 401 ir.Node visitDynamicAccess(AstNode node, AccessSemantics semantics) { | 399 ir.Node visitDynamicAccess(AstNode node, AccessSemantics semantics) { |
| 402 // TODO(johnniwinther): Handle implicit `this`. | 400 // TODO(johnniwinther): Handle implicit `this`. |
| 403 ir.Primitive receiver = build(semantics.target); | 401 ir.Primitive receiver = build(semantics.target); |
| 404 return irBuilder.buildDynamicGet(receiver, | 402 return irBuilder.buildDynamicGet(receiver, |
| 405 new Selector.getter(semantics.name, | 403 new Selector.getter(semantics.identifier.name, |
| 406 converter.convertElement(element.library))); | 404 converter.convertElement(element.library))); |
| 407 } | 405 } |
| 408 | 406 |
| 409 @override | 407 @override |
| 410 ir.Node visitStaticFieldAccess(AstNode node, AccessSemantics semantics) { | 408 ir.Node visitStaticFieldAccess(AstNode node, AccessSemantics semantics) { |
| 411 analyzer.Element element = semantics.element; | 409 analyzer.Element element = semantics.element; |
| 412 dart2js.Element target = converter.convertElement(element); | 410 dart2js.Element target = converter.convertElement(element); |
| 413 // TODO(johnniwinther): Selector information should be computed in the | 411 // TODO(johnniwinther): Selector information should be computed in the |
| 414 // [TreeShaker] and shared with the [CpsGeneratingVisitor]. | 412 // [TreeShaker] and shared with the [CpsGeneratingVisitor]. |
| 415 assert(invariant(node, target.isTopLevel || target.isStatic, | 413 assert(invariant(node, target.isTopLevel || target.isStatic, |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 dart2js.Element variableElement; | 526 dart2js.Element variableElement; |
| 529 Selector variableSelector; | 527 Selector variableSelector; |
| 530 if (node.identifier != null) { | 528 if (node.identifier != null) { |
| 531 AccessSemantics accessSemantics = | 529 AccessSemantics accessSemantics = |
| 532 node.identifier.accept(ACCESS_SEMANTICS_VISITOR); | 530 node.identifier.accept(ACCESS_SEMANTICS_VISITOR); |
| 533 if (accessSemantics.kind == AccessKind.DYNAMIC) { | 531 if (accessSemantics.kind == AccessKind.DYNAMIC) { |
| 534 variableSelector = new Selector.setter( | 532 variableSelector = new Selector.setter( |
| 535 node.identifier.name, converter.convertElement(currentLibrary)); | 533 node.identifier.name, converter.convertElement(currentLibrary)); |
| 536 } else if (accessSemantics.element != null) { | 534 } else if (accessSemantics.element != null) { |
| 537 variableElement = converter.convertElement(accessSemantics.element); | 535 variableElement = converter.convertElement(accessSemantics.element); |
| 538 shared.Element library = accessSemantics.element.library; | |
| 539 variableSelector = new Selector.setter( | 536 variableSelector = new Selector.setter( |
| 540 variableElement.name, | 537 variableElement.name, |
| 541 converter.convertElement(library)); | 538 converter.convertElement(accessSemantics.element.library)); |
| 542 } else { | 539 } else { |
| 543 giveUp(node, 'For-in of unresolved variable: $accessSemantics'); | 540 giveUp(node, 'For-in of unresolved variable: $accessSemantics'); |
| 544 } | 541 } |
| 545 } else { | 542 } else { |
| 546 assert(invariant( | 543 assert(invariant( |
| 547 node, node.loopVariable != null, "Loop variable expected")); | 544 node, node.loopVariable != null, "Loop variable expected")); |
| 548 variableElement = converter.convertElement(node.loopVariable.element); | 545 variableElement = converter.convertElement(node.loopVariable.element); |
| 549 buildVariableDeclaration = (IrBuilder builder) { | 546 buildVariableDeclaration = (IrBuilder builder) { |
| 550 builder.declareLocalVariable(variableElement); | 547 builder.declareLocalVariable(variableElement); |
| 551 }; | 548 }; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 572 return irBuilder.buildTypeOperator( | 569 return irBuilder.buildTypeOperator( |
| 573 visit(node.expression), | 570 visit(node.expression), |
| 574 converter.convertType(node.type.type), | 571 converter.convertType(node.type.type), |
| 575 isTypeTest: false); | 572 isTypeTest: false); |
| 576 } | 573 } |
| 577 } | 574 } |
| 578 | 575 |
| 579 class NullCapturedVariableInfo extends DartCapturedVariableInfo { | 576 class NullCapturedVariableInfo extends DartCapturedVariableInfo { |
| 580 Iterable get capturedVariables => const []; | 577 Iterable get capturedVariables => const []; |
| 581 } | 578 } |
| OLD | NEW |