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

Unified Diff: pkg/kernel/lib/transformations/closure/mock.dart

Issue 2937213002: Remove ContextClass that is not needed since we're using Vectors (Closed)
Patch Set: Merge in latest changes in master (f99509ad42) Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
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];
-}
« no previous file with comments | « pkg/kernel/lib/transformations/closure/converter.dart ('k') | pkg/kernel/lib/transformations/closure_conversion.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698