Skip to content

Commit b071c8e

Browse files
scheglovcommit-bot@chromium.org
authored andcommitted
Extract current TypePromotionManager, make clients use LocalVariableTypeProvider.
The clients now use SimpleIdentifier to ask for the type, which is compatible with information provided in FlowAnalysisResult. R=brianwilkerson@google.com, paulberry@google.com Change-Id: Id5165b5a519d2cc737e1bdcb0267b5d155fa698f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107312 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
1 parent 7407198 commit b071c8e

File tree

5 files changed

+463
-357
lines changed

5 files changed

+463
-357
lines changed

pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import 'package:analyzer/src/dart/element/type.dart';
1313
import 'package:analyzer/src/dart/resolver/scope.dart';
1414
import 'package:analyzer/src/error/codes.dart';
1515
import 'package:analyzer/src/generated/resolver.dart';
16+
import 'package:analyzer/src/generated/variable_type_provider.dart';
1617

1718
class MethodInvocationResolver {
1819
static final _nameCall = new Name(null, 'call');
@@ -35,8 +36,8 @@ class MethodInvocationResolver {
3536
/// The URI of [_definingLibrary].
3637
final Uri _definingLibraryUri;
3738

38-
/// The object keeping track of which elements have had their types promoted.
39-
final TypePromotionManager _promoteManager;
39+
/// The object providing promoted or declared types of variables.
40+
final LocalVariableTypeProvider _localVariableTypeProvider;
4041

4142
/// The invocation being resolved.
4243
MethodInvocationImpl _invocation;
@@ -49,7 +50,7 @@ class MethodInvocationResolver {
4950
_inheritance = _resolver.inheritance,
5051
_definingLibrary = _resolver.definingLibrary,
5152
_definingLibraryUri = _resolver.definingLibrary.source.uri,
52-
_promoteManager = _resolver.promoteManager;
53+
_localVariableTypeProvider = _resolver.localVariableTypeProvider;
5354

5455
/// The scope used to resolve identifiers.
5556
Scope get nameScope => _resolver.nameScope;
@@ -400,7 +401,7 @@ class MethodInvocationResolver {
400401
return _setResolution(node, calleeType);
401402
}
402403
if (element is VariableElement) {
403-
var targetType = _promoteManager.getStaticType(element);
404+
var targetType = _localVariableTypeProvider.getType(nameNode);
404405
return _setResolution(node, targetType);
405406
}
406407
// TODO(scheglov) This is a questionable distinction.

0 commit comments

Comments
 (0)