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