Rewrite AST when resolving constants.
R=brianwilkerson@google.com
Change-Id: I952a5848e498fac54b29202edce66eea019d3414
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101483
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/summary2/ast_resolver.dart b/pkg/analyzer/lib/src/summary2/ast_resolver.dart
index 71812dd..1771231 100644
--- a/pkg/analyzer/lib/src/summary2/ast_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_resolver.dart
@@ -22,7 +22,6 @@
AstNode node, {
ClassElement enclosingClassElement,
ExecutableElement enclosingExecutableElement,
- bool doAstRewrite = false,
}) {
var featureSet = node.thisOrAncestorOfType<CompilationUnit>().featureSet;
var source = _FakeSource();
@@ -33,13 +32,6 @@
nameScope: _nameScope);
node.accept(typeResolverVisitor);
- if (doAstRewrite) {
- var astRewriteVisitor = new AstRewriteVisitor(_linker.typeSystem,
- _library, source, _linker.typeProvider, errorListener,
- nameScope: _nameScope);
- node.accept(astRewriteVisitor);
- }
-
var variableResolverVisitor = new VariableResolverVisitor(
_library, source, _linker.typeProvider, errorListener,
nameScope: _nameScope, localVariableInfo: LocalVariableInfo());
@@ -62,6 +54,16 @@
node.accept(resolverVisitor);
}
+
+ void rewriteAst(AstNode node) {
+ var source = _FakeSource();
+ var errorListener = AnalysisErrorListener.NULL_LISTENER;
+
+ var astRewriteVisitor = new AstRewriteVisitor(_linker.typeSystem, _library,
+ source, _linker.typeProvider, errorListener,
+ nameScope: _nameScope);
+ node.accept(astRewriteVisitor);
+ }
}
class _FakeSource implements Source {
diff --git a/pkg/analyzer/lib/src/summary2/top_level_inference.dart b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
index 52b911f..5b35375 100644
--- a/pkg/analyzer/lib/src/summary2/top_level_inference.dart
+++ b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
@@ -69,10 +69,10 @@
void _variableDeclarationList(VariableDeclarationList node) {
if (node.isConst && node.type != null) {
for (var variable in node.variables) {
- var initializer = variable.initializer;
- if (initializer != null) {
+ if (variable.initializer != null) {
var astResolver = AstResolver(linker, _library, _scope);
- astResolver.resolve(initializer, doAstRewrite: true);
+ astResolver.rewriteAst(variable.initializer);
+ astResolver.resolve(variable.initializer);
}
}
}
@@ -278,7 +278,8 @@
void _resolveInitializer() {
var astResolver = AstResolver(_walker._linker, _library, _scope);
- astResolver.resolve(_node.initializer, doAstRewrite: true);
+ astResolver.rewriteAst(_node.initializer);
+ astResolver.resolve(_node.initializer);
}
}