| Index: pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| index 7e768cd69e87712806ad98efc64920f4dce936fc..d7ee1e38a45b6e4efde35582c76f725413db029e 100644
|
| --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| @@ -4,58 +4,39 @@
|
|
|
| library fasta.body_builder;
|
|
|
| -import '../fasta_codes.dart' show Message;
|
| -
|
| -import '../fasta_codes.dart' as fasta;
|
| -
|
| -import '../parser/parser.dart'
|
| - show Assert, FormalParameterType, MemberKind, optional;
|
| -
|
| -import '../parser/identifier_context.dart' show IdentifierContext;
|
| -
|
| -import '../parser/native_support.dart' show skipNativeClause;
|
| -
|
| -import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart';
|
| -
|
| -import 'package:front_end/src/fasta/kernel/utils.dart' show offsetForToken;
|
| -
|
| -import 'package:front_end/src/fasta/type_inference/type_inferrer.dart'
|
| - show TypeInferrer;
|
| -
|
| -import 'package:front_end/src/fasta/type_inference/type_promotion.dart'
|
| - show TypePromoter;
|
| -
|
| import 'package:kernel/ast.dart'
|
| hide InvalidExpression, InvalidInitializer, InvalidStatement;
|
|
|
| +import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
|
| +
|
| import 'package:kernel/clone.dart' show CloneVisitor;
|
|
|
| +import 'package:kernel/core_types.dart' show CoreTypes;
|
| +
|
| import 'package:kernel/transformations/flags.dart' show TransformerFlag;
|
|
|
| -import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
|
| +import '../../scanner/token.dart' show BeginToken, Token;
|
|
|
| -import 'package:kernel/core_types.dart' show CoreTypes;
|
| +import '../deprecated_problems.dart'
|
| + show deprecated_InputError, deprecated_formatUnexpected;
|
|
|
| -import 'frontend_accessors.dart' show buildIsNull, makeBinary;
|
| +import '../fasta_codes.dart' as fasta;
|
|
|
| -import '../messages.dart' as messages show getLocationFromUri;
|
| +import '../fasta_codes.dart' show Message;
|
|
|
| -import '../../scanner/token.dart' show BeginToken, Token;
|
| +import '../messages.dart' as messages show getLocationFromUri;
|
|
|
| -import '../scanner/token.dart' show isBinaryOperator, isMinusOperator;
|
| +import '../modifier.dart' show Modifier, constMask, finalMask;
|
|
|
| -import '../deprecated_problems.dart'
|
| - show
|
| - deprecated_InputError,
|
| - deprecated_formatUnexpected,
|
| - deprecated_internalProblem;
|
| +import '../parser/identifier_context.dart' show IdentifierContext;
|
|
|
| -import '../source/scope_listener.dart'
|
| - show JumpTargetKind, NullValue, ScopeListener;
|
| +import '../parser/native_support.dart' show skipNativeClause;
|
|
|
| -import '../scope.dart' show ProblemBuilder;
|
| +import '../parser/parser.dart'
|
| + show Assert, FormalParameterType, MemberKind, optional;
|
|
|
| -import 'fasta_accessors.dart';
|
| +import '../problems.dart'
|
| + show internalProblem, unexpected, unhandled, unsupported;
|
|
|
| import '../quote.dart'
|
| show
|
| @@ -66,7 +47,18 @@ import '../quote.dart'
|
| unescapeLastStringPart,
|
| unescapeString;
|
|
|
| -import '../modifier.dart' show Modifier, constMask, finalMask;
|
| +import '../scanner/token.dart' show isBinaryOperator, isMinusOperator;
|
| +
|
| +import '../scope.dart' show ProblemBuilder;
|
| +
|
| +import '../source/scope_listener.dart'
|
| + show JumpTargetKind, NullValue, ScopeListener;
|
| +
|
| +import '../type_inference/type_inferrer.dart' show TypeInferrer;
|
| +
|
| +import '../type_inference/type_promotion.dart' show TypePromoter;
|
| +
|
| +import 'frontend_accessors.dart' show buildIsNull, makeBinary;
|
|
|
| import 'redirecting_factory_body.dart'
|
| show
|
| @@ -74,10 +66,16 @@ import 'redirecting_factory_body.dart'
|
| getRedirectingFactoryBody,
|
| getRedirectionTarget;
|
|
|
| -import 'kernel_builder.dart';
|
| +import 'utils.dart' show offsetForToken;
|
|
|
| import '../names.dart';
|
|
|
| +import 'fasta_accessors.dart';
|
| +
|
| +import 'kernel_builder.dart';
|
| +
|
| +import 'kernel_shadow_ast.dart';
|
| +
|
| class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| @override
|
| final KernelLibraryBuilder library;
|
| @@ -230,7 +228,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| } else if (node is ProblemBuilder) {
|
| return buildProblemExpression(node, -1);
|
| } else {
|
| - return deprecated_internalProblem("Unhandled: ${node.runtimeType}");
|
| + return unhandled("${node.runtimeType}", "toValue", -1, uri);
|
| }
|
| }
|
|
|
| @@ -441,8 +439,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| if (field.next != null) {
|
| // TODO(ahe): This can happen, for example, if a final field is
|
| // combined with a setter.
|
| - deprecated_internalProblem(
|
| - "Unhandled: '${field.name}' has more than one declaration.");
|
| + unhandled("field with more than one declaration", field.name,
|
| + field.charOffset, field.fileUri);
|
| }
|
| field.initializer = initializer;
|
| _typeInferrer.inferFieldInitializer(
|
| @@ -621,7 +619,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| } else if (builder is KernelProcedureBuilder) {
|
| builder.asyncModifier = asyncModifier;
|
| } else {
|
| - deprecated_internalProblem("Unhandled: ${builder.runtimeType}");
|
| + unhandled("${builder.runtimeType}", "finishFunction", builder.charOffset,
|
| + builder.fileUri);
|
| }
|
| }
|
|
|
| @@ -1154,8 +1153,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| }
|
| return builder;
|
| } else {
|
| - if (builder.hasProblem && builder is! deprecated_AccessErrorBuilder)
|
| - return builder;
|
| + if (builder.hasProblem && builder is! AccessErrorBuilder) return builder;
|
| Builder setter;
|
| if (builder.isSetter) {
|
| setter = builder;
|
| @@ -1496,8 +1494,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| } else if (variableOrExpression is Expression) {
|
| begin = new KernelExpressionStatement(variableOrExpression);
|
| } else {
|
| - return deprecated_internalProblem(
|
| - "Unhandled: ${variableOrExpression.runtimeType}");
|
| + return unhandled("${variableOrExpression.runtimeType}", "endForStatement",
|
| + forKeyword.charOffset, uri);
|
| }
|
| exitLocalScope();
|
| JumpTarget continueTarget = exitContinueTarget();
|
| @@ -1610,7 +1608,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| } else if (name is Operator) {
|
| return name.name;
|
| } else {
|
| - return deprecated_internalProblem("Unhandled: ${name.runtimeType}");
|
| + return unhandled("${name.runtimeType}", "symbolPartToString", -1, uri);
|
| }
|
| }
|
|
|
| @@ -1667,7 +1665,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| dynamic name = pop();
|
| if (name is List) {
|
| if (name.length != 2) {
|
| - deprecated_internalProblem("Unexpected: $name.length");
|
| + unexpected("${name.length}", "2", beginToken.charOffset, uri);
|
| }
|
| var prefix = name[0];
|
| if (prefix is Identifier) {
|
| @@ -1709,7 +1707,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| } else if (name is String) {
|
| push(kernelTypeFromString(name, arguments, beginToken.charOffset));
|
| } else {
|
| - deprecated_internalProblem("Unhandled: '${name.runtimeType}'.");
|
| + unhandled(
|
| + "${name.runtimeType}", "handleType", beginToken.charOffset, uri);
|
| }
|
| // TODO(ahe): Unused code fasta.messageNonInstanceTypeVariableUse.
|
| }
|
| @@ -1845,8 +1844,11 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| ProcedureBuilder member = this.member;
|
| KernelFormalParameterBuilder formal = member.getFormal(name.name);
|
| if (formal == null) {
|
| - deprecated_internalProblem(
|
| - "Internal error: formal missing for '${name.name}'");
|
| + internalProblem(
|
| + fasta.templateInternalProblemNotFoundIn
|
| + .withArguments(name.name, "formals"),
|
| + member.charOffset,
|
| + member.fileUri);
|
| } else {
|
| variable = formal.build(library);
|
| variable.initializer = name.initializer;
|
| @@ -2056,8 +2058,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| Name incrementOperator(Token token) {
|
| if (optional("++", token)) return plusName;
|
| if (optional("--", token)) return minusName;
|
| - return deprecated_internalProblem(
|
| - "Unknown increment operator: ${token.lexeme}");
|
| + return unhandled(token.lexeme, "incrementOperator", token.charOffset, uri);
|
| }
|
|
|
| @override
|
| @@ -3417,12 +3418,12 @@ abstract class ContextAccessor extends FastaAccessor {
|
|
|
| ContextAccessor(this.helper, this.token, this.accessor);
|
|
|
| - String get plainNameForRead =>
|
| - deprecated_internalProblem("Unsupported operation.");
|
| + String get plainNameForRead {
|
| + return unsupported("plainNameForRead", token.charOffset, helper.uri);
|
| + }
|
|
|
| Expression doInvocation(int charOffset, Arguments arguments) {
|
| - return deprecated_internalProblem(
|
| - "Unhandled: ${runtimeType}", uri, charOffset);
|
| + return unhandled("${runtimeType}", "doInvocation", charOffset, uri);
|
| }
|
|
|
| Expression buildSimpleRead();
|
| @@ -3461,7 +3462,9 @@ abstract class ContextAccessor extends FastaAccessor {
|
| return makeInvalidWrite(null);
|
| }
|
|
|
| - makeInvalidRead() => deprecated_internalProblem("not supported");
|
| + makeInvalidRead() {
|
| + return unsupported("makeInvalidRead", token.charOffset, helper.uri);
|
| + }
|
|
|
| Expression makeInvalidWrite(Expression value) {
|
| return helper.deprecated_buildCompileTimeError(
|
| @@ -3532,7 +3535,8 @@ class DelayedAssignment extends ContextAccessor {
|
| return accessor.buildCompoundAssignment(mustacheName, value,
|
| offset: offsetForToken(token), voidContext: voidContext);
|
| } else {
|
| - return deprecated_internalProblem("Unhandled: $assignmentOperator");
|
| + return unhandled(
|
| + assignmentOperator, "handleAssignment", token.charOffset, helper.uri);
|
| }
|
| }
|
|
|
| @@ -3649,11 +3653,9 @@ class LabelTarget extends Builder implements JumpTarget {
|
|
|
| bool get hasUsers => breakTarget.hasUsers || continueTarget.hasUsers;
|
|
|
| - List<Statement> get users =>
|
| - deprecated_internalProblem("Unsupported operation.");
|
| + List<Statement> get users => unsupported("users", charOffset, fileUri);
|
|
|
| - JumpTargetKind get kind =>
|
| - deprecated_internalProblem("Unsupported operation.");
|
| + JumpTargetKind get kind => unsupported("kind", charOffset, fileUri);
|
|
|
| bool get isBreakTarget => true;
|
|
|
| @@ -3670,7 +3672,7 @@ class LabelTarget extends Builder implements JumpTarget {
|
| }
|
|
|
| void addGoto(ContinueSwitchStatement statement) {
|
| - deprecated_internalProblem("Unsupported operation.");
|
| + unsupported("addGoto", charOffset, fileUri);
|
| }
|
|
|
| void resolveBreaks(LabeledStatement target) {
|
| @@ -3682,7 +3684,7 @@ class LabelTarget extends Builder implements JumpTarget {
|
| }
|
|
|
| void resolveGotos(SwitchCase target) {
|
| - deprecated_internalProblem("Unsupported operation.");
|
| + unsupported("resolveGotos", charOffset, fileUri);
|
| }
|
|
|
| @override
|
| @@ -3808,7 +3810,7 @@ String getNodeName(Object node) {
|
| } else if (node is FastaAccessor) {
|
| return node.plainNameForRead;
|
| } else {
|
| - return deprecated_internalProblem("Unhandled: ${node.runtimeType}");
|
| + return unhandled("${node.runtimeType}", "getNodeName", -1, null);
|
| }
|
| }
|
|
|
| @@ -3828,6 +3830,7 @@ AsyncMarker asyncMarkerFromTokens(Token asyncToken, Token starToken) {
|
| return AsyncMarker.AsyncStar;
|
| }
|
| } else {
|
| - return deprecated_internalProblem("Unknown async modifier: $asyncToken");
|
| + return unhandled(asyncToken.lexeme, "asyncMarkerFromTokens",
|
| + asyncToken.charOffset, null);
|
| }
|
| }
|
|
|