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

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: 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 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698