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

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

Issue 2768533002: Fasta type inference prototype #2
Patch Set: Rework atop 415c868589d02e98eb839f48150f4203d5cecdb0 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
index 8b44a31c2c7adedf7b815e2e0ed9977d8d17f32e..4e49d8a95bb7b99468095b20333ebeffe74e4620 100644
--- a/pkg/front_end/lib/src/fasta/kernel/builder_accessors.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/builder_accessors.dart
@@ -8,6 +8,7 @@ export 'frontend_accessors.dart' show wrapInvalid;
import 'frontend_accessors.dart' show Accessor;
+import 'package:front_end/src/fasta/builder/shadow_ast.dart';
import 'package:kernel/ast.dart';
import '../errors.dart' show internalError;
@@ -40,7 +41,7 @@ abstract class BuilderHelper {
Expression toSuperMethodInvocation(MethodInvocation node);
- Expression toValue(node);
+ ShadowExpression toValue(node);
Member lookupSuperMember(Name name, {bool isSetter: false});
@@ -48,15 +49,16 @@ abstract class BuilderHelper {
finishSend(Object receiver, Arguments arguments, int charOffset);
- Expression buildCompileTimeError(error, [int charOffset]);
+ ShadowExpression buildCompileTimeError(error, [int charOffset]);
Initializer buildCompileTimeErrorIntializer(error, [int charOffset]);
Expression buildStaticInvocation(Procedure target, Arguments arguments);
- Expression buildProblemExpression(ProblemBuilder builder, int charOffset);
+ ShadowExpression buildProblemExpression(
+ ProblemBuilder builder, int charOffset);
- Expression throwNoSuchMethodError(
+ ShadowExpression throwNoSuchMethodError(
String name, Arguments arguments, int charOffset,
{bool isSuper: false, isGetter: false, isSetter: false});
}
@@ -72,7 +74,7 @@ abstract class BuilderAccessor implements Accessor {
String get plainNameForWrite => plainNameForRead;
- Expression buildForEffect() => buildSimpleRead();
+ ShadowExpression buildForEffect() => buildSimpleRead();
Initializer buildFieldInitializer(
Map<String, FieldInitializer> initializers) {
@@ -96,12 +98,12 @@ abstract class BuilderAccessor implements Accessor {
/* Expression | BuilderAccessor */ buildPropertyAccess(
IncompleteSend send, bool isNullAware) {
if (send is SendAccessor) {
- return buildMethodInvocation(
- buildSimpleRead(), send.name, send.arguments, send.charOffset,
+ return buildMethodInvocation(buildSimpleRead() as Expression, send.name,
+ send.arguments, send.charOffset,
isNullAware: isNullAware);
} else {
- return PropertyAccessor.make(helper, send.charOffset, buildSimpleRead(),
- send.name, null, null, isNullAware);
+ return PropertyAccessor.make(helper, send.charOffset,
+ buildSimpleRead() as Expression, send.name, null, null, isNullAware);
}
}
@@ -172,7 +174,7 @@ abstract class CompileTimeErrorAccessor implements BuilderAccessor {
return buildError();
}
- Expression buildSimpleRead() => buildError();
+ ShadowExpression buildSimpleRead() => buildError() as ShadowExpression;
Expression makeInvalidRead() => buildError();
@@ -193,9 +195,9 @@ class ThisAccessor extends BuilderAccessor {
String get plainNameForRead => internalError(isSuper ? "super" : "this");
- Expression buildSimpleRead() {
+ ShadowExpression buildSimpleRead() {
if (!isSuper) {
- return new ThisExpression();
+ return new ThisExpression() as ShadowExpression;
} else {
return helper.buildCompileTimeError(
"Can't use `super` as an expression.", charOffset);
@@ -286,7 +288,7 @@ class ThisAccessor extends BuilderAccessor {
Expression buildAssignmentError() {
String message =
isSuper ? "Can't assign to 'super'." : "Can't assign to 'this'.";
- return helper.buildCompileTimeError(message, charOffset);
+ return helper.buildCompileTimeError(message, charOffset) as Expression;
}
toString() => "ThisAccessor($charOffset${isSuper ? ', super' : ''})";
@@ -311,7 +313,7 @@ class IncompleteError extends IncompleteSend with CompileTimeErrorAccessor {
: super(helper, charOffset, null);
Expression buildError() {
- return helper.buildCompileTimeError(error, charOffset);
+ return helper.buildCompileTimeError(error, charOffset) as Expression;
}
}
@@ -325,7 +327,7 @@ class SendAccessor extends IncompleteSend {
String get plainNameForRead => name.name;
- Expression buildSimpleRead() {
+ ShadowExpression buildSimpleRead() {
return internalError("Unhandled");
}
@@ -355,7 +357,8 @@ class SendAccessor extends IncompleteSend {
return buildThrowNoSuchMethodError(arguments);
}
if (builder.hasProblem) {
- result = helper.buildProblemExpression(builder, charOffset);
+ result =
+ helper.buildProblemExpression(builder, charOffset) as Expression;
} else {
Member target = builder.target;
if (target != null) {
@@ -374,7 +377,7 @@ class SendAccessor extends IncompleteSend {
}
} else {
result = buildMethodInvocation(
- helper.toValue(receiver), name, arguments, charOffset,
+ helper.toValue(receiver) as Expression, name, arguments, charOffset,
isNullAware: isNullAware);
}
return result;
@@ -414,7 +417,7 @@ class IncompletePropertyAccessor extends IncompleteSend {
String get plainNameForRead => name.name;
- Expression buildSimpleRead() => internalError("Unhandled");
+ ShadowExpression buildSimpleRead() => internalError("Unhandled");
Expression buildAssignment(Expression value, {bool voidContext: false}) {
return internalError("Unhandled");
@@ -454,8 +457,8 @@ class IncompletePropertyAccessor extends IncompleteSend {
return new StaticAccessor.fromBuilder(
helper, builder, charOffset, setter);
}
- return PropertyAccessor.make(helper, charOffset, helper.toValue(receiver),
- name, null, null, isNullAware);
+ return PropertyAccessor.make(helper, charOffset,
+ helper.toValue(receiver) as Expression, name, null, null, isNullAware);
}
Expression buildNullAwareAssignment(Expression value, DartType type,
@@ -499,7 +502,7 @@ class IndexAccessor extends kernel.IndexAccessor with BuilderAccessor {
Expression doInvocation(int charOffset, Arguments arguments) {
return buildMethodInvocation(
- buildSimpleRead(), callName, arguments, charOffset);
+ buildSimpleRead() as Expression, callName, arguments, charOffset);
}
toString() => "IndexAccessor()";
@@ -591,8 +594,8 @@ class StaticAccessor extends kernel.StaticAccessor with BuilderAccessor {
Expression doInvocation(int charOffset, Arguments arguments) {
if (readTarget == null || isFieldOrGetter(readTarget)) {
- return buildMethodInvocation(buildSimpleRead(), callName, arguments,
- charOffset + (readTarget?.name?.name?.length ?? 0));
+ return buildMethodInvocation(buildSimpleRead() as Expression, callName,
+ arguments, charOffset + (readTarget?.name?.name?.length ?? 0));
} else {
return helper.buildStaticInvocation(readTarget, arguments)
..fileOffset = charOffset;
@@ -615,7 +618,7 @@ class SuperPropertyAccessor extends kernel.SuperPropertyAccessor
Expression doInvocation(int charOffset, Arguments arguments) {
if (getter == null || isFieldOrGetter(getter)) {
return buildMethodInvocation(
- buildSimpleRead(), callName, arguments, charOffset);
+ buildSimpleRead() as Expression, callName, arguments, charOffset);
} else {
return new DirectMethodInvocation(new ThisExpression(), getter, arguments)
..fileOffset = charOffset;
@@ -640,7 +643,7 @@ class ThisIndexAccessor extends kernel.ThisIndexAccessor with BuilderAccessor {
Expression doInvocation(int charOffset, Arguments arguments) {
return buildMethodInvocation(
- buildSimpleRead(), callName, arguments, charOffset);
+ buildSimpleRead() as Expression, callName, arguments, charOffset);
}
toString() => "ThisIndexAccessor()";
@@ -662,7 +665,7 @@ class SuperIndexAccessor extends kernel.SuperIndexAccessor
Expression doInvocation(int charOffset, Arguments arguments) {
return buildMethodInvocation(
- buildSimpleRead(), callName, arguments, charOffset);
+ buildSimpleRead() as Expression, callName, arguments, charOffset);
}
toString() => "SuperIndexAccessor()";
@@ -725,8 +728,8 @@ class VariableAccessor extends kernel.VariableAccessor with BuilderAccessor {
Expression doInvocation(int charOffset, 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,
- charOffset + (variable.name?.length ?? 0));
+ return buildMethodInvocation(buildSimpleRead() as Expression, callName,
+ arguments, charOffset + (variable.name?.length ?? 0));
}
toString() => "VariableAccessor()";
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/body_builder.dart ('k') | pkg/front_end/lib/src/fasta/kernel/frontend_accessors.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698