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 {