| Index: pkg/kernel/lib/transformations/closure/mock.dart
|
| diff --git a/pkg/kernel/lib/transformations/closure/mock.dart b/pkg/kernel/lib/transformations/closure/mock.dart
|
| deleted file mode 100644
|
| index 3ca1ce52ebd3a14ea70c117c5f74d9ddb30c891e..0000000000000000000000000000000000000000
|
| --- a/pkg/kernel/lib/transformations/closure/mock.dart
|
| +++ /dev/null
|
| @@ -1,224 +0,0 @@
|
| -// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -library kernel.transformations.closure.mock;
|
| -
|
| -import '../../ast.dart'
|
| - show
|
| - Arguments,
|
| - Block,
|
| - Class,
|
| - Constructor,
|
| - ConstructorInvocation,
|
| - DartType,
|
| - DynamicType,
|
| - EmptyStatement,
|
| - Expression,
|
| - ExpressionStatement,
|
| - Field,
|
| - FieldInitializer,
|
| - FunctionNode,
|
| - Initializer,
|
| - IntLiteral,
|
| - Library,
|
| - MethodInvocation,
|
| - Name,
|
| - NullLiteral,
|
| - Procedure,
|
| - ProcedureKind,
|
| - Program,
|
| - PropertyGet,
|
| - ReturnStatement,
|
| - Source,
|
| - Statement,
|
| - StaticInvocation,
|
| - Supertype,
|
| - TreeNode,
|
| - VariableDeclaration,
|
| - VariableGet;
|
| -
|
| -import '../../core_types.dart' show CoreTypes;
|
| -
|
| -import '../../frontend/accessors.dart'
|
| - show
|
| - Accessor,
|
| - IndexAccessor,
|
| - PropertyAccessor,
|
| - ThisPropertyAccessor,
|
| - VariableAccessor;
|
| -
|
| -/// TODO(dmitryas): make the "[]=" operator return the value.
|
| -/// Extend the program with this mock:
|
| -///
|
| -/// class Context {
|
| -/// final List list;
|
| -/// var parent;
|
| -/// Context(int i) : list = new List(i);
|
| -/// operator[] (int i) => list[i];
|
| -/// operator[]= (int i, value) {
|
| -/// list[i] = value;
|
| -/// }
|
| -/// Context copy() {
|
| -/// Context c = new Context(list.length);
|
| -/// c.parent = parent;
|
| -/// c.list.setRange(0, list.length, list);
|
| -/// return c;
|
| -/// }
|
| -/// }
|
| -///
|
| -/// Returns the mock.
|
| -Library mockUpContextLibrary(CoreTypes coreTypes) {
|
| - String fileUri = "dart:mock";
|
| -
|
| - /// final List list;
|
| - Field listField = new Field(new Name("list"),
|
| - type: coreTypes.listClass.rawType, isFinal: true, fileUri: fileUri);
|
| - Accessor listFieldAccessor = new ThisPropertyAccessor(
|
| - listField.name, listField, null, TreeNode.noOffset);
|
| -
|
| - /// var parent;
|
| - Field parentField = new Field(new Name("parent"), fileUri: fileUri);
|
| - Accessor parentFieldAccessor = new ThisPropertyAccessor(
|
| - parentField.name, parentField, parentField, TreeNode.noOffset);
|
| -
|
| - List<Field> fields = <Field>[listField, parentField];
|
| -
|
| - /// Context(int i) : list = new List(i);
|
| - VariableDeclaration iParameter = new VariableDeclaration("i",
|
| - type: coreTypes.intClass.rawType, isFinal: true);
|
| -
|
| - // TODO(karlklose): use the default factory when it is exposed again.
|
| - Procedure listConstructor = coreTypes.listClass.procedures
|
| - .firstWhere((Procedure p) => p.name.name == 'filled');
|
| -
|
| - Constructor constructor = new Constructor(
|
| - new FunctionNode(new EmptyStatement(),
|
| - positionalParameters: <VariableDeclaration>[iParameter]),
|
| - name: new Name(""),
|
| - initializers: <Initializer>[
|
| - new FieldInitializer(
|
| - listField,
|
| - new StaticInvocation(
|
| - listConstructor,
|
| - new Arguments(<Expression>[
|
| - new VariableAccessor(iParameter, null, TreeNode.noOffset)
|
| - .buildSimpleRead(),
|
| - new NullLiteral(),
|
| - ], types: <DartType>[
|
| - const DynamicType()
|
| - ])))
|
| - ]);
|
| -
|
| - /// operator[] (int i) => list[i];
|
| - iParameter = new VariableDeclaration("i",
|
| - type: coreTypes.intClass.rawType, isFinal: true);
|
| - Accessor accessor = IndexAccessor.make(
|
| - listFieldAccessor.buildSimpleRead(),
|
| - new VariableAccessor(iParameter, null, TreeNode.noOffset)
|
| - .buildSimpleRead(),
|
| - null,
|
| - null);
|
| - Procedure indexGet = new Procedure(
|
| - new Name("[]"),
|
| - ProcedureKind.Operator,
|
| - new FunctionNode(new ReturnStatement(accessor.buildSimpleRead()),
|
| - positionalParameters: <VariableDeclaration>[iParameter]),
|
| - fileUri: fileUri);
|
| -
|
| - /// operator[]= (int i, value) {
|
| - /// list[i] = value;
|
| - /// }
|
| - iParameter = new VariableDeclaration("i",
|
| - type: coreTypes.intClass.rawType, isFinal: true);
|
| - VariableDeclaration valueParameter =
|
| - new VariableDeclaration("value", isFinal: true);
|
| - accessor = IndexAccessor.make(
|
| - listFieldAccessor.buildSimpleRead(),
|
| - new VariableAccessor(iParameter, null, TreeNode.noOffset)
|
| - .buildSimpleRead(),
|
| - null,
|
| - null);
|
| - Expression expression = accessor.buildAssignment(
|
| - new VariableAccessor(valueParameter, null, TreeNode.noOffset)
|
| - .buildSimpleRead(),
|
| - voidContext: true);
|
| - Procedure indexSet = new Procedure(
|
| - new Name("[]="),
|
| - ProcedureKind.Operator,
|
| - new FunctionNode(new ExpressionStatement(expression),
|
| - positionalParameters: <VariableDeclaration>[
|
| - iParameter,
|
| - valueParameter
|
| - ]),
|
| - fileUri: fileUri);
|
| -
|
| - /// Context copy() {
|
| - /// Context c = new Context(list.length);
|
| - /// c.parent = parent;
|
| - /// c.list.setRange(0, list.length, list);
|
| - /// return c;
|
| - /// }
|
| - VariableDeclaration c = new VariableDeclaration("c",
|
| - initializer: new ConstructorInvocation(
|
| - constructor,
|
| - new Arguments(<Expression>[
|
| - new PropertyGet(
|
| - listFieldAccessor.buildSimpleRead(), new Name("length"))
|
| - ])));
|
| - Accessor accessCParent = PropertyAccessor.make(
|
| - new VariableGet(c), parentField.name, parentField, parentField);
|
| - Accessor accessCList = PropertyAccessor.make(
|
| - new VariableGet(c), listField.name, listField, null);
|
| - List<Statement> statements = <Statement>[
|
| - c,
|
| - new ExpressionStatement(accessCParent.buildAssignment(
|
| - parentFieldAccessor.buildSimpleRead(),
|
| - voidContext: true)),
|
| - new ExpressionStatement(new MethodInvocation(
|
| - accessCList.buildSimpleRead(),
|
| - new Name("setRange"),
|
| - new Arguments(<Expression>[
|
| - new IntLiteral(0),
|
| - new PropertyGet(
|
| - listFieldAccessor.buildSimpleRead(), new Name("length")),
|
| - listFieldAccessor.buildSimpleRead()
|
| - ]))),
|
| - new ReturnStatement(new VariableGet(c))
|
| - ];
|
| - Procedure copy = new Procedure(new Name("copy"), ProcedureKind.Method,
|
| - new FunctionNode(new Block(statements)),
|
| - fileUri: fileUri);
|
| -
|
| - List<Procedure> procedures = <Procedure>[indexGet, indexSet, copy];
|
| -
|
| - Class contextClass = new Class(
|
| - name: "Context",
|
| - supertype: new Supertype(coreTypes.objectClass, const <DartType>[]),
|
| - constructors: [constructor],
|
| - fields: fields,
|
| - procedures: procedures,
|
| - fileUri: fileUri);
|
| - Library mock =
|
| - new Library(Uri.parse(fileUri), name: "mock", classes: [contextClass])
|
| - ..fileUri = fileUri;
|
| -
|
| - return mock;
|
| -}
|
| -
|
| -Class mockUpContextForLibraries(CoreTypes coreTypes, List<Library> libraries) {
|
| - Library mock = mockUpContextLibrary(coreTypes);
|
| - Program parent = libraries.length > 0 ? libraries[0]?.parent : null;
|
| - libraries.add(mock);
|
| - mock.parent = parent;
|
| - parent?.uriToSource[mock.fileUri] = new Source(<int>[0], const <int>[]);
|
| - return mock.classes[0];
|
| -}
|
| -
|
| -Class mockUpContextForProgram(CoreTypes coreTypes, Program program) {
|
| - Library mock = mockUpContextLibrary(coreTypes);
|
| - program.libraries.add(mock);
|
| - mock.parent = program;
|
| - program.uriToSource[mock.fileUri] = new Source(<int>[0], const <int>[]);
|
| - return mock.classes[0];
|
| -}
|
|
|