From 803cdf99c504b6ef36df094565571e32f4f6941f Mon Sep 17 00:00:00 2001 From: pq Date: Fri, 21 Apr 2023 12:50:56 -0700 Subject: [PATCH 1/3] fix `non_constant_identifier_names` pattern field over-reporting --- .../rules/non_constant_identifier_names.dart | 3 ++ .../non_constant_identifier_names_test.dart | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/lib/src/rules/non_constant_identifier_names.dart b/lib/src/rules/non_constant_identifier_names.dart index 390e64eef..754ccf200 100644 --- a/lib/src/rules/non_constant_identifier_names.dart +++ b/lib/src/rules/non_constant_identifier_names.dart @@ -7,6 +7,7 @@ import 'package:analyzer/dart/ast/token.dart'; import 'package:analyzer/dart/ast/visitor.dart'; import '../analyzer.dart'; +import '../extensions.dart'; import '../util/ascii_utils.dart'; import '../utils.dart'; @@ -100,6 +101,7 @@ class _Visitor extends SimpleAstVisitor { @override void visitDeclaredVariablePattern(DeclaredVariablePattern node) { + if (node.parent.isFieldNameShortcut) return; checkIdentifier(node.name); } @@ -131,6 +133,7 @@ class _Visitor extends SimpleAstVisitor { @override void visitPatternField(PatternField node) { + if (node.isFieldNameShortcut) return; var pattern = node.pattern; if (pattern is DeclaredVariablePattern) { checkIdentifier(pattern.name); diff --git a/test/rules/non_constant_identifier_names_test.dart b/test/rules/non_constant_identifier_names_test.dart index 0ab0e405e..0e8ce93ad 100644 --- a/test/rules/non_constant_identifier_names_test.dart +++ b/test/rules/non_constant_identifier_names_test.dart @@ -29,6 +29,25 @@ void f() { ]); } + test_patternIfStatement_recordField_ok() async { + await assertNoDiagnostics(r''' +void f(Object o) { + if (o case (:int AB, var b)) { } +} +'''); + } + + test_patternIfStatement_recordField() async { + await assertDiagnostics(r''' +void f(Object o) { + if (o case (a: int AB, BC: int CD)) { } +} +''', [ + lint(40, 2), + lint(52, 2), + ]); + } + test_patternIfStatement() async { await assertDiagnostics(r''' void f() { @@ -85,6 +104,16 @@ void f() { ]); } + test_patternRecordField_shortcut_ok() async { + await assertNoDiagnostics(r''' +f(Object o) { + switch(o) { + case (:int AB, var b): + } +} +'''); + } + test_patternRecordField_underscores() async { await assertDiagnostics(r''' void f() { From b45a2baaec3a932273890006ae1f42bfd70a6080 Mon Sep 17 00:00:00 2001 From: pq Date: Fri, 21 Apr 2023 12:54:53 -0700 Subject: [PATCH 2/3] ++ --- test/rules/non_constant_identifier_names_test.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/rules/non_constant_identifier_names_test.dart b/test/rules/non_constant_identifier_names_test.dart index 0e8ce93ad..e8c8a8596 100644 --- a/test/rules/non_constant_identifier_names_test.dart +++ b/test/rules/non_constant_identifier_names_test.dart @@ -110,6 +110,10 @@ f(Object o) { switch(o) { case (:int AB, var b): } + switch(o) { + case (:int AB?, var b): + case (:int AB!, var b): + } } '''); } From 6f39c8a85619b8d6291ffe81db56eb9ac24f2f4e Mon Sep 17 00:00:00 2001 From: pq Date: Fri, 21 Apr 2023 12:55:52 -0700 Subject: [PATCH 3/3] sort --- .../non_constant_identifier_names_test.dart | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/rules/non_constant_identifier_names_test.dart b/test/rules/non_constant_identifier_names_test.dart index e8c8a8596..32f0e15d6 100644 --- a/test/rules/non_constant_identifier_names_test.dart +++ b/test/rules/non_constant_identifier_names_test.dart @@ -29,12 +29,14 @@ void f() { ]); } - test_patternIfStatement_recordField_ok() async { - await assertNoDiagnostics(r''' -void f(Object o) { - if (o case (:int AB, var b)) { } + test_patternIfStatement() async { + await assertDiagnostics(r''' +void f() { + if ([1,2] case [int AB, int c]) { } } -'''); +''', [ + lint(33, 2), + ]); } test_patternIfStatement_recordField() async { @@ -48,14 +50,12 @@ void f(Object o) { ]); } - test_patternIfStatement() async { - await assertDiagnostics(r''' -void f() { - if ([1,2] case [int AB, int c]) { } + test_patternIfStatement_recordField_ok() async { + await assertNoDiagnostics(r''' +void f(Object o) { + if (o case (:int AB, var b)) { } } -''', [ - lint(33, 2), - ]); +'''); } test_patternIfStatement_underscores() async {