From b3aa72eea5d1a15fc71757f4a047e0a252075097 Mon Sep 17 00:00:00 2001 From: Alexandre Ardhuin Date: Wed, 27 Jun 2018 13:15:25 +0200 Subject: [PATCH 1/3] fix issue in const error handling --- lib/src/ast.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/src/ast.dart b/lib/src/ast.dart index e29308c57..9bf4ebe11 100644 --- a/lib/src/ast.dart +++ b/lib/src/ast.dart @@ -324,7 +324,7 @@ class HasConstErrorListener extends AnalysisErrorListener { @override void onError(AnalysisError error) { - hasConstError = errorCodes.contains(error.errorCode); + hasConstError = hasConstError || errorCodes.contains(error.errorCode); } static const List errorCodes = const [ @@ -340,6 +340,7 @@ class HasConstErrorListener extends AnalysisErrorListener { CompileTimeErrorCode.INVALID_CONSTANT, CompileTimeErrorCode.MISSING_CONST_IN_LIST_LITERAL, CompileTimeErrorCode.MISSING_CONST_IN_MAP_LITERAL, + CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION, CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, From 4a4eefe9e1bb5eca8837ebb70d9341e00de570e6 Mon Sep 17 00:00:00 2001 From: Alexandre Ardhuin Date: Wed, 27 Jun 2018 15:45:03 +0200 Subject: [PATCH 2/3] add tests --- test/all.dart | 2 ++ test/ast_test.dart | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 test/ast_test.dart diff --git a/test/all.dart b/test/all.dart index aaf23670d..19407e5cb 100644 --- a/test/all.dart +++ b/test/all.dart @@ -4,6 +4,7 @@ import 'package:analyzer/src/lint/io.dart'; +import 'ast_test.dart' as ast_test; import 'engine_test.dart' as engine_test; import 'formatter_test.dart' as formatter_test; import 'integration_test.dart' as integration_test; @@ -17,6 +18,7 @@ main() { // Redirect output. outSink = new MockIOSink(); + ast_test.main(); engine_test.main(); formatter_test.main(); integration_test.main(); diff --git a/test/ast_test.dart b/test/ast_test.dart new file mode 100644 index 000000000..699deab7e --- /dev/null +++ b/test/ast_test.dart @@ -0,0 +1,27 @@ +import 'package:analyzer/analyzer.dart'; +import 'package:linter/src/ast.dart'; +import 'package:test/test.dart'; + +main() { + group('HasConstErrorListener', () { + test('has hasConstError false by default', () { + final listener = new HasConstErrorListener(); + expect(listener.hasConstError, isFalse); + }); + test('has hasConstError true with a tracked const error', () { + final listener = new HasConstErrorListener(); + listener.onError(new AnalysisError( + null, null, null, HasConstErrorListener.errorCodes.first)); + expect(listener.hasConstError, isTrue); + }); + test('has hasConstError true even if last error is not related to const', + () { + final listener = new HasConstErrorListener(); + listener.onError(new AnalysisError( + null, null, null, HasConstErrorListener.errorCodes.first)); + listener.onError(new AnalysisError( + null, null, null, CompileTimeErrorCode.AMBIGUOUS_EXPORT)); + expect(listener.hasConstError, isTrue); + }); + }); +} From 786252cd489670a82c19e9cf15daaf8756508345 Mon Sep 17 00:00:00 2001 From: Alexandre Ardhuin Date: Wed, 27 Jun 2018 16:38:06 +0200 Subject: [PATCH 3/3] make travis happy --- test/ast_test.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/ast_test.dart b/test/ast_test.dart index 699deab7e..2cf8053fe 100644 --- a/test/ast_test.dart +++ b/test/ast_test.dart @@ -11,16 +11,16 @@ main() { test('has hasConstError true with a tracked const error', () { final listener = new HasConstErrorListener(); listener.onError(new AnalysisError( - null, null, null, HasConstErrorListener.errorCodes.first)); + null, null, null, CompileTimeErrorCode.CONST_WITH_NON_CONST)); expect(listener.hasConstError, isTrue); }); test('has hasConstError true even if last error is not related to const', () { final listener = new HasConstErrorListener(); listener.onError(new AnalysisError( - null, null, null, HasConstErrorListener.errorCodes.first)); + null, null, null, CompileTimeErrorCode.CONST_WITH_NON_CONST)); listener.onError(new AnalysisError( - null, null, null, CompileTimeErrorCode.AMBIGUOUS_EXPORT)); + null, null, null, CompileTimeErrorCode.ACCESS_PRIVATE_ENUM_FIELD)); expect(listener.hasConstError, isTrue); }); });