diff --git a/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart b/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart index 80a965d10aa..27b17ac5f7d 100644 --- a/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart +++ b/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart @@ -100,7 +100,11 @@ class DartUnitOccurrencesComputerVisitor extends RecursiveAstVisitor { @override void visitDeclaredVariablePattern(DeclaredVariablePattern node) { - _addOccurrence(node.declaredElement2!, node.name); + if (node.declaredElement2 case BindPatternVariableElement2(:var join2?)) { + _addOccurrence(join2.baseElement, node.name); + } else { + _addOccurrence(node.declaredElement2!, node.name); + } super.visitDeclaredVariablePattern(node); } diff --git a/pkg/analysis_server/test/analysis/notification_occurrences_test.dart b/pkg/analysis_server/test/analysis/notification_occurrences_test.dart index 0fa59d663af..c152dab72e6 100644 --- a/pkg/analysis_server/test/analysis/notification_occurrences_test.dart +++ b/pkg/analysis_server/test/analysis/notification_occurrences_test.dart @@ -576,6 +576,18 @@ String f(int char) { '''); } + Future test_patternVariable_ifCase_logicalOr() async { + await assertOccurrences(kind: ElementKind.LOCAL_VARIABLE, ''' +void f(Object? x) { + if (x case int /*[0*/test/*0]*/ || [int /*[1*/test/*1]*/] when /*[2*/test/*2]*/ > 0) { + /*[3*/test/*3]*/; + /*[4*/test/*4]*/ = 1; + /*[5*/test/*5]*/ += 2; + } +} +'''); + } + Future test_prefix() async { await assertOccurrences(kind: ElementKind.PREFIX, ''' import '' as /*[0*/p/*0]*/;