OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 dart2js.kernel.env; | 5 library dart2js.kernel.env; |
6 | 6 |
7 import 'package:kernel/ast.dart' as ir; | 7 import 'package:kernel/ast.dart' as ir; |
8 import 'package:kernel/clone.dart'; | 8 import 'package:kernel/clone.dart'; |
9 import 'package:kernel/type_algebra.dart'; | 9 import 'package:kernel/type_algebra.dart'; |
10 | 10 |
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 return _constantConstructor; | 556 return _constantConstructor; |
557 } | 557 } |
558 | 558 |
559 @override | 559 @override |
560 ConstructorData copy() { | 560 ConstructorData copy() { |
561 return new ConstructorDataImpl(node, functionNode, definition); | 561 return new ConstructorDataImpl(node, functionNode, definition); |
562 } | 562 } |
563 } | 563 } |
564 | 564 |
565 abstract class FieldData extends MemberData { | 565 abstract class FieldData extends MemberData { |
| 566 DartType getFieldType(KernelToElementMap elementMap); |
| 567 |
566 ConstantExpression getFieldConstant( | 568 ConstantExpression getFieldConstant( |
567 KernelToElementMapBase elementMap, FieldEntity field); | 569 KernelToElementMapBase elementMap, FieldEntity field); |
568 } | 570 } |
569 | 571 |
570 class FieldDataImpl extends MemberDataImpl implements FieldData { | 572 class FieldDataImpl extends MemberDataImpl implements FieldData { |
| 573 DartType _type; |
571 ConstantExpression _constant; | 574 ConstantExpression _constant; |
572 | 575 |
573 FieldDataImpl(ir.Field node, MemberDefinition definition) | 576 FieldDataImpl(ir.Field node, MemberDefinition definition) |
574 : super(node, definition); | 577 : super(node, definition); |
575 | 578 |
576 ir.Field get node => super.node; | 579 ir.Field get node => super.node; |
577 | 580 |
| 581 DartType getFieldType(covariant KernelToElementMapBase elementMap) { |
| 582 return _type ??= elementMap.getDartType(node.type); |
| 583 } |
| 584 |
578 ConstantExpression getFieldConstant( | 585 ConstantExpression getFieldConstant( |
579 KernelToElementMapBase elementMap, FieldEntity field) { | 586 KernelToElementMapBase elementMap, FieldEntity field) { |
580 if (_constant == null) { | 587 if (_constant == null) { |
581 if (node.isConst) { | 588 if (node.isConst) { |
582 _constant = new Constantifier(elementMap).visit(node.initializer); | 589 _constant = new Constantifier(elementMap).visit(node.initializer); |
583 } else { | 590 } else { |
584 failedAt( | 591 failedAt( |
585 field, | 592 field, |
586 "Unexpected field $field in " | 593 "Unexpected field $field in " |
587 "FieldDataImpl.getFieldConstant"); | 594 "FieldDataImpl.getFieldConstant"); |
588 } | 595 } |
589 } | 596 } |
590 return _constant; | 597 return _constant; |
591 } | 598 } |
592 | 599 |
593 @override | 600 @override |
594 FieldData copy() { | 601 FieldData copy() { |
595 return new FieldDataImpl(node, definition); | 602 return new FieldDataImpl(node, definition); |
596 } | 603 } |
597 } | 604 } |
598 | 605 |
599 class TypedefData { | 606 class TypedefData { |
600 final ir.Typedef node; | 607 final ir.Typedef node; |
601 final TypedefEntity element; | 608 final TypedefEntity element; |
602 final TypedefType rawType; | 609 final TypedefType rawType; |
603 | 610 |
604 TypedefData(this.node, this.element, this.rawType); | 611 TypedefData(this.node, this.element, this.rawType); |
605 } | 612 } |
OLD | NEW |