Skip to content

Commit 0fcd35f

Browse files
committed
Use Scope lookup directly in ReferenceResolver.
[email protected] Change-Id: Ic066b9a6470b628e1663c10e452c299e850db6d3 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/155845 Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 4de9f9f commit 0fcd35f

File tree

1 file changed

+26
-13
lines changed

1 file changed

+26
-13
lines changed

pkg/analyzer/lib/src/summary2/reference_resolver.dart

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import 'package:analyzer/src/dart/element/element.dart';
1313
import 'package:analyzer/src/dart/element/scope.dart';
1414
import 'package:analyzer/src/dart/element/type.dart';
1515
import 'package:analyzer/src/dart/element/type_system.dart';
16-
import 'package:analyzer/src/dart/resolver/scope.dart';
1716
import 'package:analyzer/src/summary/idl.dart';
1817
import 'package:analyzer/src/summary2/function_type_builder.dart';
1918
import 'package:analyzer/src/summary2/lazy_ast.dart';
@@ -492,19 +491,33 @@ class ReferenceResolver extends ThrowingAstVisitor<void> {
492491

493492
@override
494493
void visitTypeName(TypeName node) {
495-
var typeName = node.name;
496-
if (typeName is SimpleIdentifier && typeName.name == 'void') {
497-
node.type = VoidTypeImpl.instance;
498-
return;
499-
}
494+
var typeIdentifier = node.name;
495+
496+
Element element;
497+
if (typeIdentifier is PrefixedIdentifier) {
498+
var prefix = typeIdentifier.prefix;
499+
var prefixName = prefix.name;
500+
var prefixElement = scope.lookup2(prefixName).getter;
501+
prefix.staticElement = prefixElement;
502+
503+
if (prefixElement is PrefixElement) {
504+
var nameNode = typeIdentifier.identifier;
505+
var name = nameNode.name;
506+
507+
element = prefixElement.scope.lookup2(name).getter;
508+
nameNode.staticElement = element;
509+
}
510+
} else {
511+
var nameNode = typeIdentifier as SimpleIdentifier;
512+
var name = nameNode.name;
513+
514+
if (name == 'void') {
515+
node.type = VoidTypeImpl.instance;
516+
return;
517+
}
500518

501-
var element = scope.lookupIdentifier(typeName);
502-
if (typeName is SimpleIdentifier) {
503-
typeName.staticElement = element;
504-
} else if (typeName is PrefixedIdentifier) {
505-
typeName.identifier.staticElement = element;
506-
SimpleIdentifier prefix = typeName.prefix;
507-
prefix.staticElement = scope.lookupIdentifier(prefix);
519+
element = scope.lookup2(name).getter;
520+
nameNode.staticElement = element;
508521
}
509522

510523
node.typeArguments?.accept(this);

0 commit comments

Comments
 (0)