remove unused scanner error list
Change-Id: I3dd5d66dcf05ae2bf9f2087724801cae4f3b6036
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97542
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
diff --git a/pkg/front_end/lib/src/fasta/scanner.dart b/pkg/front_end/lib/src/fasta/scanner.dart
index 17c3f09..bcd395a 100644
--- a/pkg/front_end/lib/src/fasta/scanner.dart
+++ b/pkg/front_end/lib/src/fasta/scanner.dart
@@ -6,8 +6,6 @@
import 'dart:convert' show unicodeReplacementCharacterRune, utf8;
-import 'fasta_codes.dart' show LocatedMessage;
-
import '../scanner/token.dart' show Token;
import 'scanner/string_scanner.dart' show StringScanner;
@@ -41,14 +39,6 @@
typedef Token Recover(List<int> bytes, Token tokens, List<int> lineStarts);
abstract class Scanner {
- /// A list of errors that occurred during [tokenize] or `null` if none.
- List<LocatedMessage> errors;
-
- /// Returns `true` if errors should be reported via the [errors] list.
- // TODO(danrubel): Remove this once all scanner clients can process
- // errors reported via the [errors] list.
- bool get reportErrors;
-
/// Returns true if an error occured during [tokenize].
bool get hasErrors;
@@ -62,10 +52,7 @@
final List<int> lineStarts;
final bool hasErrors;
- /// Returns a list of errors that occured during [tokenize] or `null` if none.
- final List<LocatedMessage> errors;
-
- ScannerResult(this.tokens, this.lineStarts, this.hasErrors, this.errors);
+ ScannerResult(this.tokens, this.lineStarts, this.hasErrors);
}
/// Scan/tokenize the given UTF8 [bytes].
@@ -104,6 +91,5 @@
recover ??= defaultRecoveryStrategy;
tokens = recover(bytes, tokens, scanner.lineStarts);
}
- return new ScannerResult(
- tokens, scanner.lineStarts, scanner.hasErrors, scanner.errors);
+ return new ScannerResult(tokens, scanner.lineStarts, scanner.hasErrors);
}
diff --git a/pkg/front_end/lib/src/fasta/scanner/abstract_scanner.dart b/pkg/front_end/lib/src/fasta/scanner/abstract_scanner.dart
index 3377316..bbda63f 100644
--- a/pkg/front_end/lib/src/fasta/scanner/abstract_scanner.dart
+++ b/pkg/front_end/lib/src/fasta/scanner/abstract_scanner.dart
@@ -16,8 +16,7 @@
messageExpectedHexDigit,
messageMissingExponent,
messageUnexpectedDollarInString,
- messageUnterminatedComment,
- templateUnterminatedString;
+ messageUnterminatedComment;
import '../scanner.dart'
show ErrorToken, Keyword, Scanner, buildUnexpectedCharacterToken;
@@ -1262,17 +1261,9 @@
appendSyntheticSubstringToken(TokenType.STRING, start, asciiOnly, suffix);
// Ensure that the error is reported on a visible token
int errorStart = tokenStart < stringOffset ? tokenStart : quoteStart;
- if (reportErrors) {
- addError(errorStart, stringOffset - errorStart,
- templateUnterminatedString.withArguments(prefix, suffix));
- } else {
- appendErrorToken(
- new UnterminatedString(prefix, errorStart, stringOffset));
- }
+ appendErrorToken(new UnterminatedString(prefix, errorStart, stringOffset));
}
- void addError(int charOffset, int length, Message message);
-
int advanceAfterError(bool shouldAdvance) {
if (atEndOfFile()) return $EOF;
if (shouldAdvance) {
diff --git a/pkg/front_end/lib/src/fasta/scanner/array_based_scanner.dart b/pkg/front_end/lib/src/fasta/scanner/array_based_scanner.dart
index 48f16b6..b6e0f09 100644
--- a/pkg/front_end/lib/src/fasta/scanner/array_based_scanner.dart
+++ b/pkg/front_end/lib/src/fasta/scanner/array_based_scanner.dart
@@ -6,8 +6,6 @@
import 'error_token.dart' show ErrorToken, UnmatchedToken;
-import '../fasta_codes.dart' show LocatedMessage, Message;
-
import '../../scanner/token.dart'
show BeginToken, Keyword, KeywordToken, SyntheticToken, Token, TokenType;
@@ -27,14 +25,10 @@
import '../util/link.dart' show Link;
abstract class ArrayBasedScanner extends AbstractScanner {
- List<LocatedMessage> errors;
- final bool reportErrors;
bool hasErrors = false;
- ArrayBasedScanner(bool includeComments,
- {int numberOfBytesHint, bool reportErrors})
- : this.reportErrors = reportErrors ?? false,
- super(includeComments, numberOfBytesHint: numberOfBytesHint);
+ ArrayBasedScanner(bool includeComments, {int numberOfBytesHint})
+ : super(includeComments, numberOfBytesHint: numberOfBytesHint);
/**
* The stack of open groups, e.g [: { ... ( .. :]
@@ -369,10 +363,4 @@
begin.endGroup = tail;
appendErrorToken(new UnmatchedToken(begin));
}
-
- void addError(int charOffset, int length, Message message) {
- hasErrors = true;
- (errors ??= <LocatedMessage>[])
- .add(new LocatedMessage(null, charOffset, length, message));
- }
}
diff --git a/pkg/front_end/lib/src/fasta/scanner/string_scanner.dart b/pkg/front_end/lib/src/fasta/scanner/string_scanner.dart
index 953ebd1f..b5cb240 100644
--- a/pkg/front_end/lib/src/fasta/scanner/string_scanner.dart
+++ b/pkg/front_end/lib/src/fasta/scanner/string_scanner.dart
@@ -26,11 +26,9 @@
int scanOffset = -1;
StringScanner(String string,
- {bool includeComments: false,
- bool scanLazyAssignmentOperators: false,
- bool reportErrors})
+ {bool includeComments: false, bool scanLazyAssignmentOperators: false})
: string = ensureZeroTermination(string),
- super(includeComments, reportErrors: reportErrors);
+ super(includeComments);
static String ensureZeroTermination(String string) {
return (string.isEmpty || string.codeUnitAt(string.length - 1) != 0)
diff --git a/pkg/front_end/lib/src/fasta/scanner/utf8_bytes_scanner.dart b/pkg/front_end/lib/src/fasta/scanner/utf8_bytes_scanner.dart
index e16d159..eec14d4 100644
--- a/pkg/front_end/lib/src/fasta/scanner/utf8_bytes_scanner.dart
+++ b/pkg/front_end/lib/src/fasta/scanner/utf8_bytes_scanner.dart
@@ -81,9 +81,8 @@
* array whose last element is '0' to signal the end of the file. If this
* is not the case, the entire array is copied before scanning.
*/
- Utf8BytesScanner(this.bytes, {bool includeComments: false, bool reportErrors})
- : super(includeComments,
- numberOfBytesHint: bytes.length, reportErrors: reportErrors) {
+ Utf8BytesScanner(this.bytes, {bool includeComments: false})
+ : super(includeComments, numberOfBytesHint: bytes.length) {
assert(bytes.last == 0);
// Skip a leading BOM.
if (containsBomAt(0)) byteOffset += 3;
diff --git a/pkg/front_end/lib/src/scanner/errors.dart b/pkg/front_end/lib/src/scanner/errors.dart
index 9e54680..6cdb878 100644
--- a/pkg/front_end/lib/src/scanner/errors.dart
+++ b/pkg/front_end/lib/src/scanner/errors.dart
@@ -174,22 +174,6 @@
}
}
-void translateScanError(
- Code errorCode, int charOffset, int length, ReportError reportError) {
- switch (errorCode.analyzerCodes?.first) {
- case "UNTERMINATED_STRING_LITERAL":
- // TODO(paulberry,ahe): Fasta reports the error location as the entire
- // string; analyzer expects the end of the string.
- reportError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL,
- charOffset + length - 1, null);
- break;
-
- default:
- throw new UnimplementedError(
- '$errorCode "${errorCode.analyzerCodes?.first}"');
- }
-}
-
/**
* Determines whether the given [charOffset], which came from the non-EOF token
* [token], represents the end of the input.
diff --git a/pkg/front_end/test/fasta/parser/type_info_test.dart b/pkg/front_end/test/fasta/parser/type_info_test.dart
index eced64d..531df46 100644
--- a/pkg/front_end/test/fasta/parser/type_info_test.dart
+++ b/pkg/front_end/test/fasta/parser/type_info_test.dart
@@ -58,8 +58,7 @@
recover ??= defaultRecoveryStrategy;
tokens = recover(bytes, tokens, scanner.lineStarts);
}
- return new ScannerResult(
- tokens, scanner.lineStarts, scanner.hasErrors, scanner.errors);
+ return new ScannerResult(tokens, scanner.lineStarts, scanner.hasErrors);
}
@reflectiveTest
diff --git a/pkg/front_end/test/scanner_fasta_test.dart b/pkg/front_end/test/scanner_fasta_test.dart
index a2a0633..d9ca57f 100644
--- a/pkg/front_end/test/scanner_fasta_test.dart
+++ b/pkg/front_end/test/scanner_fasta_test.dart
@@ -98,16 +98,6 @@
var firstToken = scanner.tokenize();
Token token = new Token.eof(-1)..setNext(firstToken);
- // Translate listed scanner errors
- if (scanner.errors != null) {
- for (LocatedMessage error in scanner.errors) {
- translateScanError(error.code, error.charOffset, error.length,
- (ScannerErrorCode errorCode, int offset, List<Object> arguments) {
- listener.errors.add(new TestError(offset, errorCode, arguments));
- });
- }
- }
-
// Translate error tokens
if (scanner.hasErrors) {
Token next = firstToken;
@@ -367,28 +357,7 @@
/// Base class for scanner tests that examine the token stream in Fasta format.
abstract class ScannerTest_Fasta_Base {
- List<LocatedMessage> scanErrors;
-
- Token scan(String source, {int errorCount});
-
- expectError(Code code, int charOffset, int length) {
- if (scanErrors == null) {
- fail('Expected $code but found no errors');
- }
- for (LocatedMessage e in scanErrors) {
- if (e.code == code && e.charOffset == charOffset && e.length == length) {
- return;
- }
- }
- final msg = new StringBuffer();
- msg.writeln('Expected:');
- msg.writeln(' $code at $charOffset, $length');
- msg.writeln('but found:');
- for (LocatedMessage e in scanErrors) {
- msg.writeln(' ${e.code} at ${e.charOffset}, ${e.length}');
- }
- fail(msg.toString());
- }
+ Token scan(String source);
expectToken(Token token, TokenType type, int offset, int length,
{bool isSynthetic: false, String lexeme}) {
@@ -431,8 +400,7 @@
}
void test_string_simple_unterminated_interpolation_block() {
- Token token = scan(r'"foo ${bar', errorCount: 1);
- expectError(codeUnterminatedString, 0, 10);
+ Token token = scan(r'"foo ${bar');
expectToken(token, TokenType.STRING, 0, 5, lexeme: '"foo ');
token = token.next;
@@ -456,12 +424,12 @@
expectToken(token, TokenType.STRING, 10, 0, isSynthetic: true, lexeme: '"');
token = token.next;
- expect(token.isEof, isTrue);
+ expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
+ expect((token as fasta.UnterminatedString).start, '"');
}
void test_string_simple_unterminated_interpolation_block2() {
- Token token = scan(r'"foo ${bar(baz[', errorCount: 1);
- expectError(codeUnterminatedString, 0, 15);
+ Token token = scan(r'"foo ${bar(baz[');
expectToken(token, TokenType.STRING, 0, 5, lexeme: '"foo ');
token = token.next;
@@ -513,12 +481,12 @@
expectToken(token, TokenType.STRING, 15, 0, isSynthetic: true, lexeme: '"');
token = token.next;
- expect(token.isEof, isTrue);
+ expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
+ expect((token as fasta.UnterminatedString).start, '"');
}
void test_string_simple_missing_interpolation_identifier() {
- Token token = scan(r'"foo $', errorCount: 1);
- expectError(codeUnterminatedString, 0, 6);
+ Token token = scan(r'"foo $');
expectToken(token, TokenType.STRING, 0, 5, lexeme: '"foo ');
token = token.next;
@@ -536,68 +504,68 @@
expectToken(token, TokenType.STRING, 6, 0, isSynthetic: true, lexeme: '"');
token = token.next;
- expect(token.isEof, isTrue);
+ expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
+ expect((token as fasta.UnterminatedString).start, '"');
}
void test_string_multi_unterminated() {
- Token token = scan("'''string", errorCount: 1);
- expectError(codeUnterminatedString, 0, 9);
+ Token token = scan("'''string");
expectToken(token, TokenType.STRING, 0, 9,
lexeme: "'''string'''", isSynthetic: true);
token = token.next;
- expect(token.isEof, isTrue);
+ expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
+ expect((token as fasta.UnterminatedString).start, "'''");
}
void test_string_raw_multi_unterminated() {
- Token token = scan("r'''string", errorCount: 1);
- expectError(codeUnterminatedString, 0, 10);
+ Token token = scan("r'''string");
expectToken(token, TokenType.STRING, 0, 10,
lexeme: "r'''string'''", isSynthetic: true);
token = token.next;
- expect(token.isEof, isTrue);
+ expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
+ expect((token as fasta.UnterminatedString).start, "r'''");
}
void test_string_raw_simple_unterminated_eof() {
- Token token = scan("r'string", errorCount: 1);
- expectError(codeUnterminatedString, 0, 8);
+ Token token = scan("r'string");
expectToken(token, TokenType.STRING, 0, 8,
lexeme: "r'string'", isSynthetic: true);
token = token.next;
- expect(token.isEof, isTrue);
+ expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
+ expect((token as fasta.UnterminatedString).start, "r'");
}
void test_string_raw_simple_unterminated_eol() {
- Token token = scan("r'string\n", errorCount: 1);
- expectError(codeUnterminatedString, 0, 8);
+ Token token = scan("r'string\n");
expectToken(token, TokenType.STRING, 0, 8,
lexeme: "r'string'", isSynthetic: true);
token = token.next;
- expect(token.isEof, isTrue);
+ expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
+ expect((token as fasta.UnterminatedString).start, "r'");
}
void test_string_simple_unterminated_eof() {
- Token token = scan("'string", errorCount: 1);
- expectError(codeUnterminatedString, 0, 7);
+ Token token = scan("'string");
expectToken(token, TokenType.STRING, 0, 7,
lexeme: "'string'", isSynthetic: true);
token = token.next;
- expect(token.isEof, isTrue);
+ expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
+ expect((token as fasta.UnterminatedString).start, "'");
}
void test_string_simple_unterminated_eol() {
- Token token = scan("'string\n", errorCount: 1);
- expectError(codeUnterminatedString, 0, 7);
-
+ Token token = scan("'string\n");
expectToken(token, TokenType.STRING, 0, 7,
lexeme: "'string'", isSynthetic: true);
token = token.next;
- expect(token.isEof, isTrue);
+ expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
+ expect((token as fasta.UnterminatedString).start, "'");
}
void test_match_angle_brackets() {
@@ -756,25 +724,23 @@
/// Scanner tests that exercise the Fasta scanner directly.
@reflectiveTest
class ScannerTest_Fasta_Direct_UTF8 extends ScannerTest_Fasta_Direct {
- createScanner(String source, {bool includeComments, bool reportErrors}) {
+ createScanner(String source, {bool includeComments}) {
List<int> encoded = utf8.encode(source).toList(growable: true);
encoded.add(0); // Ensure 0 terminted bytes for UTF8 scanner
return new fasta.Utf8BytesScanner(encoded,
- includeComments: includeComments, reportErrors: reportErrors);
+ includeComments: includeComments);
}
}
/// Scanner tests that exercise the Fasta scanner directly.
@reflectiveTest
class ScannerTest_Fasta_Direct extends ScannerTest_Fasta_Base {
- createScanner(String source, {bool includeComments, bool reportErrors}) =>
- new fasta.StringScanner(source,
- includeComments: includeComments, reportErrors: reportErrors);
+ createScanner(String source, {bool includeComments}) =>
+ new fasta.StringScanner(source, includeComments: includeComments);
@override
- Token scan(String source, {int errorCount}) {
- Scanner scanner =
- createScanner(source, includeComments: true, reportErrors: true);
+ Token scan(String source) {
+ Scanner scanner = createScanner(source, includeComments: true);
final Token first = scanner.tokenize();
Token token = first;
while (!token.isEof) {
@@ -786,8 +752,6 @@
}
token = next;
}
- scanErrors = scanner.errors;
- expect(scanErrors, errorCount == null ? isNull : hasLength(errorCount));
return first;
}