Fix error reporting when it makes tests behave differently in checked and unchecked modes.
R=brianwilkerson@google.com
Bug:
Change-Id: Ib5f7b3c531bfd767e5640ff45e1ad9e7ef0148a9
Reviewed-on: https://dart-review.googlesource.com/31882
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/fasta/error_converter.dart b/pkg/analyzer/lib/src/fasta/error_converter.dart
index 02e3688..0976bb8 100644
--- a/pkg/analyzer/lib/src/fasta/error_converter.dart
+++ b/pkg/analyzer/lib/src/fasta/error_converter.dart
@@ -18,8 +18,10 @@
/// [errorReporter].
FastaErrorReporter(this.errorReporter);
- void reportByCode(String analyzerCode, int offset, int length,
- Map<String, dynamic> arguments) {
+ void reportByCode(
+ String analyzerCode, int offset, int length, Message message) {
+ Map<String, dynamic> arguments = message.arguments;
+
String stringOrTokenLexeme() {
var text = arguments['string'];
if (text == null) {
@@ -293,8 +295,8 @@
StrongModeCode.INVALID_CAST_NEW_EXPR, offset, length);
return;
case "INVALID_MODIFIER_ON_SETTER":
- errorReporter?.reportErrorForOffset(
- CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER, offset, length);
+ _reportByCode(CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER, message,
+ offset, length);
return;
case "INVALID_OPERATOR":
String text = stringOrTokenLexeme();
@@ -302,8 +304,8 @@
ParserErrorCode.INVALID_OPERATOR, offset, length, [text]);
return;
case "INVALID_OPERATOR_FOR_SUPER":
- errorReporter?.reportErrorForOffset(
- ParserErrorCode.INVALID_OPERATOR_FOR_SUPER, offset, length);
+ _reportByCode(ParserErrorCode.INVALID_OPERATOR_FOR_SUPER, message,
+ offset, length);
return;
case "LIBRARY_DIRECTIVE_NOT_FIRST":
errorReporter?.reportErrorForOffset(
@@ -547,6 +549,19 @@
void reportMessage(Message message, int offset, int length) {
Code code = message.code;
- reportByCode(code.analyzerCode, offset, length, message.arguments);
+ reportByCode(code.analyzerCode, offset, length, message);
+ }
+
+ void _reportByCode(
+ ErrorCode errorCode, Message message, int offset, int length) {
+ if (errorReporter != null) {
+ errorReporter.reportError(new AnalysisError.forValues(
+ errorReporter.source,
+ offset,
+ length,
+ errorCode,
+ message.message,
+ null));
+ }
}
}
diff --git a/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart b/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
index e552464..5fcef73 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
@@ -1709,48 +1709,6 @@
@override
@failingTest
- test_invalidModifierOnSetter_member_async() async {
- // AnalysisException: Element mismatch in /test.dart at /test.dart
- await super.test_invalidModifierOnSetter_member_async();
- }
-
- @override
- @failingTest
- test_invalidModifierOnSetter_member_asyncStar() async {
- // AnalysisException: Element mismatch in /test.dart at /test.dart
- await super.test_invalidModifierOnSetter_member_asyncStar();
- }
-
- @override
- @failingTest
- test_invalidModifierOnSetter_member_syncStar() async {
- // AnalysisException: Element mismatch in /test.dart at /test.dart
- await super.test_invalidModifierOnSetter_member_syncStar();
- }
-
- @override
- @failingTest
- test_invalidModifierOnSetter_topLevel_async() async {
- // AnalysisException: Element mismatch in /test.dart at /test.dart
- await super.test_invalidModifierOnSetter_topLevel_async();
- }
-
- @override
- @failingTest
- test_invalidModifierOnSetter_topLevel_asyncStar() async {
- // AnalysisException: Element mismatch in /test.dart at /test.dart
- await super.test_invalidModifierOnSetter_topLevel_asyncStar();
- }
-
- @override
- @failingTest
- test_invalidModifierOnSetter_topLevel_syncStar() async {
- // AnalysisException: Element mismatch in /test.dart at /test.dart
- await super.test_invalidModifierOnSetter_topLevel_syncStar();
- }
-
- @override
- @failingTest
test_invalidReferenceToThis_factoryConstructor() async {
// Expected 1 errors of type CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS, found 0
await super.test_invalidReferenceToThis_factoryConstructor();
diff --git a/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart b/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
index 07abe23..85e8b1c 100644
--- a/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
@@ -4,6 +4,7 @@
import 'package:analyzer/src/dart/error/hint_codes.dart';
import 'package:analyzer/src/generated/source.dart';
+import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'non_hint_code_driver_test.dart';
@@ -18,6 +19,11 @@
/// them, or know that this is an analyzer problem.
const potentialAnalyzerProblem = const Object();
+/// Tests marked with this annotation fail because of a Fasta problem.
+class FastaProblem {
+ const FastaProblem(String issueUri);
+}
+
@reflectiveTest
class NonHintCodeTest_Kernel extends NonHintCodeTest_Driver {
@override
@@ -68,6 +74,15 @@
verify([source]);
}
+ @override
+ @failingTest
+ @FastaProblem('https://github.com/dart-lang/sdk/issues/28434')
+ test_unusedImport_annotationOnDirective() async {
+ // TODO(scheglov) We don't yet parse annotations on import directives.
+ fail('This test fails in checked mode (indirectly)');
+// await super.test_unusedImport_annotationOnDirective();
+ }
+
@failingTest
@override
@potentialAnalyzerProblem
diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart
index 44c6a1d..eef6b16 100644
--- a/pkg/analyzer/test/generated/parser_fasta_test.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_test.dart
@@ -758,14 +758,6 @@
@override
@failingTest
- void test_invalidOperatorAfterSuper_assignableExpression() {
- // TODO(brianwilkerson) Wrong errors:
- // Expected 1 errors of type ParserErrorCode.INVALID_OPERATOR_FOR_SUPER, found 0
- super.test_invalidOperatorAfterSuper_assignableExpression();
- }
-
- @override
- @failingTest
void test_invalidOperatorAfterSuper_primaryExpression() {
// TODO(brianwilkerson) Does not recover.
// Expected: true