| Index: pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart b/pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart
|
| index 49b44a7a7bf5fd56cfbfda6bb8808a94e490f07d..b727f1309ef5e7e5bec3ad66e882401025a8cf88 100644
|
| --- a/pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart
|
| +++ b/pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart
|
| @@ -126,14 +126,15 @@ class KernelAstAdapter extends KernelToElementMapMixin {
|
|
|
| /// Push the existing resolved AST on the stack and shift the current resolved
|
| /// AST to the AST that this kernel node points to.
|
| - void pushResolvedAst(ir.Node node) {
|
| + void enterInlinedMember(MemberElement member) {
|
| _resolvedAstStack.add(_resolvedAst);
|
| - _resolvedAst = (getElement(node) as AstElement).resolvedAst;
|
| + _resolvedAst = member.resolvedAst;
|
| }
|
|
|
| /// Pop the resolved AST stack to reset it to the previous resolved AST node.
|
| - void popResolvedAstStack() {
|
| + void leaveInlinedMember(MemberElement member) {
|
| assert(_resolvedAstStack.isNotEmpty);
|
| + assert(_resolvedAst.element == member);
|
| _resolvedAst = _resolvedAstStack.removeLast();
|
| }
|
|
|
| @@ -226,26 +227,6 @@ class KernelAstAdapter extends KernelToElementMapMixin {
|
| return getElement(function).asFunctionElement().functionSignature;
|
| }
|
|
|
| - ir.Field getFieldFromElement(FieldElement field) {
|
| - return kernel.fields[field];
|
| - }
|
| -
|
| - bool isFixedLength(TypeMask mask, ClosedWorld closedWorld) {
|
| - if (mask.isContainer && (mask as ContainerTypeMask).length != null) {
|
| - // A container on which we have inferred the length.
|
| - return true;
|
| - }
|
| - // TODO(sra): Recognize any combination of fixed length indexables.
|
| - if (mask.containsOnly(closedWorld.commonElements.jsFixedArrayClass) ||
|
| - mask.containsOnly(
|
| - closedWorld.commonElements.jsUnmodifiableArrayClass) ||
|
| - mask.containsOnlyString(closedWorld) ||
|
| - closedWorld.commonMasks.isTypedArray(mask)) {
|
| - return true;
|
| - }
|
| - return false;
|
| - }
|
| -
|
| ConstantValue getConstantFor(ir.Node node) {
|
| // Some `null`s are not mapped when they correspond to errors, e.g. missing
|
| // `const` initializers.
|
| @@ -340,11 +321,6 @@ class KernelAstAdapter extends KernelToElementMapMixin {
|
| return _typeConverter.convert(type);
|
| }
|
|
|
| - ResolutionDartType getDartTypeIfValid(ir.DartType type) {
|
| - if (type is ir.InvalidType) return null;
|
| - return _typeConverter.convert(type);
|
| - }
|
| -
|
| List<ResolutionDartType> getDartTypes(List<ir.DartType> types) {
|
| return types.map(getDartType).toList();
|
| }
|
| @@ -688,6 +664,22 @@ class KernelAstTypeInferenceMap implements KernelToTypeInferenceMap {
|
| !mask.satisfies(closedWorld.commonElements.jsStringClass, closedWorld);
|
| }
|
|
|
| + bool isFixedLength(TypeMask mask, ClosedWorld closedWorld) {
|
| + if (mask.isContainer && (mask as ContainerTypeMask).length != null) {
|
| + // A container on which we have inferred the length.
|
| + return true;
|
| + }
|
| + // TODO(sra): Recognize any combination of fixed length indexables.
|
| + if (mask.containsOnly(closedWorld.commonElements.jsFixedArrayClass) ||
|
| + mask.containsOnly(
|
| + closedWorld.commonElements.jsUnmodifiableArrayClass) ||
|
| + mask.containsOnlyString(closedWorld) ||
|
| + closedWorld.commonMasks.isTypedArray(mask)) {
|
| + return true;
|
| + }
|
| + return false;
|
| + }
|
| +
|
| TypeMask inferredIndexType(ir.ForInStatement forInStatement) {
|
| return TypeMaskFactory.inferredTypeForSelector(new Selector.index(),
|
| typeOfIterator(forInStatement), _globalInferenceResults);
|
|
|