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

Side by Side Diff: pkg/analyzer2dart/lib/src/cps_generator.dart

Issue 898113002: Add sharedfrontend package (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Update status. Created 5 years, 10 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 | Annotate | Revision Log
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698