| 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 6bfb7c800abe2be7428b9c22749e0ab91ff327b9..94244964aec4b3df74ed8939b611d2375131ad4f 100644
|
| --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| @@ -4,13 +4,9 @@
|
|
|
| library fasta.body_builder;
|
|
|
| -import '../fasta_codes.dart'
|
| - show
|
| - FastaMessage,
|
| - codeConstFieldWithoutInitializer,
|
| - codeExpectedButGot,
|
| - codeExpectedFunctionBody,
|
| - codeFinalFieldWithoutInitializer;
|
| +import '../fasta_codes.dart' show BoundFastaMessage, FastaMessage;
|
| +
|
| +import '../fasta_codes.dart' as fasta;
|
|
|
| import '../parser/parser.dart'
|
| show Assert, FormalParameterType, MemberKind, optional;
|
| @@ -956,13 +952,13 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| bool isSetter: false,
|
| bool isStatic: false}) {
|
| String errorName = isSuper ? "super.$name" : name;
|
| - String message;
|
| + BoundFastaMessage message;
|
| if (isGetter) {
|
| - message = "Getter not found: '$errorName'.";
|
| + message = fasta.codeGetterNotFound.bind(errorName);
|
| } else if (isSetter) {
|
| - message = "Setter not found: '$errorName'.";
|
| + message = fasta.codeSetterNotFound.bind(errorName);
|
| } else {
|
| - message = "Method not found: '$errorName'.";
|
| + message = fasta.codeMethodNotFound.bind(errorName);
|
| }
|
| if (constantExpressionRequired) {
|
| // TODO(ahe): Use error below instead of building a compile-time error,
|
| @@ -977,7 +973,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| isSetter: isSetter,
|
| isStatic: isStatic,
|
| isTopLevel: !isStatic && !isSuper);
|
| - deprecated_warning(message, charOffset);
|
| + warning(message, charOffset);
|
| return new KernelSyntheticExpression(new Throw(error));
|
| }
|
| }
|
| @@ -1540,8 +1536,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| typeArgument = typeArguments.first;
|
| if (typeArguments.length > 1) {
|
| typeArgument = null;
|
| - deprecated_warningNotError(
|
| - "Too many type arguments on List literal.", beginToken.charOffset);
|
| + warningNotError(
|
| + fasta.codeListLiteralTooManyTypeArguments, beginToken.charOffset);
|
| }
|
| }
|
| push(new KernelListLiteral(expressions,
|
| @@ -1582,8 +1578,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| if (typeArguments.length != 2) {
|
| keyType = null;
|
| valueType = null;
|
| - deprecated_warningNotError(
|
| - "Map literal requires two type arguments.", beginToken.charOffset);
|
| + warningNotError(
|
| + fasta.codeListLiteralTypeArgumentMismatch, beginToken.charOffset);
|
| } else {
|
| keyType = typeArguments[0];
|
| valueType = typeArguments[1];
|
| @@ -1634,7 +1630,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| Builder builder = scope.lookup(name, charOffset, uri);
|
| if (builder == null) {
|
| deprecated_warning("Type not found: '$name'.", charOffset);
|
| - return const InvalidType();
|
| + return const DynamicType();
|
| } else {
|
| return kernelTypeFromBuilder(builder, arguments, charOffset);
|
| }
|
| @@ -1649,8 +1645,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| ProblemBuilder problem = builder;
|
| deprecated_addCompileTimeError(charOffset, problem.deprecated_message);
|
| } else {
|
| - deprecated_warningNotError(
|
| - "Not a type: '${builder.fullNameForErrors}'.", charOffset);
|
| + warningNotError(
|
| + fasta.codeNotAType.bind(builder.fullNameForErrors), charOffset);
|
| }
|
| // TODO(ahe): Create an error somehow.
|
| return const InvalidType();
|
| @@ -1696,8 +1692,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| if (name is TypeDeclarationAccessor) {
|
| push(name.buildType(arguments));
|
| } else if (name is FastaAccessor) {
|
| - deprecated_warningNotError(
|
| - "'${beginToken.lexeme}' isn't a type.", beginToken.charOffset);
|
| + warningNotError(
|
| + fasta.codeNotAType.bind(beginToken.lexeme), beginToken.charOffset);
|
| push(const InvalidType());
|
| } else if (name is TypeBuilder) {
|
| push(name.build(library));
|
| @@ -1708,6 +1704,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| } else {
|
| deprecated_internalProblem("Unhandled: '${name.runtimeType}'.");
|
| }
|
| + // TODO(ahe): Unused code fasta.codeNonInstanceTypeVariableUse.
|
| }
|
|
|
| @override
|
| @@ -3024,18 +3021,18 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| @override
|
| void handleRecoverableError(Token token, FastaMessage message) {
|
| bool silent = hasParserError ||
|
| - message.code == codeFinalFieldWithoutInitializer ||
|
| - message.code == codeConstFieldWithoutInitializer;
|
| + message.code == fasta.codeFinalFieldWithoutInitializer ||
|
| + message.code == fasta.codeConstFieldWithoutInitializer;
|
| deprecated_addCompileTimeError(message.charOffset, message.message,
|
| silent: silent);
|
| }
|
|
|
| @override
|
| Token handleUnrecoverableError(Token token, FastaMessage message) {
|
| - if (enableNative && message.code == codeExpectedFunctionBody) {
|
| + if (enableNative && message.code == fasta.codeExpectedFunctionBody) {
|
| Token recover = library.loader.target.skipNativeClause(token);
|
| if (recover != null) return recover;
|
| - } else if (message.code == codeExpectedButGot) {
|
| + } else if (message.code == fasta.codeExpectedButGot) {
|
| String expected = message.arguments["string"];
|
| const List<String> trailing = const <String>[")", "}", ";", ","];
|
| if (trailing.contains(token.stringValue) && trailing.contains(expected)) {
|
| @@ -3086,9 +3083,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
|
|
| Expression buildAbstractClassInstantiationError(String className,
|
| [int charOffset = -1]) {
|
| - deprecated_warning(
|
| - "The class '$className' is abstract and can't be instantiated.",
|
| - charOffset);
|
| + warning(fasta.codeAbstractClassInstantiation.bind(className), charOffset);
|
| Builder constructor = library.loader.getAbstractClassInstantiationError();
|
| return new KernelSyntheticExpression(new Throw(buildStaticInvocation(
|
| constructor.target,
|
| @@ -3235,6 +3230,10 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| super.deprecated_warning(message, charOffset);
|
| }
|
|
|
| + void warningNotError(BoundFastaMessage bind, int charOffset) {
|
| + super.warning(bind, charOffset);
|
| + }
|
| +
|
| @override
|
| DartType validatedTypeVariableUse(
|
| TypeParameterType type, int offset, bool nonInstanceAccessIsError) {
|
|
|