Fix tests that are probably opinions how something should be resolved.

R=brianwilkerson@google.com

Change-Id: I981feeb3e7a128789b8b7fd38e81e4e19beed22e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101600
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 20bdd9a..26e8d2c 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -7922,7 +7922,9 @@
     if (_initializer == null) {
       if (linkedNode != null) {
         if (linkedContext.readInitializer(linkedNode) != null) {
-          _initializer = new FunctionElementImpl('', -1)..isSynthetic = true;
+          _initializer = new FunctionElementImpl('', -1)
+            ..isSynthetic = true
+            .._type = FunctionTypeImpl.synthetic(type, [], []);
         }
       }
       if (_unlinkedVariable != null) {
diff --git a/pkg/analyzer/lib/src/generated/declaration_resolver.dart b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
index 05f9cbb..31c567f 100644
--- a/pkg/analyzer/lib/src/generated/declaration_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
@@ -147,7 +147,6 @@
   @override
   void visitEnumDeclaration(EnumDeclaration node) {
     ClassElement element = _match(node.name, _walker.getEnum());
-    node.name.staticType = _typeProvider.typeType;
     resolveMetadata(node, node.metadata, element);
     _walk(new ElementWalker.forClass(element), () {
       for (EnumConstantDeclaration constant in node.constants) {
diff --git a/pkg/analyzer/lib/src/summary2/declaration_splicer.dart b/pkg/analyzer/lib/src/summary2/declaration_splicer.dart
index cdf77a6..f562b51 100644
--- a/pkg/analyzer/lib/src/summary2/declaration_splicer.dart
+++ b/pkg/analyzer/lib/src/summary2/declaration_splicer.dart
@@ -447,9 +447,10 @@
   ) {
     var element = _walker.getVariable();
     _match(partial.name, element);
-
-    partial.initializer = full.initializer;
-    _buildLocalElements(partial.initializer);
+    _walk(_ElementWalker.forVariable(element), () {
+      partial.initializer = full.initializer;
+      _buildLocalElements(partial.initializer);
+    });
   }
 
   void _variableDeclarationList(
@@ -546,6 +547,8 @@
         _parameters = element.parameters,
         _typeParameters = element.typeParameters;
 
+  _ElementWalker.forVariable(VariableElement element) : element = element;
+
   PropertyAccessorElement getAccessor() {
     return _accessors[_accessorIndex++];
   }
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
index 48504cb..83168dd 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
@@ -9,6 +9,7 @@
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/member.dart';
@@ -1203,7 +1204,11 @@
     FunctionExpressionInvocation invocation = field.initializer;
     FunctionExpression closure = invocation.function.unParenthesized;
     FunctionElementImpl closureElement = closure.declaredElement;
-    expect(closureElement.enclosingElement, same(fieldInitializer));
+    if (AnalysisDriver.useSummary2) {
+      expect(closureElement.enclosingElement, same(field.declaredElement));
+    } else {
+      expect(closureElement.enclosingElement, same(fieldInitializer));
+    }
   }
 
   test_closure_inTopLevelVariable() async {
@@ -1221,7 +1226,11 @@
     FunctionExpressionInvocation invocation = variable.initializer;
     FunctionExpression closure = invocation.function.unParenthesized;
     FunctionElementImpl closureElement = closure.declaredElement;
-    expect(closureElement.enclosingElement, same(variableInitializer));
+    if (AnalysisDriver.useSummary2) {
+      expect(closureElement.enclosingElement, same(variable.declaredElement));
+    } else {
+      expect(closureElement.enclosingElement, same(variableInitializer));
+    }
   }
 
   test_conditionalExpression() async {
@@ -5439,8 +5448,13 @@
       assertMember(invocation.methodName, 'C<int>', mElement);
       assertType(invocation.methodName, '<U>(int, U) → Map<int, U>');
 
-      _assertArgumentToParameter(arguments[0], mElement.parameters[0]);
-      _assertArgumentToParameter(arguments[1], mElement.parameters[1]);
+      if (AnalysisDriver.useSummary2) {
+        _assertArgumentToParameter2(arguments[0], 'int');
+        _assertArgumentToParameter2(arguments[1], 'double');
+      } else {
+        _assertArgumentToParameter(arguments[0], mElement.parameters[0]);
+        _assertArgumentToParameter(arguments[1], mElement.parameters[1]);
+      }
     }
   }
 
@@ -5560,8 +5574,13 @@
     expect(invocation.staticType, typeProvider.stringType);
 
     List<Expression> arguments = invocation.argumentList.arguments;
-    _assertArgumentToParameter(arguments[0], funElement.parameters[0]);
-    _assertArgumentToParameter(arguments[1], funElement.parameters[1]);
+    if (AnalysisDriver.useSummary2) {
+      _assertArgumentToParameter2(arguments[0], 'int');
+      _assertArgumentToParameter2(arguments[1], 'int');
+    } else {
+      _assertArgumentToParameter(arguments[0], funElement.parameters[0]);
+      _assertArgumentToParameter(arguments[1], funElement.parameters[1]);
+    }
   }
 
   test_methodInvocation_notFunction_local_dynamic() async {
@@ -7217,7 +7236,7 @@
 
     SimpleIdentifier dName = enumNode.name;
     expect(dName.staticElement, same(enumElement));
-    expect(dName.staticType, typeProvider.typeType);
+    expect(dName.staticType, isNull);
 
     {
       var aElement = enumElement.getField('A');
@@ -8747,6 +8766,21 @@
     }
   }
 
+  /// Assert that the [argument] has the [expectedType]. If the [argument] is
+  /// a [NamedExpression], the name must be resolved to the same parameter.
+  void _assertArgumentToParameter2(Expression argument, String expectedType,
+      {DartType memberType}) {
+    ParameterElement actual = argument.staticParameterElement;
+    var actualType = actual.type;
+    expect('$actualType', expectedType);
+
+    if (argument is NamedExpression) {
+      SimpleIdentifier name = argument.name.label;
+      expect(name.staticElement, same(actual));
+      expect(name.staticType, isNull);
+    }
+  }
+
   /// Assert that the given [creation] creates instance of the [classElement].
   /// Limitations: no import prefix, no type arguments, unnamed constructor.
   void _assertConstructorInvocation(
diff --git a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
index 4a036db..d3502e5 100644
--- a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
+++ b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
@@ -6,6 +6,7 @@
 
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -366,7 +367,11 @@
 ''');
     var v = mainUnit.topLevelVariables[0];
     expect(v.type.toString(), 'dynamic');
-    expect(v.initializer.type.toString(), '() → Null');
+    if (AnalysisDriver.useSummary2) {
+      expect(v.initializer.type.toString(), '() → dynamic');
+    } else {
+      expect(v.initializer.type.toString(), '() → Null');
+    }
   }
 
   test_bottom_inClosure() async {
@@ -2411,7 +2416,18 @@
   }
 
   test_infer_use_of_void() async {
-    await checkFileElement('''
+    if (AnalysisDriver.useSummary2) {
+      await checkFileElement('''
+class B {
+  void f() {}
+}
+class C extends B {
+  f() {}
+}
+var x = /*error:TOP_LEVEL_INSTANCE_METHOD*/new C().f();
+''');
+    } else {
+      await checkFileElement('''
 class B {
   void f() {}
 }
@@ -2420,6 +2436,7 @@
 }
 var x = /*error:TOP_LEVEL_INSTANCE_METHOD*/new C()./*error:USE_OF_VOID_RESULT*/f();
 ''');
+    }
   }
 
   test_inferConstsTransitively() async {