CQ. Fix NPE in DartUnitOccurrencesComputerVisitor when unresolved import prefix.
Saw a crash in logs: Null check operator used on a null value package:analysis_server/src/domains/analysis/occurrences_dart.dart 253:32 DartUnitOccurrencesComputerVisitor.visitImportPrefixReference package:analyzer/src/dart/ast/ast.dart 13353:15 ImportPrefixReferenceImpl.accept package:analyzer/src/dart/ast/ast.dart 16897:19 NamedTypeImpl.visitChildren package:analyzer/dart/ast/visitor.g.dart 474:10 GeneralizingAstVisitor.visitNode package:analyzer/dart/ast/visitor.g.dart 687:50 GeneralizingAstVisitor.visitTypeAnnotation package:analyzer/dart/ast/visitor.g.dart 456:40 GeneralizingAstVisitor.visitNamedType package:analysis_server/src/domains/analysis/occurrences_dart.dart 282:11 DartUnitOccurrencesComputerVisitor.visitNamedType Change-Id: I2b06026dad093187c74b4e1b6c7371aaf648a480 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/456121 Reviewed-by: Samuel Rawlins <srawlins@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
committed by
Commit Queue
parent
f8e61ad148
commit
ad73b67f0d
@@ -250,7 +250,9 @@ class DartUnitOccurrencesComputerVisitor extends GeneralizingAstVisitor<void> {
|
||||
|
||||
@override
|
||||
void visitImportPrefixReference(ImportPrefixReference node) {
|
||||
_addOccurrence(node.element!, node.name);
|
||||
if (node.element case var element?) {
|
||||
_addOccurrence(element, node.name);
|
||||
}
|
||||
|
||||
super.visitImportPrefixReference(node);
|
||||
}
|
||||
|
||||
@@ -646,6 +646,15 @@ void foo() {}
|
||||
''');
|
||||
}
|
||||
|
||||
Future<void> 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<void> test_prefix_wildcard() async {
|
||||
// Ensure no crash.
|
||||
await assertOccurrences(kind: ElementKind.PREFIX, '''
|
||||
|
||||
Reference in New Issue
Block a user