Track location for invalid types

Change-Id: I6c500f977498b5e54e581273bf3a3b171fc2e61b
Reviewed-on: https://dart-review.googlesource.com/28720
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
This commit is contained in:
Peter von der Ahé 2017-12-12 15:34:31 +00:00 committed by commit-bot@chromium.org
parent a11d7a1643
commit 40d80969d7
4 changed files with 9 additions and 10 deletions

View file

@ -4,7 +4,7 @@
library fasta.invalid_type_builder;
import '../fasta_codes.dart' show Message;
import '../fasta_codes.dart' show LocatedMessage;
import 'builder.dart' show TypeBuilder, TypeDeclarationBuilder;
@ -13,7 +13,7 @@ abstract class InvalidTypeBuilder<T extends TypeBuilder, R>
InvalidTypeBuilder(String name, int charOffset, [Uri fileUri])
: super(null, 0, name, null, charOffset, fileUri);
Message get message;
LocatedMessage get message;
String get debugName => "InvalidTypeBuilder";
}

View file

@ -1012,9 +1012,8 @@ class TypeDeclarationAccessor extends ReadOnlyAccessor {
int offset = offsetForToken(token);
if (declaration is KernelInvalidTypeBuilder) {
KernelInvalidTypeBuilder declaration = this.declaration;
helper.library.addWarning(
declaration.message, declaration.charOffset, declaration.fileUri);
helper.addWarning(declaration.message, offset, token.length);
helper.addWarning(
declaration.message.messageObject, offset, token.length);
super.expression = new Throw(
new StringLiteral(declaration.message.message)
..fileOffset = offsetForToken(token))

View file

@ -6,7 +6,7 @@ library fasta.kernel_invalid_type_builder;
import 'package:kernel/ast.dart' show DartType, InvalidType;
import '../fasta_codes.dart' show Message, templateTypeNotFound;
import '../fasta_codes.dart' show LocatedMessage, Message, templateTypeNotFound;
import 'kernel_builder.dart'
show InvalidTypeBuilder, KernelTypeBuilder, LibraryBuilder;
@ -14,11 +14,12 @@ import 'kernel_builder.dart'
class KernelInvalidTypeBuilder
extends InvalidTypeBuilder<KernelTypeBuilder, DartType> {
@override
final Message message;
final LocatedMessage message;
KernelInvalidTypeBuilder(String name, int charOffset, Uri fileUri,
[Message message])
: message = message ?? templateTypeNotFound.withArguments(name),
: message = (message ?? templateTypeNotFound.withArguments(name))
.withLocation(fileUri, charOffset),
super(name, charOffset, fileUri);
DartType buildType(
@ -29,7 +30,7 @@ class KernelInvalidTypeBuilder
/// [Arguments] have already been built.
DartType buildTypesWithBuiltArguments(
LibraryBuilder library, List<DartType> arguments) {
library.addWarning(message, charOffset, fileUri);
library.addWarning(message.messageObject, message.charOffset, message.uri);
return const InvalidType();
}
}

View file

@ -670,7 +670,6 @@ class SourceLoader<L> extends Loader<L> {
message.code == fasta_codes.codeConstructorNotFound ||
message.code == fasta_codes.codeSuperclassHasNoDefaultConstructor ||
message.code == fasta_codes.codeTypeArgumentsOnTypeVariable ||
message.code == fasta_codes.codeTypeNotFound ||
message.code == fasta_codes.codeUnspecified)) {
// TODO(ahe): All warnings should have a charOffset, but currently, some
// warnings lack them.