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 99d83c7a7fd..0e47149ac96 100644 --- a/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart +++ b/pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart @@ -250,7 +250,9 @@ class DartUnitOccurrencesComputerVisitor extends GeneralizingAstVisitor { @override void visitImportPrefixReference(ImportPrefixReference node) { - _addOccurrence(node.element!, node.name); + if (node.element case var element?) { + _addOccurrence(element, node.name); + } super.visitImportPrefixReference(node); } diff --git a/pkg/analysis_server/test/analysis/notification_occurrences_test.dart b/pkg/analysis_server/test/analysis/notification_occurrences_test.dart index 43d834741a0..4652d6b5a64 100644 --- a/pkg/analysis_server/test/analysis/notification_occurrences_test.dart +++ b/pkg/analysis_server/test/analysis/notification_occurrences_test.dart @@ -646,6 +646,15 @@ void foo() {} '''); } + Future test_prefix_null() async { + // Note, we use `core` just to have some prefix. + // The actual check is no crash on unresolved `prefix`. + await assertOccurrences(kind: ElementKind.PREFIX, ''' +import 'dart:core' as /*[0*/core/*0]*/; +void f(prefix.A? _, /*[1*/core.int/*1]*/ _) {} +'''); + } + Future test_prefix_wildcard() async { // Ensure no crash. await assertOccurrences(kind: ElementKind.PREFIX, '''