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);
   }
 }