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