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

Unified Diff: pkg/front_end/lib/src/fasta/kernel/builder_accessors.dart

Issue 2777893002: Rename BuilderAccessor to FastaAccessor. (Closed)
Patch Set: Created 3 years, 9 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/front_end/lib/src/fasta/kernel/builder_accessors.dart
diff --git a/pkg/front_end/lib/src/fasta/kernel/builder_accessors.dart b/pkg/front_end/lib/src/fasta/kernel/builder_accessors.dart
deleted file mode 100644
index 37dcb05cd781f51c2254f102c8500f9c6295b9cd..0000000000000000000000000000000000000000
--- a/pkg/front_end/lib/src/fasta/kernel/builder_accessors.dart
+++ /dev/null
@@ -1,799 +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 fasta.builder_accessors;
-
-export 'package:kernel/frontend/accessors.dart' show wrapInvalid;
-
-import 'package:kernel/frontend/accessors.dart'
- show Accessor, buildIsNull, makeLet;
-
-import 'package:kernel/ast.dart';
-
-import '../errors.dart' show internalError;
-
-import '../builder/scope.dart' show AccessErrorBuilder, ProblemBuilder;
-
-import 'package:kernel/frontend/accessors.dart' as kernel
- show
- IndexAccessor,
- NullAwarePropertyAccessor,
- PropertyAccessor,
- StaticAccessor,
- SuperIndexAccessor,
- SuperPropertyAccessor,
- ThisIndexAccessor,
- ThisPropertyAccessor,
- VariableAccessor;
-
-import 'kernel_builder.dart'
- show Builder, KernelClassBuilder, PrefixBuilder, TypeDeclarationBuilder;
-
-import '../names.dart' show callName;
-
-abstract class BuilderHelper {
- Uri get uri;
-
- Constructor lookupConstructor(Name name, {bool isSuper});
-
- Expression toSuperMethodInvocation(MethodInvocation node);
-
- Expression toValue(node);
-
- Member lookupSuperMember(Name name, {bool isSetter: false});
-
- builderToFirstExpression(Builder builder, String name, int offset);
-
- finishSend(Object receiver, Arguments arguments, int offset);
-
- Expression buildCompileTimeError(error, [int offset]);
-
- Initializer buildCompileTimeErrorIntializer(error, [int offset]);
-
- Expression buildStaticInvocation(Procedure target, Arguments arguments);
-
- Expression buildProblemExpression(ProblemBuilder builder, int offset);
-
- Expression throwNoSuchMethodError(
- String name, Arguments arguments, int offset,
- {bool isSuper: false, isGetter: false, isSetter: false});
-}
-
-abstract class BuilderAccessor implements Accessor {
- BuilderHelper get helper;
-
- String get plainNameForRead;
-
- Uri get uri => helper.uri;
-
- String get plainNameForWrite => plainNameForRead;
-
- Expression buildForEffect() => buildSimpleRead();
-
- Initializer buildFieldInitializer(
- Map<String, FieldInitializer> initializers) {
- // TODO(ahe): This error message is really bad.
- return helper.buildCompileTimeErrorIntializer(
- "Can't use $plainNameForRead here.", offset);
- }
-
- Expression makeInvalidRead() {
- return buildThrowNoSuchMethodError(new Arguments.empty(), isGetter: true);
- }
-
- Expression makeInvalidWrite(Expression value) {
- return buildThrowNoSuchMethodError(new Arguments(<Expression>[value]),
- isSetter: true);
- }
-
- /* Expression | BuilderAccessor */ doInvocation(
- int offset, Arguments arguments);
-
- /* Expression | BuilderAccessor */ buildPropertyAccess(
- IncompleteSend send, bool isNullAware) {
- if (send is SendAccessor) {
- return buildMethodInvocation(
- buildSimpleRead(), send.name, send.arguments, send.offset,
- isNullAware: isNullAware);
- } else {
- return PropertyAccessor.make(helper, send.offset, buildSimpleRead(),
- send.name, null, null, isNullAware);
- }
- }
-
- /* Expression | BuilderAccessor */ buildThrowNoSuchMethodError(
- Arguments arguments,
- {bool isSuper: false,
- isGetter: false,
- isSetter: false,
- String name,
- int offset}) {
- return helper.throwNoSuchMethodError(
- name ?? plainNameForWrite, arguments, offset ?? this.offset,
- isGetter: isGetter, isSetter: isSetter, isSuper: isSuper);
- }
-
- bool get isThisPropertyAccessor => false;
-}
-
-abstract class CompileTimeErrorAccessor implements BuilderAccessor {
- @override
- Expression get builtBinary => internalError("Unsupported operation.");
-
- @override
- void set builtBinary(Expression expression) {
- internalError("Unsupported operation.");
- }
-
- @override
- Expression get builtGetter => internalError("Unsupported operation.");
-
- @override
- void set builtGetter(Expression expression) {
- internalError("Unsupported operation.");
- }
-
- Expression buildError();
-
- Name get name => internalError("Unsupported operation.");
-
- String get plainNameForRead => name.name;
-
- withReceiver(Object receiver, {bool isNullAware}) => this;
-
- Initializer buildFieldInitializer(
- Map<String, FieldInitializer> initializers) {
- return new LocalInitializer(new VariableDeclaration.forValue(buildError()));
- }
-
- doInvocation(int offset, Arguments arguments) => this;
-
- buildPropertyAccess(IncompleteSend send, bool isNullAware) => this;
-
- buildThrowNoSuchMethodError(Arguments arguments,
- {bool isSuper: false,
- isGetter: false,
- isSetter: false,
- String name,
- int offset}) {
- return this;
- }
-
- Expression buildAssignment(Expression value, {bool voidContext: false}) {
- return buildError();
- }
-
- Expression buildCompoundAssignment(Name binaryOperator, Expression value,
- {int offset: TreeNode.noOffset,
- bool voidContext: false,
- Procedure interfaceTarget}) {
- return buildError();
- }
-
- Expression buildPrefixIncrement(Name binaryOperator,
- {int offset: TreeNode.noOffset,
- bool voidContext: false,
- Procedure interfaceTarget}) {
- return buildError();
- }
-
- Expression buildPostfixIncrement(Name binaryOperator,
- {int offset: TreeNode.noOffset,
- bool voidContext: false,
- Procedure interfaceTarget}) {
- return buildError();
- }
-
- Expression buildNullAwareAssignment(Expression value, DartType type,
- {bool voidContext: false}) {
- return buildError();
- }
-
- Expression buildSimpleRead() => buildError();
-
- Expression makeInvalidRead() => buildError();
-
- Expression makeInvalidWrite(Expression value) => buildError();
-}
-
-class ThisAccessor extends BuilderAccessor {
- final BuilderHelper helper;
-
- final int offset;
-
- final bool isInitializer;
-
- final bool isSuper;
-
- ThisAccessor(this.helper, this.offset, this.isInitializer,
- {this.isSuper: false});
-
- @override
- Expression get builtBinary => internalError("Unsupported operation.");
-
- @override
- void set builtBinary(Expression expression) {
- internalError("Unsupported operation.");
- }
-
- @override
- Expression get builtGetter => internalError("Unsupported operation.");
-
- @override
- void set builtGetter(Expression expression) {
- internalError("Unsupported operation.");
- }
-
- String get plainNameForRead => internalError(isSuper ? "super" : "this");
-
- Expression buildSimpleRead() {
- if (!isSuper) {
- return new ThisExpression();
- } else {
- return helper.buildCompileTimeError(
- "Can't use `super` as an expression.", offset);
- }
- }
-
- Initializer buildFieldInitializer(
- Map<String, FieldInitializer> initializers) {
- String keyword = isSuper ? "super" : "this";
- return helper.buildCompileTimeErrorIntializer(
- "Can't use '$keyword' here, did you mean '$keyword()'?", offset);
- }
-
- buildPropertyAccess(IncompleteSend send, bool isNullAware) {
- if (isInitializer && send is SendAccessor) {
- return buildConstructorInitializer(
- send.offset, send.name, send.arguments);
- }
- if (send is SendAccessor) {
- // Notice that 'this' or 'super' can't be null. So we can ignore the
- // value of [isNullAware].
- MethodInvocation result = buildMethodInvocation(
- new ThisExpression(), send.name, send.arguments, offset);
- return isSuper ? helper.toSuperMethodInvocation(result) : result;
- } else {
- if (isSuper) {
- Member getter = helper.lookupSuperMember(send.name);
- Member setter = helper.lookupSuperMember(send.name, isSetter: true);
- return new SuperPropertyAccessor(
- helper, send.offset, send.name, getter, setter);
- } else {
- return new ThisPropertyAccessor(
- helper, send.offset, send.name, null, null);
- }
- }
- }
-
- doInvocation(int offset, Arguments arguments) {
- if (isInitializer) {
- return buildConstructorInitializer(offset, new Name(""), arguments);
- } else {
- return buildMethodInvocation(
- new ThisExpression(), callName, arguments, offset);
- }
- }
-
- Initializer buildConstructorInitializer(
- int offset, Name name, Arguments arguments) {
- Constructor constructor = helper.lookupConstructor(name, isSuper: isSuper);
- Initializer result;
- if (constructor == null) {
- result = new LocalInitializer(new VariableDeclaration.forValue(
- buildThrowNoSuchMethodError(arguments,
- isSuper: isSuper, name: name.name, offset: offset)));
- } else if (isSuper) {
- result = new SuperInitializer(constructor, arguments);
- } else {
- result = new RedirectingInitializer(constructor, arguments);
- }
- return result..fileOffset = offset;
- }
-
- Expression buildAssignment(Expression value, {bool voidContext: false}) {
- return buildAssignmentError();
- }
-
- Expression buildNullAwareAssignment(Expression value, DartType type,
- {bool voidContext: false}) {
- return buildAssignmentError();
- }
-
- Expression buildCompoundAssignment(Name binaryOperator, Expression value,
- {int offset: TreeNode.noOffset,
- bool voidContext: false,
- Procedure interfaceTarget}) {
- return buildAssignmentError();
- }
-
- Expression buildPrefixIncrement(Name binaryOperator,
- {int offset: TreeNode.noOffset,
- bool voidContext: false,
- Procedure interfaceTarget}) {
- return buildAssignmentError();
- }
-
- Expression buildPostfixIncrement(Name binaryOperator,
- {int offset: TreeNode.noOffset,
- bool voidContext: false,
- Procedure interfaceTarget}) {
- return buildAssignmentError();
- }
-
- Expression buildAssignmentError() {
- String message =
- isSuper ? "Can't assign to 'super'." : "Can't assign to 'this'.";
- return helper.buildCompileTimeError(message, offset);
- }
-
- toString() => "ThisAccessor($offset${isSuper ? ', super' : ''})";
-}
-
-abstract class IncompleteSend extends BuilderAccessor {
- final BuilderHelper helper;
-
- @override
- final int offset;
-
- final Name name;
-
- IncompleteSend(this.helper, this.offset, this.name);
-
- @override
- Expression get builtBinary => internalError("Unsupported operation.");
-
- @override
- void set builtBinary(Expression expression) {
- internalError("Unsupported operation.");
- }
-
- @override
- Expression get builtGetter => internalError("Unsupported operation.");
-
- @override
- void set builtGetter(Expression expression) {
- internalError("Unsupported operation.");
- }
-
- withReceiver(Object receiver, {bool isNullAware});
-}
-
-class IncompleteError extends IncompleteSend with CompileTimeErrorAccessor {
- final Object error;
-
- IncompleteError(BuilderHelper helper, int offset, this.error)
- : super(helper, offset, null);
-
- Expression buildError() {
- return helper.buildCompileTimeError(error, offset);
- }
-}
-
-class SendAccessor extends IncompleteSend {
- final Arguments arguments;
-
- SendAccessor(BuilderHelper helper, int offset, Name name, this.arguments)
- : super(helper, offset, name) {
- assert(arguments != null);
- }
-
- String get plainNameForRead => name.name;
-
- Expression buildSimpleRead() {
- return internalError("Unhandled");
- }
-
- Expression buildAssignment(Expression value, {bool voidContext: false}) {
- return internalError("Unhandled");
- }
-
- withReceiver(Object receiver, {bool isNullAware: false}) {
- if (receiver is TypeDeclarationBuilder) {
- /// `SomeType?.toString` is the same as `SomeType.toString`, not
- /// `(SomeType).toString`.
- isNullAware = false;
- }
- if (receiver is BuilderAccessor) {
- return receiver.buildPropertyAccess(this, isNullAware);
- }
- if (receiver is PrefixBuilder) {
- PrefixBuilder prefix = receiver;
- receiver = helper.builderToFirstExpression(
- prefix.exports[name.name], "${prefix.name}.${name.name}", offset);
- return helper.finishSend(receiver, arguments, offset);
- }
- Expression result;
- if (receiver is KernelClassBuilder) {
- Builder builder = receiver.findStaticBuilder(name.name, offset, uri);
- if (builder == null) {
- return buildThrowNoSuchMethodError(arguments);
- }
- if (builder.hasProblem) {
- result = helper.buildProblemExpression(builder, offset);
- } else {
- Member target = builder.target;
- if (target != null) {
- if (target is Field) {
- result = buildMethodInvocation(new StaticGet(target), callName,
- arguments, offset + (target.name?.name?.length ?? 0),
- isNullAware: isNullAware);
- } else {
- result = helper.buildStaticInvocation(target, arguments)
- ..fileOffset = offset;
- }
- } else {
- result = buildThrowNoSuchMethodError(arguments)..fileOffset = offset;
- }
- }
- } else {
- result = buildMethodInvocation(
- helper.toValue(receiver), name, arguments, offset,
- isNullAware: isNullAware);
- }
- return result;
- }
-
- Expression buildNullAwareAssignment(Expression value, DartType type,
- {bool voidContext: false}) {
- return internalError("Unhandled");
- }
-
- Expression buildCompoundAssignment(Name binaryOperator, Expression value,
- {int offset, bool voidContext: false, Procedure interfaceTarget}) {
- return internalError("Unhandled");
- }
-
- Expression buildPrefixIncrement(Name binaryOperator,
- {int offset, bool voidContext: false, Procedure interfaceTarget}) {
- return internalError("Unhandled");
- }
-
- Expression buildPostfixIncrement(Name binaryOperator,
- {int offset, bool voidContext: false, Procedure interfaceTarget}) {
- return internalError("Unhandled");
- }
-
- Expression doInvocation(int offset, Arguments arguments) {
- return internalError("Unhandled");
- }
-
- toString() => "SendAccessor($offset, $name, $arguments)";
-}
-
-class IncompletePropertyAccessor extends IncompleteSend {
- IncompletePropertyAccessor(BuilderHelper helper, int offset, Name name)
- : super(helper, offset, name);
-
- String get plainNameForRead => name.name;
-
- Expression buildSimpleRead() => internalError("Unhandled");
-
- Expression buildAssignment(Expression value, {bool voidContext: false}) {
- return internalError("Unhandled");
- }
-
- withReceiver(Object receiver, {bool isNullAware: false}) {
- if (receiver is TypeDeclarationBuilder) {
- /// For reasons beyond comprehension, `SomeType?.toString` is the same as
- /// `SomeType.toString`, not `(SomeType).toString`. WTAF!?!
- //
- isNullAware = false;
- }
- if (receiver is BuilderAccessor) {
- return receiver.buildPropertyAccess(this, isNullAware);
- }
- if (receiver is PrefixBuilder) {
- PrefixBuilder prefix = receiver;
- return helper.builderToFirstExpression(
- prefix.exports[name.name], name.name, offset);
- }
- if (receiver is KernelClassBuilder) {
- Builder builder = receiver.findStaticBuilder(name.name, offset, uri);
- if (builder == null) {
- // If we find a setter, [builder] is an [AccessErrorBuilder], not null.
- return buildThrowNoSuchMethodError(new Arguments.empty(),
- isGetter: true);
- }
- Builder setter;
- if (builder.isSetter) {
- setter = builder;
- } else if (builder.isGetter) {
- setter =
- receiver.findStaticBuilder(name.name, offset, uri, isSetter: true);
- } else if (builder.isField && !builder.isFinal) {
- setter = builder;
- }
- return new StaticAccessor.fromBuilder(helper, builder, offset, setter);
- }
- return PropertyAccessor.make(helper, offset, helper.toValue(receiver), name,
- null, null, isNullAware);
- }
-
- Expression buildNullAwareAssignment(Expression value, DartType type,
- {bool voidContext: false}) {
- return internalError("Unhandled");
- }
-
- Expression buildCompoundAssignment(Name binaryOperator, Expression value,
- {int offset, bool voidContext: false, Procedure interfaceTarget}) {
- return internalError("Unhandled");
- }
-
- Expression buildPrefixIncrement(Name binaryOperator,
- {int offset, bool voidContext: false, Procedure interfaceTarget}) {
- return internalError("Unhandled");
- }
-
- Expression buildPostfixIncrement(Name binaryOperator,
- {int offset, bool voidContext: false, Procedure interfaceTarget}) {
- return internalError("Unhandled");
- }
-
- Expression doInvocation(int offset, Arguments arguments) {
- return internalError("Unhandled");
- }
-
- toString() => "IncompletePropertyAccessor($offset, $name)";
-}
-
-class IndexAccessor extends kernel.IndexAccessor with BuilderAccessor {
- final BuilderHelper helper;
-
- IndexAccessor.internal(this.helper, int offset, Expression receiver,
- Expression index, Procedure getter, Procedure setter)
- : super.internal(receiver, index, getter, setter, offset);
-
- String get plainNameForRead => "[]";
-
- String get plainNameForWrite => "[]=";
-
- Expression doInvocation(int offset, Arguments arguments) {
- return buildMethodInvocation(
- buildSimpleRead(), callName, arguments, offset);
- }
-
- toString() => "IndexAccessor()";
-
- static BuilderAccessor make(
- BuilderHelper helper,
- int offset,
- Expression receiver,
- Expression index,
- Procedure getter,
- Procedure setter) {
- if (receiver is ThisExpression) {
- return new ThisIndexAccessor(helper, offset, index, getter, setter);
- } else {
- return new IndexAccessor.internal(
- helper, offset, receiver, index, getter, setter);
- }
- }
-}
-
-class PropertyAccessor extends kernel.PropertyAccessor with BuilderAccessor {
- final BuilderHelper helper;
-
- PropertyAccessor.internal(this.helper, int offset, Expression receiver,
- Name name, Member getter, Member setter)
- : super.internal(receiver, name, getter, setter, offset);
-
- String get plainNameForRead => name.name;
-
- bool get isThisPropertyAccessor => receiver is ThisExpression;
-
- Expression doInvocation(int offset, Arguments arguments) {
- return buildMethodInvocation(receiver, name, arguments, offset);
- }
-
- toString() => "PropertyAccessor()";
-
- static BuilderAccessor make(
- BuilderHelper helper,
- int offset,
- Expression receiver,
- Name name,
- Member getter,
- Member setter,
- bool isNullAware) {
- if (receiver is ThisExpression) {
- return new ThisPropertyAccessor(helper, offset, name, getter, setter);
- } else {
- return isNullAware
- ? new NullAwarePropertyAccessor(
- helper, offset, receiver, name, getter, setter, null)
- : new PropertyAccessor.internal(
- helper, offset, receiver, name, getter, setter);
- }
- }
-}
-
-class StaticAccessor extends kernel.StaticAccessor with BuilderAccessor {
- final BuilderHelper helper;
-
- StaticAccessor(this.helper, int offset, Member readTarget, Member writeTarget)
- : super(readTarget, writeTarget, offset) {
- assert(readTarget != null || writeTarget != null);
- }
-
- factory StaticAccessor.fromBuilder(BuilderHelper helper, Builder builder,
- int offset, Builder builderSetter) {
- if (builder is AccessErrorBuilder) {
- AccessErrorBuilder error = builder;
- builder = error.builder;
- // We should only see an access error here if we've looked up a setter
- // when not explicitly looking for a setter.
- assert(builder.isSetter);
- } else if (builder.target == null) {
- return internalError("Unhandled: ${builder}");
- }
- Member getter = builder.target.hasGetter ? builder.target : null;
- Member setter = builder.target.hasSetter ? builder.target : null;
- if (setter == null) {
- if (builderSetter?.target?.hasSetter ?? false) {
- setter = builderSetter.target;
- }
- }
- return new StaticAccessor(helper, offset, getter, setter);
- }
-
- String get plainNameForRead => (readTarget ?? writeTarget).name.name;
-
- Expression doInvocation(int offset, Arguments arguments) {
- if (readTarget == null || isFieldOrGetter(readTarget)) {
- return buildMethodInvocation(buildSimpleRead(), callName, arguments,
- offset + (readTarget?.name?.name?.length ?? 0));
- } else {
- return helper.buildStaticInvocation(readTarget, arguments)
- ..fileOffset = offset;
- }
- }
-
- toString() => "StaticAccessor()";
-}
-
-class SuperPropertyAccessor extends kernel.SuperPropertyAccessor
- with BuilderAccessor {
- final BuilderHelper helper;
-
- SuperPropertyAccessor(
- this.helper, int offset, Name name, Member getter, Member setter)
- : super(name, getter, setter, offset);
-
- String get plainNameForRead => name.name;
-
- Expression doInvocation(int offset, Arguments arguments) {
- if (getter == null || isFieldOrGetter(getter)) {
- return buildMethodInvocation(
- buildSimpleRead(), callName, arguments, offset);
- } else {
- return new DirectMethodInvocation(new ThisExpression(), getter, arguments)
- ..fileOffset = offset;
- }
- }
-
- toString() => "SuperPropertyAccessor()";
-}
-
-class ThisIndexAccessor extends kernel.ThisIndexAccessor with BuilderAccessor {
- final BuilderHelper helper;
-
- ThisIndexAccessor(this.helper, int offset, Expression index, Procedure getter,
- Procedure setter)
- : super(index, getter, setter, offset);
-
- String get plainNameForRead => "[]";
-
- String get plainNameForWrite => "[]=";
-
- Expression doInvocation(int offset, Arguments arguments) {
- return buildMethodInvocation(
- buildSimpleRead(), callName, arguments, offset);
- }
-
- toString() => "ThisIndexAccessor()";
-}
-
-class SuperIndexAccessor extends kernel.SuperIndexAccessor
- with BuilderAccessor {
- final BuilderHelper helper;
-
- SuperIndexAccessor(
- this.helper, int offset, Expression index, Member getter, Member setter)
- : super(index, getter, setter, offset);
-
- String get plainNameForRead => "[]";
-
- String get plainNameForWrite => "[]=";
-
- Expression doInvocation(int offset, Arguments arguments) {
- return buildMethodInvocation(
- buildSimpleRead(), callName, arguments, offset);
- }
-
- toString() => "SuperIndexAccessor()";
-}
-
-class ThisPropertyAccessor extends kernel.ThisPropertyAccessor
- with BuilderAccessor {
- final BuilderHelper helper;
-
- ThisPropertyAccessor(
- this.helper, int offset, Name name, Member getter, Member setter)
- : super(name, getter, setter, offset);
-
- String get plainNameForRead => name.name;
-
- bool get isThisPropertyAccessor => true;
-
- Expression doInvocation(int offset, Arguments arguments) {
- Member interfaceTarget = getter;
- if (interfaceTarget is Field) {
- // TODO(ahe): In strong mode we should probably rewrite this to
- // `this.name.call(arguments)`.
- interfaceTarget = null;
- }
- return buildMethodInvocation(new ThisExpression(), name, arguments, offset);
- }
-
- toString() => "ThisPropertyAccessor()";
-}
-
-class NullAwarePropertyAccessor extends kernel.NullAwarePropertyAccessor
- with BuilderAccessor {
- final BuilderHelper helper;
-
- NullAwarePropertyAccessor(this.helper, int offset, Expression receiver,
- Name name, Member getter, Member setter, DartType type)
- : super(receiver, name, getter, setter, type, offset);
-
- String get plainNameForRead => name.name;
-
- Expression doInvocation(int offset, Arguments arguments) {
- return internalError("Not implemented yet.");
- }
-
- toString() => "NullAwarePropertyAccessor()";
-}
-
-class VariableAccessor extends kernel.VariableAccessor with BuilderAccessor {
- final BuilderHelper helper;
-
- VariableAccessor(this.helper, int offset, VariableDeclaration variable,
- [DartType promotedType])
- : super(variable, promotedType, offset);
-
- String get plainNameForRead => variable.name;
-
- Expression doInvocation(int offset, Arguments arguments) {
- // Normally the offset is at the start of the token, but in this case,
- // because we insert a '.call', we want it at the end instead.
- return buildMethodInvocation(buildSimpleRead(), callName, arguments,
- offset + (variable.name?.length ?? 0));
- }
-
- toString() => "VariableAccessor()";
-}
-
-bool isFieldOrGetter(Member member) {
- return member is Field || (member is Procedure && member.isGetter);
-}
-
-Expression buildMethodInvocation(
- Expression receiver, Name name, Arguments arguments, int offset,
- {bool isNullAware: false}) {
- if (isNullAware) {
- VariableDeclaration variable = new VariableDeclaration.forValue(receiver);
- return makeLet(
- variable,
- new ConditionalExpression(
- buildIsNull(new VariableGet(variable)),
- new NullLiteral(),
- new MethodInvocation(new VariableGet(variable), name, arguments)
- ..fileOffset = offset,
- const DynamicType()));
- } else {
- return new MethodInvocation(receiver, name, arguments)..fileOffset = offset;
- }
-}
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/body_builder.dart ('k') | pkg/front_end/lib/src/fasta/kernel/fasta_accessors.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698