Version 2.11.0-230.0.dev
Merge commit 'e5f1b4bb2cf3fe136d8a8fc7313619cf93c07944' into 'dev'
diff --git a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
index e637557..0d6be78 100644
--- a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
@@ -297,6 +297,9 @@
CompileTimeErrorCode.UNDEFINED_METHOD: [
DataDriven.newInstance,
],
+ CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER: [
+ DataDriven.newInstance,
+ ],
CompileTimeErrorCode.UNDEFINED_SETTER: [
DataDriven.newInstance,
],
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart b/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
index a12a858..d9d82b5 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
@@ -101,7 +101,11 @@
return const [ElementKind.extensionKind];
} else if (node is InstanceCreationExpression) {
return const [ElementKind.constructorKind];
+ } else if (node is Label) {
+ var argumentList = node.parent.parent;
+ return _kindsForNode(argumentList.parent, child: argumentList);
} else if (node is MethodInvocation) {
+ assert(child != null);
if (node.target == child) {
return const [
ElementKind.classKind,
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/modify_parameters.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/modify_parameters.dart
index 3cd6143..a2c627e 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/modify_parameters.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/modify_parameters.dart
@@ -226,6 +226,11 @@
if (parent is InvocationExpression) {
var argumentList = parent.argumentList;
return _Data(argumentList);
+ } else if (parent is Label) {
+ var argumentList = parent.parent.parent;
+ if (argumentList is ArgumentList) {
+ return _Data(argumentList);
+ }
}
return null;
}
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index d04d443..f7ef511 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -591,6 +591,7 @@
],
CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER: [
ChangeArgumentName.newInstance,
+ DataDriven.newInstance,
],
CompileTimeErrorCode.UNDEFINED_SETTER: [
DataDriven.newInstance,
diff --git a/pkg/analysis_server/test/src/services/correction/fix/data_driven/modify_parameters_test.dart b/pkg/analysis_server/test/src/services/correction/fix/data_driven/modify_parameters_test.dart
index 290dd94..675f008 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/data_driven/modify_parameters_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/data_driven/modify_parameters_test.dart
@@ -642,6 +642,31 @@
''');
}
+ Future<void>
+ test_remove_middle_optionalNamed_withArg_notRenamed_deprecated() async {
+ setPackageContent('''
+class C {
+ void m({int a, @deprecated int b, int c}) {}
+}
+''');
+ setPackageData(
+ _modify(['C', 'm'], [RemoveParameter(NamedParameterReference('b'))]));
+ await resolveTestUnit('''
+import '$importUri';
+
+void f(C c) {
+ c.m(a: 0, b: 1, c: 2);
+}
+''');
+ await assertHasFix('''
+import '$importUri';
+
+void f(C c) {
+ c.m(a: 0, c: 2);
+}
+''');
+ }
+
Future<void> test_remove_multiple_deprecated() async {
setPackageContent('''
class C {
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 9dbb2f8d..7320f05 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -85,7 +85,7 @@
/// TODO(scheglov) Clean up the list of implicitly analyzed files.
class AnalysisDriver implements AnalysisDriverGeneric {
/// The version of data format, should be incremented on every format change.
- static const int DATA_VERSION = 112;
+ static const int DATA_VERSION = 114;
/// The length of the list returned by [_computeDeclaredVariablesSignature].
static const int _declaredVariablesSignatureLength = 4;
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index b88a11e..b20f3f8 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -42,6 +42,7 @@
import 'package:analyzer/src/generated/utilities_dart.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:analyzer/src/summary/idl.dart';
+import 'package:analyzer/src/summary2/lazy_ast.dart';
import 'package:analyzer/src/summary2/linked_unit_context.dart';
import 'package:analyzer/src/summary2/reference.dart';
import 'package:analyzer/src/util/comment.dart';
@@ -500,6 +501,7 @@
if (linkedNode != null) {
if (linkedNode is ClassOrMixinDeclaration) {
+ LazyAst.applyResolution(linkedNode);
_createPropertiesAndAccessors();
assert(_accessors != null);
return _accessors;
@@ -544,6 +546,7 @@
}
if (linkedNode != null) {
+ LazyAst.applyResolution(linkedNode);
var context = enclosingUnit.linkedContext;
var containerRef = reference.getChild('@constructor');
_constructors = context.getConstructors(linkedNode).map((node) {
@@ -605,6 +608,7 @@
if (linkedNode != null) {
if (linkedNode is ClassOrMixinDeclaration) {
+ LazyAst.applyResolution(linkedNode);
_createPropertiesAndAccessors();
assert(_fields != null);
return _fields;
@@ -705,6 +709,7 @@
}
if (linkedNode != null) {
+ LazyAst.applyResolution(linkedNode);
var context = enclosingUnit.linkedContext;
var implementsClause = context.getImplementsClause(linkedNode);
if (implementsClause != null) {
@@ -780,6 +785,7 @@
}
if (linkedNode != null) {
+ LazyAst.applyResolution(linkedNode);
var context = enclosingUnit.linkedContext;
var containerRef = reference.getChild('@method');
return _methods = context
@@ -816,6 +822,7 @@
}
if (linkedNode != null) {
+ LazyAst.applyResolution(linkedNode);
var context = enclosingUnit.linkedContext;
var withClause = context.getWithClause(linkedNode);
if (withClause != null) {
@@ -865,7 +872,18 @@
}
if (linkedNode != null) {
- var type = linkedContext.getSuperclass(linkedNode)?.type;
+ var node = linkedNode;
+ LazyAst.applyResolution(node);
+
+ DartType type;
+ if (node is ClassDeclaration) {
+ type = node.extendsClause?.superclass?.type;
+ } else if (node is ClassTypeAlias) {
+ type = linkedContext.getSuperclass(linkedNode)?.type;
+ } else {
+ throw UnimplementedError('${node.runtimeType}');
+ }
+
if (_isInterfaceTypeClass(type)) {
return _supertype = type;
}
@@ -1964,9 +1982,9 @@
if (_constantInitializers != null) return _constantInitializers;
if (linkedNode != null) {
- return _constantInitializers = linkedContext.getConstructorInitializers(
- linkedNode,
- );
+ var node = linkedNode as ConstructorDeclaration;
+ LazyAst.applyResolution(node);
+ return _constantInitializers = node.initializers;
}
return _constantInitializers;
@@ -2080,13 +2098,13 @@
if (_redirectedConstructor != null) return _redirectedConstructor;
if (linkedNode != null) {
- var context = enclosingUnit.linkedContext;
+ var node = linkedNode as ConstructorDeclaration;
+ LazyAst.applyResolution(node);
if (isFactory) {
- var node = context.getConstructorRedirected(linkedNode);
- return _redirectedConstructor = node?.staticElement;
+ return _redirectedConstructor =
+ node.redirectedConstructor?.staticElement;
} else {
- var initializers = context.getConstructorInitializers(linkedNode);
- for (var initializer in initializers) {
+ for (var initializer in node.initializers) {
if (initializer is RedirectingConstructorInvocation) {
return _redirectedConstructor = initializer.staticElement;
}
@@ -2214,6 +2232,7 @@
if (_constantInitializer != null) return _constantInitializer;
if (linkedNode != null) {
+ LazyAst.applyResolution(linkedNode);
var context = enclosingUnit.linkedContext;
return _constantInitializer = context.readInitializer(linkedNode);
}
@@ -2984,8 +3003,10 @@
@override
List<ElementAnnotation> get metadata {
+ if (_metadata != null) return _metadata;
+
if (linkedNode != null) {
- if (_metadata != null) return _metadata;
+ LazyAst.applyResolution(linkedNode);
var metadata = linkedContext.getMetadata(linkedNode);
return _metadata = _buildAnnotations2(enclosingUnit, metadata);
}
@@ -3491,6 +3512,9 @@
ConstructorElement getNamedConstructor(String name) => null;
void _resynthesizeMembers2() {
+ var node = linkedNode as EnumDeclaration;
+ LazyAst.applyResolution(node);
+
var fields = <FieldElementImpl>[];
var getters = <PropertyAccessorElementImpl>[];
@@ -3518,7 +3542,7 @@
// Build fields for all enum constants.
var containerRef = reference.getChild('@constant');
- var constants = linkedContext.getEnumConstants(linkedNode);
+ var constants = node.constants;
for (var i = 0; i < constants.length; ++i) {
var constant = constants[i];
var name = constant.name.name;
@@ -3703,6 +3727,7 @@
if (_parameters != null) return _parameters;
if (linkedNode != null) {
+ LazyAst.applyResolution(linkedNode);
var context = enclosingUnit.linkedContext;
var containerRef = reference.getChild('@parameter');
var formalParameters = context.getFormalParameters(linkedNode);
@@ -3741,6 +3766,7 @@
if (_returnType != null) return _returnType;
if (linkedNode != null) {
+ LazyAst.applyResolution(linkedNode);
var context = enclosingUnit.linkedContext;
return _returnType = context.getReturnType(linkedNode);
}
@@ -3929,6 +3955,7 @@
if (linkedNode != null) {
if (linkedNode is ExtensionDeclaration) {
+ LazyAst.applyResolution(linkedNode);
_createPropertiesAndAccessors();
assert(_accessors != null);
return _accessors;
@@ -3988,7 +4015,9 @@
if (_extendedType != null) return _extendedType;
if (linkedNode != null) {
- return _extendedType = linkedContext.getExtendedType(linkedNode).type;
+ var node = linkedNode as ExtensionDeclaration;
+ LazyAst.applyResolution(linkedNode);
+ return _extendedType = node.extendedType.type;
}
return _extendedType;
@@ -4002,6 +4031,7 @@
if (linkedNode != null) {
if (linkedNode is ExtensionDeclaration) {
+ LazyAst.applyResolution(linkedNode);
_createPropertiesAndAccessors();
assert(_fields != null);
return _fields;
@@ -4041,6 +4071,7 @@
}
if (linkedNode != null) {
+ LazyAst.applyResolution(linkedNode);
var context = enclosingUnit.linkedContext;
var containerRef = reference.getChild('@method');
return _methods = context
@@ -4507,14 +4538,16 @@
if (_function != null) return _function;
if (linkedNode != null) {
+ LazyAst.applyResolution(linkedNode);
if (linkedNode is GenericTypeAlias) {
var context = enclosingUnit.linkedContext;
var function = context.getGeneticTypeAliasFunction(linkedNode);
if (function != null) {
- var reference = context.getGenericFunctionTypeReference(function);
- _function = reference.element;
- encloseElement(_function);
- return _function;
+ return _function = GenericFunctionTypeElementImpl.forLinkedNode(
+ this,
+ reference.getChild('@function'),
+ function,
+ );
} else {
return _function = GenericFunctionTypeElementImpl.forOffset(-1)
..typeParameters = const <TypeParameterElement>[]
@@ -5839,8 +5872,10 @@
if (_superclassConstraints != null) return _superclassConstraints;
if (linkedNode != null) {
+ var node = linkedNode as MixinDeclaration;
+ LazyAst.applyResolution(node);
List<InterfaceType> constraints;
- var onClause = enclosingUnit.linkedContext.getOnClause(linkedNode);
+ var onClause = node.onClause;
if (onClause != null) {
constraints = onClause.superclassConstraints
.map((node) => node.type)
@@ -6565,8 +6600,9 @@
@override
DartType get typeInternal {
+ if (_type != null) return _type;
+
if (linkedNode != null) {
- if (_type != null) return _type;
var context = enclosingUnit.linkedContext;
return _type = context.getType(linkedNode);
}
@@ -7159,6 +7195,7 @@
DartType get typeInternal {
if (linkedNode != null) {
if (_type != null) return _type;
+ LazyAst.applyResolution(linkedNode);
_type = linkedContext.getType(linkedNode);
// While performing inference during linking, the first step is to collect
@@ -7527,6 +7564,7 @@
if (_typeParameterElements != null) return _typeParameterElements;
if (linkedNode != null) {
+ LazyAst.applyResolution(linkedNode);
var typeParameters = linkedContext.getTypeParameters2(linkedNode);
if (typeParameters == null) {
return _typeParameterElements = const [];
@@ -7534,6 +7572,11 @@
var containerRef = reference.getChild('@typeParameter');
return _typeParameterElements =
typeParameters.typeParameters.map<TypeParameterElement>((node) {
+ var element = node.declaredElement;
+ if (element != null) {
+ return element;
+ }
+
var reference = containerRef.getChild(node.name.name);
if (reference.hasElementFor(node)) {
return reference.element as TypeParameterElement;
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index db5240f..6952f8f 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -242,7 +242,6 @@
for (var entry in member._substitution.map.entries) {
map[entry.key] = substitution.substituteType(entry.value);
}
- map.addAll(substitution.map);
combined = Substitution.fromMap(map);
} else {
typeProvider = element.library.typeProvider;
diff --git a/pkg/analyzer/lib/src/dart/element/type_system.dart b/pkg/analyzer/lib/src/dart/element/type_system.dart
index c38172a..dae7afe 100644
--- a/pkg/analyzer/lib/src/dart/element/type_system.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_system.dart
@@ -1230,6 +1230,19 @@
typeParameters,
considerExtendsClause: false,
);
+
+ // It is an error to use a generic function type as a bound.
+ // What is worse, inference does not do anything to their type formals.
+ // So, we might be left with bounds of their type formals not replaced.
+ // Then we cannot store this linked information, because it references
+ // types that are not in scope.
+ for (var i = 0; i < inferredTypes.length; i++) {
+ var inferredType = inferredTypes[i];
+ if (inferredType is FunctionType && inferredType.typeFormals.isNotEmpty) {
+ inferredTypes[i] = DynamicTypeImpl.instance;
+ }
+ }
+
var substitution = Substitution.fromPairs(typeParameters, inferredTypes);
for (int i = 0; i < srcTypes.length; i++) {
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index cddf91d..74266ee 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -4449,10 +4449,7 @@
List<LinkedNodeBuilder> _variantField_4;
LinkedNodeBuilder _variantField_6;
LinkedNodeBuilder _variantField_7;
- int _variantField_17;
LinkedNodeBuilder _variantField_8;
- LinkedNodeTypeSubstitutionBuilder _variantField_38;
- int _variantField_15;
idl.UnlinkedTokenType _variantField_28;
bool _variantField_27;
LinkedNodeBuilder _variantField_9;
@@ -4462,15 +4459,17 @@
List<String> _variantField_33;
idl.LinkedNodeCommentType _variantField_29;
List<LinkedNodeBuilder> _variantField_3;
- List<int> _variantField_41;
- LinkedLibraryLanguageVersionBuilder _variantField_40;
+ List<int> _variantField_19;
+ LinkedLibraryLanguageVersionBuilder _variantField_39;
LinkedNodeBuilder _variantField_10;
idl.LinkedNodeFormalParameterKind _variantField_26;
double _variantField_21;
+ int _variantField_15;
LinkedNodeTypeBuilder _variantField_25;
String _variantField_20;
- List<LinkedNodeTypeBuilder> _variantField_39;
+ List<LinkedNodeTypeBuilder> _variantField_38;
int _flags;
+ int _variantField_17;
String _variantField_1;
int _variantField_36;
int _variantField_16;
@@ -4479,13 +4478,13 @@
idl.LinkedNodeKind _kind;
bool _variantField_31;
List<String> _variantField_34;
- String _name;
+ String _variantField_37;
+ LinkedNodeResolutionBuilder _resolution;
idl.UnlinkedTokenType _variantField_35;
TopLevelInferenceErrorBuilder _variantField_32;
LinkedNodeTypeBuilder _variantField_23;
LinkedNodeBuilder _variantField_11;
String _variantField_22;
- int _variantField_19;
@override
LinkedNodeTypeBuilder get actualReturnType {
@@ -4499,7 +4498,8 @@
@override
LinkedNodeTypeBuilder get actualType {
- assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
+ assert(kind == idl.LinkedNodeKind.defaultFormalParameter ||
+ kind == idl.LinkedNodeKind.fieldFormalParameter ||
kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
kind == idl.LinkedNodeKind.simpleFormalParameter ||
kind == idl.LinkedNodeKind.variableDeclaration);
@@ -4536,7 +4536,8 @@
}
set actualType(LinkedNodeTypeBuilder value) {
- assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
+ assert(kind == idl.LinkedNodeKind.defaultFormalParameter ||
+ kind == idl.LinkedNodeKind.fieldFormalParameter ||
kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
kind == idl.LinkedNodeKind.simpleFormalParameter ||
kind == idl.LinkedNodeKind.variableDeclaration);
@@ -6305,30 +6306,6 @@
}
@override
- int get annotation_element {
- assert(kind == idl.LinkedNodeKind.annotation);
- return _variantField_17 ??= 0;
- }
-
- @override
- int get genericFunctionType_id {
- assert(kind == idl.LinkedNodeKind.genericFunctionType);
- return _variantField_17 ??= 0;
- }
-
- set annotation_element(int value) {
- assert(kind == idl.LinkedNodeKind.annotation);
- assert(value == null || value >= 0);
- _variantField_17 = value;
- }
-
- set genericFunctionType_id(int value) {
- assert(kind == idl.LinkedNodeKind.genericFunctionType);
- assert(value == null || value >= 0);
- _variantField_17 = value;
- }
-
- @override
LinkedNodeBuilder get annotation_name {
assert(kind == idl.LinkedNodeKind.annotation);
return _variantField_8;
@@ -6516,277 +6493,6 @@
}
@override
- LinkedNodeTypeSubstitutionBuilder get annotation_substitution {
- assert(kind == idl.LinkedNodeKind.annotation);
- return _variantField_38;
- }
-
- @override
- LinkedNodeTypeSubstitutionBuilder get assignmentExpression_substitution {
- assert(kind == idl.LinkedNodeKind.assignmentExpression);
- return _variantField_38;
- }
-
- @override
- LinkedNodeTypeSubstitutionBuilder get binaryExpression_substitution {
- assert(kind == idl.LinkedNodeKind.binaryExpression);
- return _variantField_38;
- }
-
- @override
- LinkedNodeTypeSubstitutionBuilder get constructorName_substitution {
- assert(kind == idl.LinkedNodeKind.constructorName);
- return _variantField_38;
- }
-
- @override
- LinkedNodeTypeSubstitutionBuilder get indexExpression_substitution {
- assert(kind == idl.LinkedNodeKind.indexExpression);
- return _variantField_38;
- }
-
- @override
- LinkedNodeTypeSubstitutionBuilder get postfixExpression_substitution {
- assert(kind == idl.LinkedNodeKind.postfixExpression);
- return _variantField_38;
- }
-
- @override
- LinkedNodeTypeSubstitutionBuilder get prefixExpression_substitution {
- assert(kind == idl.LinkedNodeKind.prefixExpression);
- return _variantField_38;
- }
-
- @override
- LinkedNodeTypeSubstitutionBuilder
- get redirectingConstructorInvocation_substitution {
- assert(kind == idl.LinkedNodeKind.redirectingConstructorInvocation);
- return _variantField_38;
- }
-
- @override
- LinkedNodeTypeSubstitutionBuilder get simpleIdentifier_substitution {
- assert(kind == idl.LinkedNodeKind.simpleIdentifier);
- return _variantField_38;
- }
-
- @override
- LinkedNodeTypeSubstitutionBuilder
- get superConstructorInvocation_substitution {
- assert(kind == idl.LinkedNodeKind.superConstructorInvocation);
- return _variantField_38;
- }
-
- set annotation_substitution(LinkedNodeTypeSubstitutionBuilder value) {
- assert(kind == idl.LinkedNodeKind.annotation);
- _variantField_38 = value;
- }
-
- set assignmentExpression_substitution(
- LinkedNodeTypeSubstitutionBuilder value) {
- assert(kind == idl.LinkedNodeKind.assignmentExpression);
- _variantField_38 = value;
- }
-
- set binaryExpression_substitution(LinkedNodeTypeSubstitutionBuilder value) {
- assert(kind == idl.LinkedNodeKind.binaryExpression);
- _variantField_38 = value;
- }
-
- set constructorName_substitution(LinkedNodeTypeSubstitutionBuilder value) {
- assert(kind == idl.LinkedNodeKind.constructorName);
- _variantField_38 = value;
- }
-
- set indexExpression_substitution(LinkedNodeTypeSubstitutionBuilder value) {
- assert(kind == idl.LinkedNodeKind.indexExpression);
- _variantField_38 = value;
- }
-
- set postfixExpression_substitution(LinkedNodeTypeSubstitutionBuilder value) {
- assert(kind == idl.LinkedNodeKind.postfixExpression);
- _variantField_38 = value;
- }
-
- set prefixExpression_substitution(LinkedNodeTypeSubstitutionBuilder value) {
- assert(kind == idl.LinkedNodeKind.prefixExpression);
- _variantField_38 = value;
- }
-
- set redirectingConstructorInvocation_substitution(
- LinkedNodeTypeSubstitutionBuilder value) {
- assert(kind == idl.LinkedNodeKind.redirectingConstructorInvocation);
- _variantField_38 = value;
- }
-
- set simpleIdentifier_substitution(LinkedNodeTypeSubstitutionBuilder value) {
- assert(kind == idl.LinkedNodeKind.simpleIdentifier);
- _variantField_38 = value;
- }
-
- set superConstructorInvocation_substitution(
- LinkedNodeTypeSubstitutionBuilder value) {
- assert(kind == idl.LinkedNodeKind.superConstructorInvocation);
- _variantField_38 = value;
- }
-
- @override
- int get assignmentExpression_element {
- assert(kind == idl.LinkedNodeKind.assignmentExpression);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get binaryExpression_element {
- assert(kind == idl.LinkedNodeKind.binaryExpression);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get constructorName_element {
- assert(kind == idl.LinkedNodeKind.constructorName);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get emptyFunctionBody_fake {
- assert(kind == idl.LinkedNodeKind.emptyFunctionBody);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get emptyStatement_fake {
- assert(kind == idl.LinkedNodeKind.emptyStatement);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get indexExpression_element {
- assert(kind == idl.LinkedNodeKind.indexExpression);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get nullLiteral_fake {
- assert(kind == idl.LinkedNodeKind.nullLiteral);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get postfixExpression_element {
- assert(kind == idl.LinkedNodeKind.postfixExpression);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get prefixExpression_element {
- assert(kind == idl.LinkedNodeKind.prefixExpression);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get redirectingConstructorInvocation_element {
- assert(kind == idl.LinkedNodeKind.redirectingConstructorInvocation);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get simpleIdentifier_element {
- assert(kind == idl.LinkedNodeKind.simpleIdentifier);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get superConstructorInvocation_element {
- assert(kind == idl.LinkedNodeKind.superConstructorInvocation);
- return _variantField_15 ??= 0;
- }
-
- @override
- int get typeParameter_variance {
- assert(kind == idl.LinkedNodeKind.typeParameter);
- return _variantField_15 ??= 0;
- }
-
- set assignmentExpression_element(int value) {
- assert(kind == idl.LinkedNodeKind.assignmentExpression);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set binaryExpression_element(int value) {
- assert(kind == idl.LinkedNodeKind.binaryExpression);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set constructorName_element(int value) {
- assert(kind == idl.LinkedNodeKind.constructorName);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set emptyFunctionBody_fake(int value) {
- assert(kind == idl.LinkedNodeKind.emptyFunctionBody);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set emptyStatement_fake(int value) {
- assert(kind == idl.LinkedNodeKind.emptyStatement);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set indexExpression_element(int value) {
- assert(kind == idl.LinkedNodeKind.indexExpression);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set nullLiteral_fake(int value) {
- assert(kind == idl.LinkedNodeKind.nullLiteral);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set postfixExpression_element(int value) {
- assert(kind == idl.LinkedNodeKind.postfixExpression);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set prefixExpression_element(int value) {
- assert(kind == idl.LinkedNodeKind.prefixExpression);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set redirectingConstructorInvocation_element(int value) {
- assert(kind == idl.LinkedNodeKind.redirectingConstructorInvocation);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set simpleIdentifier_element(int value) {
- assert(kind == idl.LinkedNodeKind.simpleIdentifier);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set superConstructorInvocation_element(int value) {
- assert(kind == idl.LinkedNodeKind.superConstructorInvocation);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- set typeParameter_variance(int value) {
- assert(kind == idl.LinkedNodeKind.typeParameter);
- assert(value == null || value >= 0);
- _variantField_15 = value;
- }
-
- @override
idl.UnlinkedTokenType get assignmentExpression_operator {
assert(kind == idl.LinkedNodeKind.assignmentExpression);
return _variantField_28 ??= idl.UnlinkedTokenType.NOTHING;
@@ -7108,26 +6814,26 @@
@override
List<int> get compilationUnit_featureSet {
assert(kind == idl.LinkedNodeKind.compilationUnit);
- return _variantField_41 ??= <int>[];
+ return _variantField_19 ??= <int>[];
}
set compilationUnit_featureSet(List<int> value) {
assert(kind == idl.LinkedNodeKind.compilationUnit);
assert(value == null || value.every((e) => e >= 0));
- _variantField_41 = value;
+ _variantField_19 = value;
}
@override
LinkedLibraryLanguageVersionBuilder get compilationUnit_languageVersion {
assert(kind == idl.LinkedNodeKind.compilationUnit);
- return _variantField_40;
+ return _variantField_39;
}
/// The language version information.
set compilationUnit_languageVersion(
LinkedLibraryLanguageVersionBuilder value) {
assert(kind == idl.LinkedNodeKind.compilationUnit);
- _variantField_40 = value;
+ _variantField_39 = value;
}
@override
@@ -7165,11 +6871,60 @@
}
@override
+ int get emptyFunctionBody_fake {
+ assert(kind == idl.LinkedNodeKind.emptyFunctionBody);
+ return _variantField_15 ??= 0;
+ }
+
+ @override
+ int get emptyStatement_fake {
+ assert(kind == idl.LinkedNodeKind.emptyStatement);
+ return _variantField_15 ??= 0;
+ }
+
+ @override
+ int get nullLiteral_fake {
+ assert(kind == idl.LinkedNodeKind.nullLiteral);
+ return _variantField_15 ??= 0;
+ }
+
+ @override
+ int get typeParameter_variance {
+ assert(kind == idl.LinkedNodeKind.typeParameter);
+ return _variantField_15 ??= 0;
+ }
+
+ set emptyFunctionBody_fake(int value) {
+ assert(kind == idl.LinkedNodeKind.emptyFunctionBody);
+ assert(value == null || value >= 0);
+ _variantField_15 = value;
+ }
+
+ set emptyStatement_fake(int value) {
+ assert(kind == idl.LinkedNodeKind.emptyStatement);
+ assert(value == null || value >= 0);
+ _variantField_15 = value;
+ }
+
+ set nullLiteral_fake(int value) {
+ assert(kind == idl.LinkedNodeKind.nullLiteral);
+ assert(value == null || value >= 0);
+ _variantField_15 = value;
+ }
+
+ set typeParameter_variance(int value) {
+ assert(kind == idl.LinkedNodeKind.typeParameter);
+ assert(value == null || value >= 0);
+ _variantField_15 = value;
+ }
+
+ @override
LinkedNodeTypeBuilder get expression_type {
assert(kind == idl.LinkedNodeKind.assignmentExpression ||
kind == idl.LinkedNodeKind.asExpression ||
kind == idl.LinkedNodeKind.awaitExpression ||
kind == idl.LinkedNodeKind.binaryExpression ||
+ kind == idl.LinkedNodeKind.booleanLiteral ||
kind == idl.LinkedNodeKind.cascadeExpression ||
kind == idl.LinkedNodeKind.conditionalExpression ||
kind == idl.LinkedNodeKind.functionExpressionInvocation ||
@@ -7186,7 +6941,6 @@
kind == idl.LinkedNodeKind.postfixExpression ||
kind == idl.LinkedNodeKind.rethrowExpression ||
kind == idl.LinkedNodeKind.setOrMapLiteral ||
- kind == idl.LinkedNodeKind.simpleIdentifier ||
kind == idl.LinkedNodeKind.superExpression ||
kind == idl.LinkedNodeKind.symbolLiteral ||
kind == idl.LinkedNodeKind.thisExpression ||
@@ -7205,6 +6959,7 @@
kind == idl.LinkedNodeKind.asExpression ||
kind == idl.LinkedNodeKind.awaitExpression ||
kind == idl.LinkedNodeKind.binaryExpression ||
+ kind == idl.LinkedNodeKind.booleanLiteral ||
kind == idl.LinkedNodeKind.cascadeExpression ||
kind == idl.LinkedNodeKind.conditionalExpression ||
kind == idl.LinkedNodeKind.functionExpressionInvocation ||
@@ -7221,7 +6976,6 @@
kind == idl.LinkedNodeKind.postfixExpression ||
kind == idl.LinkedNodeKind.rethrowExpression ||
kind == idl.LinkedNodeKind.setOrMapLiteral ||
- kind == idl.LinkedNodeKind.simpleIdentifier ||
kind == idl.LinkedNodeKind.superExpression ||
kind == idl.LinkedNodeKind.symbolLiteral ||
kind == idl.LinkedNodeKind.thisExpression ||
@@ -7272,12 +7026,12 @@
@override
List<LinkedNodeTypeBuilder> get extensionOverride_typeArgumentTypes {
assert(kind == idl.LinkedNodeKind.extensionOverride);
- return _variantField_39 ??= <LinkedNodeTypeBuilder>[];
+ return _variantField_38 ??= <LinkedNodeTypeBuilder>[];
}
set extensionOverride_typeArgumentTypes(List<LinkedNodeTypeBuilder> value) {
assert(kind == idl.LinkedNodeKind.extensionOverride);
- _variantField_39 = value;
+ _variantField_38 = value;
}
@override
@@ -7289,6 +7043,18 @@
}
@override
+ int get genericFunctionType_id {
+ assert(kind == idl.LinkedNodeKind.genericFunctionType);
+ return _variantField_17 ??= 0;
+ }
+
+ set genericFunctionType_id(int value) {
+ assert(kind == idl.LinkedNodeKind.genericFunctionType);
+ assert(value == null || value >= 0);
+ _variantField_17 = value;
+ }
+
+ @override
String get importDirective_prefix {
assert(kind == idl.LinkedNodeKind.importDirective);
return _variantField_1 ??= '';
@@ -7483,10 +7249,53 @@
}
@override
- String get name => _name ??= '';
+ String get name {
+ assert(kind == idl.LinkedNodeKind.classDeclaration ||
+ kind == idl.LinkedNodeKind.classTypeAlias ||
+ kind == idl.LinkedNodeKind.constructorDeclaration ||
+ kind == idl.LinkedNodeKind.enumDeclaration ||
+ kind == idl.LinkedNodeKind.enumConstantDeclaration ||
+ kind == idl.LinkedNodeKind.extensionDeclaration ||
+ kind == idl.LinkedNodeKind.fieldFormalParameter ||
+ kind == idl.LinkedNodeKind.functionDeclaration ||
+ kind == idl.LinkedNodeKind.functionTypeAlias ||
+ kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
+ kind == idl.LinkedNodeKind.genericTypeAlias ||
+ kind == idl.LinkedNodeKind.methodDeclaration ||
+ kind == idl.LinkedNodeKind.mixinDeclaration ||
+ kind == idl.LinkedNodeKind.simpleFormalParameter ||
+ kind == idl.LinkedNodeKind.simpleIdentifier ||
+ kind == idl.LinkedNodeKind.typeParameter ||
+ kind == idl.LinkedNodeKind.variableDeclaration);
+ return _variantField_37 ??= '';
+ }
set name(String value) {
- this._name = value;
+ assert(kind == idl.LinkedNodeKind.classDeclaration ||
+ kind == idl.LinkedNodeKind.classTypeAlias ||
+ kind == idl.LinkedNodeKind.constructorDeclaration ||
+ kind == idl.LinkedNodeKind.enumDeclaration ||
+ kind == idl.LinkedNodeKind.enumConstantDeclaration ||
+ kind == idl.LinkedNodeKind.extensionDeclaration ||
+ kind == idl.LinkedNodeKind.fieldFormalParameter ||
+ kind == idl.LinkedNodeKind.functionDeclaration ||
+ kind == idl.LinkedNodeKind.functionTypeAlias ||
+ kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
+ kind == idl.LinkedNodeKind.genericTypeAlias ||
+ kind == idl.LinkedNodeKind.methodDeclaration ||
+ kind == idl.LinkedNodeKind.mixinDeclaration ||
+ kind == idl.LinkedNodeKind.simpleFormalParameter ||
+ kind == idl.LinkedNodeKind.simpleIdentifier ||
+ kind == idl.LinkedNodeKind.typeParameter ||
+ kind == idl.LinkedNodeKind.variableDeclaration);
+ _variantField_37 = value;
+ }
+
+ @override
+ LinkedNodeResolutionBuilder get resolution => _resolution;
+
+ set resolution(LinkedNodeResolutionBuilder value) {
+ this._resolution = value;
}
@override
@@ -7563,22 +7372,6 @@
_variantField_22 = value;
}
- @override
- int get uriBasedDirective_uriElement {
- assert(kind == idl.LinkedNodeKind.exportDirective ||
- kind == idl.LinkedNodeKind.importDirective ||
- kind == idl.LinkedNodeKind.partDirective);
- return _variantField_19 ??= 0;
- }
-
- set uriBasedDirective_uriElement(int value) {
- assert(kind == idl.LinkedNodeKind.exportDirective ||
- kind == idl.LinkedNodeKind.importDirective ||
- kind == idl.LinkedNodeKind.partDirective);
- assert(value == null || value >= 0);
- _variantField_19 = value;
- }
-
LinkedNodeBuilder.adjacentStrings({
List<LinkedNodeBuilder> adjacentStrings_strings,
}) : _kind = idl.LinkedNodeKind.adjacentStrings,
@@ -7587,15 +7380,11 @@
LinkedNodeBuilder.annotation({
LinkedNodeBuilder annotation_arguments,
LinkedNodeBuilder annotation_constructorName,
- int annotation_element,
LinkedNodeBuilder annotation_name,
- LinkedNodeTypeSubstitutionBuilder annotation_substitution,
}) : _kind = idl.LinkedNodeKind.annotation,
_variantField_6 = annotation_arguments,
_variantField_7 = annotation_constructorName,
- _variantField_17 = annotation_element,
- _variantField_8 = annotation_name,
- _variantField_38 = annotation_substitution;
+ _variantField_8 = annotation_name;
LinkedNodeBuilder.argumentList({
List<LinkedNodeBuilder> argumentList_arguments,
@@ -7628,15 +7417,11 @@
LinkedNodeBuilder.assignmentExpression({
LinkedNodeBuilder assignmentExpression_leftHandSide,
LinkedNodeBuilder assignmentExpression_rightHandSide,
- LinkedNodeTypeSubstitutionBuilder assignmentExpression_substitution,
- int assignmentExpression_element,
idl.UnlinkedTokenType assignmentExpression_operator,
LinkedNodeTypeBuilder expression_type,
}) : _kind = idl.LinkedNodeKind.assignmentExpression,
_variantField_6 = assignmentExpression_leftHandSide,
_variantField_7 = assignmentExpression_rightHandSide,
- _variantField_38 = assignmentExpression_substitution,
- _variantField_15 = assignmentExpression_element,
_variantField_28 = assignmentExpression_operator,
_variantField_25 = expression_type;
@@ -7651,16 +7436,12 @@
LinkedNodeTypeBuilder binaryExpression_invokeType,
LinkedNodeBuilder binaryExpression_leftOperand,
LinkedNodeBuilder binaryExpression_rightOperand,
- LinkedNodeTypeSubstitutionBuilder binaryExpression_substitution,
- int binaryExpression_element,
idl.UnlinkedTokenType binaryExpression_operator,
LinkedNodeTypeBuilder expression_type,
}) : _kind = idl.LinkedNodeKind.binaryExpression,
_variantField_24 = binaryExpression_invokeType,
_variantField_6 = binaryExpression_leftOperand,
_variantField_7 = binaryExpression_rightOperand,
- _variantField_38 = binaryExpression_substitution,
- _variantField_15 = binaryExpression_element,
_variantField_28 = binaryExpression_operator,
_variantField_25 = expression_type;
@@ -7676,8 +7457,10 @@
LinkedNodeBuilder.booleanLiteral({
bool booleanLiteral_value,
+ LinkedNodeTypeBuilder expression_type,
}) : _kind = idl.LinkedNodeKind.booleanLiteral,
- _variantField_27 = booleanLiteral_value;
+ _variantField_27 = booleanLiteral_value,
+ _variantField_25 = expression_type;
LinkedNodeBuilder.breakStatement({
LinkedNodeBuilder breakStatement_label,
@@ -7715,6 +7498,7 @@
LinkedNodeBuilder classOrMixinDeclaration_typeParameters,
int informativeId,
bool simplyBoundable_isSimplyBounded,
+ String name,
LinkedNodeBuilder unused11,
}) : _kind = idl.LinkedNodeKind.classDeclaration,
_variantField_4 = annotatedNode_metadata,
@@ -7727,6 +7511,7 @@
_variantField_13 = classOrMixinDeclaration_typeParameters,
_variantField_36 = informativeId,
_variantField_31 = simplyBoundable_isSimplyBounded,
+ _variantField_37 = name,
_variantField_11 = unused11;
LinkedNodeBuilder.classTypeAlias({
@@ -7737,6 +7522,7 @@
LinkedNodeBuilder classTypeAlias_implementsClause,
int informativeId,
bool simplyBoundable_isSimplyBounded,
+ String name,
}) : _kind = idl.LinkedNodeKind.classTypeAlias,
_variantField_4 = annotatedNode_metadata,
_variantField_6 = classTypeAlias_typeParameters,
@@ -7744,7 +7530,8 @@
_variantField_8 = classTypeAlias_withClause,
_variantField_9 = classTypeAlias_implementsClause,
_variantField_36 = informativeId,
- _variantField_31 = simplyBoundable_isSimplyBounded;
+ _variantField_31 = simplyBoundable_isSimplyBounded,
+ _variantField_37 = name;
LinkedNodeBuilder.comment({
List<LinkedNodeBuilder> comment_references,
@@ -7771,8 +7558,8 @@
_variantField_2 = compilationUnit_declarations,
_variantField_6 = compilationUnit_scriptTag,
_variantField_3 = compilationUnit_directives,
- _variantField_41 = compilationUnit_featureSet,
- _variantField_40 = compilationUnit_languageVersion,
+ _variantField_19 = compilationUnit_featureSet,
+ _variantField_39 = compilationUnit_languageVersion,
_variantField_36 = informativeId;
LinkedNodeBuilder.conditionalExpression({
@@ -7803,6 +7590,7 @@
LinkedNodeBuilder constructorDeclaration_redirectedConstructor,
LinkedNodeBuilder constructorDeclaration_returnType,
int informativeId,
+ String name,
}) : _kind = idl.LinkedNodeKind.constructorDeclaration,
_variantField_2 = constructorDeclaration_initializers,
_variantField_4 = annotatedNode_metadata,
@@ -7810,7 +7598,8 @@
_variantField_8 = constructorDeclaration_parameters,
_variantField_9 = constructorDeclaration_redirectedConstructor,
_variantField_10 = constructorDeclaration_returnType,
- _variantField_36 = informativeId;
+ _variantField_36 = informativeId,
+ _variantField_37 = name;
LinkedNodeBuilder.constructorFieldInitializer({
LinkedNodeBuilder constructorFieldInitializer_expression,
@@ -7822,13 +7611,9 @@
LinkedNodeBuilder.constructorName({
LinkedNodeBuilder constructorName_name,
LinkedNodeBuilder constructorName_type,
- LinkedNodeTypeSubstitutionBuilder constructorName_substitution,
- int constructorName_element,
}) : _kind = idl.LinkedNodeKind.constructorName,
_variantField_6 = constructorName_name,
- _variantField_7 = constructorName_type,
- _variantField_38 = constructorName_substitution,
- _variantField_15 = constructorName_element;
+ _variantField_7 = constructorName_type;
LinkedNodeBuilder.continueStatement({
LinkedNodeBuilder continueStatement_label,
@@ -7845,11 +7630,13 @@
_variantField_7 = declaredIdentifier_type;
LinkedNodeBuilder.defaultFormalParameter({
+ LinkedNodeTypeBuilder actualType,
LinkedNodeBuilder defaultFormalParameter_defaultValue,
LinkedNodeBuilder defaultFormalParameter_parameter,
idl.LinkedNodeFormalParameterKind defaultFormalParameter_kind,
int informativeId,
}) : _kind = idl.LinkedNodeKind.defaultFormalParameter,
+ _variantField_24 = actualType,
_variantField_6 = defaultFormalParameter_defaultValue,
_variantField_7 = defaultFormalParameter_parameter,
_variantField_26 = defaultFormalParameter_kind,
@@ -7885,18 +7672,22 @@
LinkedNodeBuilder.enumConstantDeclaration({
List<LinkedNodeBuilder> annotatedNode_metadata,
int informativeId,
+ String name,
}) : _kind = idl.LinkedNodeKind.enumConstantDeclaration,
_variantField_4 = annotatedNode_metadata,
- _variantField_36 = informativeId;
+ _variantField_36 = informativeId,
+ _variantField_37 = name;
LinkedNodeBuilder.enumDeclaration({
List<LinkedNodeBuilder> enumDeclaration_constants,
List<LinkedNodeBuilder> annotatedNode_metadata,
int informativeId,
+ String name,
}) : _kind = idl.LinkedNodeKind.enumDeclaration,
_variantField_2 = enumDeclaration_constants,
_variantField_4 = annotatedNode_metadata,
- _variantField_36 = informativeId;
+ _variantField_36 = informativeId,
+ _variantField_37 = name;
LinkedNodeBuilder.exportDirective({
List<LinkedNodeBuilder> namespaceDirective_combinators,
@@ -7906,7 +7697,6 @@
int informativeId,
LinkedNodeBuilder uriBasedDirective_uri,
String uriBasedDirective_uriContent,
- int uriBasedDirective_uriElement,
}) : _kind = idl.LinkedNodeKind.exportDirective,
_variantField_2 = namespaceDirective_combinators,
_variantField_4 = annotatedNode_metadata,
@@ -7914,8 +7704,7 @@
_variantField_20 = namespaceDirective_selectedUri,
_variantField_36 = informativeId,
_variantField_14 = uriBasedDirective_uri,
- _variantField_22 = uriBasedDirective_uriContent,
- _variantField_19 = uriBasedDirective_uriElement;
+ _variantField_22 = uriBasedDirective_uriContent;
LinkedNodeBuilder.expressionFunctionBody({
LinkedNodeBuilder expressionFunctionBody_expression,
@@ -7939,13 +7728,15 @@
List<LinkedNodeBuilder> extensionDeclaration_members,
String extensionDeclaration_refName,
int informativeId,
+ String name,
}) : _kind = idl.LinkedNodeKind.extensionDeclaration,
_variantField_4 = annotatedNode_metadata,
_variantField_6 = extensionDeclaration_typeParameters,
_variantField_7 = extensionDeclaration_extendedType,
_variantField_5 = extensionDeclaration_members,
_variantField_20 = extensionDeclaration_refName,
- _variantField_36 = informativeId;
+ _variantField_36 = informativeId,
+ _variantField_37 = name;
LinkedNodeBuilder.extensionOverride({
LinkedNodeTypeBuilder extensionOverride_extendedType,
@@ -7958,7 +7749,7 @@
_variantField_2 = extensionOverride_arguments,
_variantField_7 = extensionOverride_extensionName,
_variantField_8 = extensionOverride_typeArguments,
- _variantField_39 = extensionOverride_typeArgumentTypes;
+ _variantField_38 = extensionOverride_typeArgumentTypes;
LinkedNodeBuilder.fieldDeclaration({
List<LinkedNodeBuilder> annotatedNode_metadata,
@@ -7977,6 +7768,7 @@
LinkedNodeBuilder fieldFormalParameter_formalParameters,
bool inheritsCovariant,
int informativeId,
+ String name,
}) : _kind = idl.LinkedNodeKind.fieldFormalParameter,
_variantField_24 = actualType,
_variantField_4 = normalFormalParameter_metadata,
@@ -7984,7 +7776,8 @@
_variantField_7 = fieldFormalParameter_typeParameters,
_variantField_8 = fieldFormalParameter_formalParameters,
_variantField_27 = inheritsCovariant,
- _variantField_36 = informativeId;
+ _variantField_36 = informativeId,
+ _variantField_37 = name;
LinkedNodeBuilder.forEachPartsWithDeclaration({
LinkedNodeBuilder forEachParts_iterable,
@@ -8043,12 +7836,14 @@
LinkedNodeBuilder functionDeclaration_functionExpression,
LinkedNodeBuilder functionDeclaration_returnType,
int informativeId,
+ String name,
}) : _kind = idl.LinkedNodeKind.functionDeclaration,
_variantField_24 = actualReturnType,
_variantField_4 = annotatedNode_metadata,
_variantField_6 = functionDeclaration_functionExpression,
_variantField_7 = functionDeclaration_returnType,
- _variantField_36 = informativeId;
+ _variantField_36 = informativeId,
+ _variantField_37 = name;
LinkedNodeBuilder.functionDeclarationStatement({
LinkedNodeBuilder functionDeclarationStatement_functionDeclaration,
@@ -8088,6 +7883,7 @@
bool typeAlias_hasSelfReference,
int informativeId,
bool simplyBoundable_isSimplyBounded,
+ String name,
}) : _kind = idl.LinkedNodeKind.functionTypeAlias,
_variantField_24 = actualReturnType,
_variantField_4 = annotatedNode_metadata,
@@ -8096,7 +7892,8 @@
_variantField_8 = functionTypeAlias_typeParameters,
_variantField_27 = typeAlias_hasSelfReference,
_variantField_36 = informativeId,
- _variantField_31 = simplyBoundable_isSimplyBounded;
+ _variantField_31 = simplyBoundable_isSimplyBounded,
+ _variantField_37 = name;
LinkedNodeBuilder.functionTypedFormalParameter({
LinkedNodeTypeBuilder actualType,
@@ -8106,6 +7903,7 @@
LinkedNodeBuilder functionTypedFormalParameter_typeParameters,
bool inheritsCovariant,
int informativeId,
+ String name,
}) : _kind = idl.LinkedNodeKind.functionTypedFormalParameter,
_variantField_24 = actualType,
_variantField_4 = normalFormalParameter_metadata,
@@ -8113,22 +7911,23 @@
_variantField_7 = functionTypedFormalParameter_returnType,
_variantField_8 = functionTypedFormalParameter_typeParameters,
_variantField_27 = inheritsCovariant,
- _variantField_36 = informativeId;
+ _variantField_36 = informativeId,
+ _variantField_37 = name;
LinkedNodeBuilder.genericFunctionType({
LinkedNodeTypeBuilder actualReturnType,
LinkedNodeBuilder genericFunctionType_typeParameters,
LinkedNodeBuilder genericFunctionType_returnType,
- int genericFunctionType_id,
LinkedNodeBuilder genericFunctionType_formalParameters,
LinkedNodeTypeBuilder genericFunctionType_type,
+ int genericFunctionType_id,
}) : _kind = idl.LinkedNodeKind.genericFunctionType,
_variantField_24 = actualReturnType,
_variantField_6 = genericFunctionType_typeParameters,
_variantField_7 = genericFunctionType_returnType,
- _variantField_17 = genericFunctionType_id,
_variantField_8 = genericFunctionType_formalParameters,
- _variantField_25 = genericFunctionType_type;
+ _variantField_25 = genericFunctionType_type,
+ _variantField_17 = genericFunctionType_id;
LinkedNodeBuilder.genericTypeAlias({
List<LinkedNodeBuilder> annotatedNode_metadata,
@@ -8137,13 +7936,15 @@
bool typeAlias_hasSelfReference,
int informativeId,
bool simplyBoundable_isSimplyBounded,
+ String name,
}) : _kind = idl.LinkedNodeKind.genericTypeAlias,
_variantField_4 = annotatedNode_metadata,
_variantField_6 = genericTypeAlias_typeParameters,
_variantField_7 = genericTypeAlias_functionType,
_variantField_27 = typeAlias_hasSelfReference,
_variantField_36 = informativeId,
- _variantField_31 = simplyBoundable_isSimplyBounded;
+ _variantField_31 = simplyBoundable_isSimplyBounded,
+ _variantField_37 = name;
LinkedNodeBuilder.hideCombinator({
int informativeId,
@@ -8184,7 +7985,6 @@
int informativeId,
LinkedNodeBuilder uriBasedDirective_uri,
String uriBasedDirective_uriContent,
- int uriBasedDirective_uriElement,
}) : _kind = idl.LinkedNodeKind.importDirective,
_variantField_2 = namespaceDirective_combinators,
_variantField_4 = annotatedNode_metadata,
@@ -8193,20 +7993,15 @@
_variantField_1 = importDirective_prefix,
_variantField_36 = informativeId,
_variantField_14 = uriBasedDirective_uri,
- _variantField_22 = uriBasedDirective_uriContent,
- _variantField_19 = uriBasedDirective_uriElement;
+ _variantField_22 = uriBasedDirective_uriContent;
LinkedNodeBuilder.indexExpression({
LinkedNodeBuilder indexExpression_index,
LinkedNodeBuilder indexExpression_target,
- LinkedNodeTypeSubstitutionBuilder indexExpression_substitution,
- int indexExpression_element,
LinkedNodeTypeBuilder expression_type,
}) : _kind = idl.LinkedNodeKind.indexExpression,
_variantField_6 = indexExpression_index,
_variantField_7 = indexExpression_target,
- _variantField_38 = indexExpression_substitution,
- _variantField_15 = indexExpression_element,
_variantField_25 = expression_type;
LinkedNodeBuilder.instanceCreationExpression({
@@ -8295,6 +8090,7 @@
LinkedNodeBuilder methodDeclaration_typeParameters,
int informativeId,
bool methodDeclaration_hasOperatorEqualWithParameterTypeFromObject,
+ String name,
TopLevelInferenceErrorBuilder topLevelTypeInferenceError,
}) : _kind = idl.LinkedNodeKind.methodDeclaration,
_variantField_24 = actualReturnType,
@@ -8306,6 +8102,7 @@
_variantField_36 = informativeId,
_variantField_31 =
methodDeclaration_hasOperatorEqualWithParameterTypeFromObject,
+ _variantField_37 = name,
_variantField_32 = topLevelTypeInferenceError;
LinkedNodeBuilder.methodInvocation({
@@ -8332,6 +8129,7 @@
int informativeId,
bool simplyBoundable_isSimplyBounded,
List<String> mixinDeclaration_superInvokedNames,
+ String name,
}) : _kind = idl.LinkedNodeKind.mixinDeclaration,
_variantField_4 = annotatedNode_metadata,
_variantField_6 = mixinDeclaration_onClause,
@@ -8340,7 +8138,8 @@
_variantField_13 = classOrMixinDeclaration_typeParameters,
_variantField_36 = informativeId,
_variantField_31 = simplyBoundable_isSimplyBounded,
- _variantField_34 = mixinDeclaration_superInvokedNames;
+ _variantField_34 = mixinDeclaration_superInvokedNames,
+ _variantField_37 = name;
LinkedNodeBuilder.namedExpression({
LinkedNodeBuilder namedExpression_expression,
@@ -8383,13 +8182,11 @@
int informativeId,
LinkedNodeBuilder uriBasedDirective_uri,
String uriBasedDirective_uriContent,
- int uriBasedDirective_uriElement,
}) : _kind = idl.LinkedNodeKind.partDirective,
_variantField_4 = annotatedNode_metadata,
_variantField_36 = informativeId,
_variantField_14 = uriBasedDirective_uri,
- _variantField_22 = uriBasedDirective_uriContent,
- _variantField_19 = uriBasedDirective_uriElement;
+ _variantField_22 = uriBasedDirective_uriContent;
LinkedNodeBuilder.partOfDirective({
List<LinkedNodeBuilder> annotatedNode_metadata,
@@ -8404,27 +8201,19 @@
LinkedNodeBuilder.postfixExpression({
LinkedNodeBuilder postfixExpression_operand,
- LinkedNodeTypeSubstitutionBuilder postfixExpression_substitution,
- int postfixExpression_element,
idl.UnlinkedTokenType postfixExpression_operator,
LinkedNodeTypeBuilder expression_type,
}) : _kind = idl.LinkedNodeKind.postfixExpression,
_variantField_6 = postfixExpression_operand,
- _variantField_38 = postfixExpression_substitution,
- _variantField_15 = postfixExpression_element,
_variantField_28 = postfixExpression_operator,
_variantField_25 = expression_type;
LinkedNodeBuilder.prefixExpression({
LinkedNodeBuilder prefixExpression_operand,
- LinkedNodeTypeSubstitutionBuilder prefixExpression_substitution,
- int prefixExpression_element,
idl.UnlinkedTokenType prefixExpression_operator,
LinkedNodeTypeBuilder expression_type,
}) : _kind = idl.LinkedNodeKind.prefixExpression,
_variantField_6 = prefixExpression_operand,
- _variantField_38 = prefixExpression_substitution,
- _variantField_15 = prefixExpression_element,
_variantField_28 = prefixExpression_operator,
_variantField_25 = expression_type;
@@ -8451,14 +8240,9 @@
LinkedNodeBuilder.redirectingConstructorInvocation({
LinkedNodeBuilder redirectingConstructorInvocation_arguments,
LinkedNodeBuilder redirectingConstructorInvocation_constructorName,
- LinkedNodeTypeSubstitutionBuilder
- redirectingConstructorInvocation_substitution,
- int redirectingConstructorInvocation_element,
}) : _kind = idl.LinkedNodeKind.redirectingConstructorInvocation,
_variantField_6 = redirectingConstructorInvocation_arguments,
- _variantField_7 = redirectingConstructorInvocation_constructorName,
- _variantField_38 = redirectingConstructorInvocation_substitution,
- _variantField_15 = redirectingConstructorInvocation_element;
+ _variantField_7 = redirectingConstructorInvocation_constructorName;
LinkedNodeBuilder.rethrowExpression({
LinkedNodeTypeBuilder expression_type,
@@ -8492,6 +8276,7 @@
LinkedNodeBuilder simpleFormalParameter_type,
bool inheritsCovariant,
int informativeId,
+ String name,
TopLevelInferenceErrorBuilder topLevelTypeInferenceError,
}) : _kind = idl.LinkedNodeKind.simpleFormalParameter,
_variantField_24 = actualType,
@@ -8499,16 +8284,13 @@
_variantField_6 = simpleFormalParameter_type,
_variantField_27 = inheritsCovariant,
_variantField_36 = informativeId,
+ _variantField_37 = name,
_variantField_32 = topLevelTypeInferenceError;
LinkedNodeBuilder.simpleIdentifier({
- LinkedNodeTypeSubstitutionBuilder simpleIdentifier_substitution,
- int simpleIdentifier_element,
- LinkedNodeTypeBuilder expression_type,
+ String name,
}) : _kind = idl.LinkedNodeKind.simpleIdentifier,
- _variantField_38 = simpleIdentifier_substitution,
- _variantField_15 = simpleIdentifier_element,
- _variantField_25 = expression_type;
+ _variantField_37 = name;
LinkedNodeBuilder.simpleStringLiteral({
String simpleStringLiteral_value,
@@ -8530,13 +8312,9 @@
LinkedNodeBuilder.superConstructorInvocation({
LinkedNodeBuilder superConstructorInvocation_arguments,
LinkedNodeBuilder superConstructorInvocation_constructorName,
- LinkedNodeTypeSubstitutionBuilder superConstructorInvocation_substitution,
- int superConstructorInvocation_element,
}) : _kind = idl.LinkedNodeKind.superConstructorInvocation,
_variantField_6 = superConstructorInvocation_arguments,
- _variantField_7 = superConstructorInvocation_constructorName,
- _variantField_38 = superConstructorInvocation_substitution,
- _variantField_15 = superConstructorInvocation_element;
+ _variantField_7 = superConstructorInvocation_constructorName;
LinkedNodeBuilder.superExpression({
LinkedNodeTypeBuilder expression_type,
@@ -8622,12 +8400,14 @@
LinkedNodeBuilder typeParameter_bound,
int typeParameter_variance,
int informativeId,
+ String name,
LinkedNodeTypeBuilder typeParameter_defaultType,
}) : _kind = idl.LinkedNodeKind.typeParameter,
_variantField_4 = annotatedNode_metadata,
_variantField_6 = typeParameter_bound,
_variantField_15 = typeParameter_variance,
_variantField_36 = informativeId,
+ _variantField_37 = name,
_variantField_23 = typeParameter_defaultType;
LinkedNodeBuilder.typeParameterList({
@@ -8641,6 +8421,7 @@
LinkedNodeBuilder variableDeclaration_initializer,
bool inheritsCovariant,
int informativeId,
+ String name,
TopLevelInferenceErrorBuilder topLevelTypeInferenceError,
}) : _kind = idl.LinkedNodeKind.variableDeclaration,
_variantField_24 = actualType,
@@ -8648,6 +8429,7 @@
_variantField_6 = variableDeclaration_initializer,
_variantField_27 = inheritsCovariant,
_variantField_36 = informativeId,
+ _variantField_37 = name,
_variantField_32 = topLevelTypeInferenceError;
LinkedNodeBuilder.variableDeclarationList({
@@ -8687,53 +8469,66 @@
void flushInformative() {
if (kind == idl.LinkedNodeKind.adjacentStrings) {
adjacentStrings_strings?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.annotation) {
annotation_arguments?.flushInformative();
annotation_constructorName?.flushInformative();
annotation_name?.flushInformative();
- annotation_substitution?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.argumentList) {
argumentList_arguments?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.asExpression) {
asExpression_expression?.flushInformative();
asExpression_type?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.assertInitializer) {
assertInitializer_condition?.flushInformative();
assertInitializer_message?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.assertStatement) {
assertStatement_condition?.flushInformative();
assertStatement_message?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.assignmentExpression) {
assignmentExpression_leftHandSide?.flushInformative();
assignmentExpression_rightHandSide?.flushInformative();
- assignmentExpression_substitution?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.awaitExpression) {
awaitExpression_expression?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.binaryExpression) {
binaryExpression_invokeType?.flushInformative();
binaryExpression_leftOperand?.flushInformative();
binaryExpression_rightOperand?.flushInformative();
- binaryExpression_substitution?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.block) {
block_statements?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.blockFunctionBody) {
blockFunctionBody_block?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.booleanLiteral) {
+ expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.breakStatement) {
breakStatement_label?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.cascadeExpression) {
cascadeExpression_sections?.forEach((b) => b.flushInformative());
cascadeExpression_target?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.catchClause) {
catchClause_body?.flushInformative();
catchClause_exceptionParameter?.flushInformative();
catchClause_exceptionType?.flushInformative();
catchClause_stackTraceParameter?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.classDeclaration) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
classDeclaration_extendsClause?.flushInformative();
@@ -8743,6 +8538,7 @@
classOrMixinDeclaration_members?.forEach((b) => b.flushInformative());
classOrMixinDeclaration_typeParameters?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
unused11?.flushInformative();
} else if (kind == idl.LinkedNodeKind.classTypeAlias) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
@@ -8751,25 +8547,31 @@
classTypeAlias_withClause?.flushInformative();
classTypeAlias_implementsClause?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.comment) {
comment_references?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.commentReference) {
commentReference_identifier?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.compilationUnit) {
compilationUnit_declarations?.forEach((b) => b.flushInformative());
compilationUnit_scriptTag?.flushInformative();
compilationUnit_directives?.forEach((b) => b.flushInformative());
compilationUnit_languageVersion?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.conditionalExpression) {
conditionalExpression_condition?.flushInformative();
conditionalExpression_elseExpression?.flushInformative();
conditionalExpression_thenExpression?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.configuration) {
configuration_name?.flushInformative();
configuration_value?.flushInformative();
configuration_uri?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.constructorDeclaration) {
constructorDeclaration_initializers?.forEach((b) => b.flushInformative());
annotatedNode_metadata?.forEach((b) => b.flushInformative());
@@ -8778,66 +8580,86 @@
constructorDeclaration_redirectedConstructor?.flushInformative();
constructorDeclaration_returnType?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.constructorFieldInitializer) {
constructorFieldInitializer_expression?.flushInformative();
constructorFieldInitializer_fieldName?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.constructorName) {
constructorName_name?.flushInformative();
constructorName_type?.flushInformative();
- constructorName_substitution?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.continueStatement) {
continueStatement_label?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.declaredIdentifier) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
declaredIdentifier_identifier?.flushInformative();
declaredIdentifier_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.defaultFormalParameter) {
+ actualType?.flushInformative();
defaultFormalParameter_defaultValue?.flushInformative();
defaultFormalParameter_parameter?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.doStatement) {
doStatement_body?.flushInformative();
doStatement_condition?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.dottedName) {
dottedName_components?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.doubleLiteral) {
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.emptyFunctionBody) {
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.emptyStatement) {
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.enumConstantDeclaration) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.enumDeclaration) {
enumDeclaration_constants?.forEach((b) => b.flushInformative());
annotatedNode_metadata?.forEach((b) => b.flushInformative());
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.exportDirective) {
namespaceDirective_combinators?.forEach((b) => b.flushInformative());
annotatedNode_metadata?.forEach((b) => b.flushInformative());
namespaceDirective_configurations?.forEach((b) => b.flushInformative());
informativeId = null;
uriBasedDirective_uri?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.expressionFunctionBody) {
expressionFunctionBody_expression?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.expressionStatement) {
expressionStatement_expression?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.extendsClause) {
extendsClause_superclass?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.extensionDeclaration) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
extensionDeclaration_typeParameters?.flushInformative();
extensionDeclaration_extendedType?.flushInformative();
extensionDeclaration_members?.forEach((b) => b.flushInformative());
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.extensionOverride) {
extensionOverride_extendedType?.flushInformative();
extensionOverride_arguments?.forEach((b) => b.flushInformative());
extensionOverride_extensionName?.flushInformative();
extensionOverride_typeArguments?.flushInformative();
extensionOverride_typeArgumentTypes?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.fieldDeclaration) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
fieldDeclaration_fields?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.fieldFormalParameter) {
actualType?.flushInformative();
normalFormalParameter_metadata?.forEach((b) => b.flushInformative());
@@ -8845,47 +8667,59 @@
fieldFormalParameter_typeParameters?.flushInformative();
fieldFormalParameter_formalParameters?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.forEachPartsWithDeclaration) {
forEachParts_iterable?.flushInformative();
forEachPartsWithDeclaration_loopVariable?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.forEachPartsWithIdentifier) {
forEachParts_iterable?.flushInformative();
forEachPartsWithIdentifier_identifier?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.forElement) {
forMixin_forLoopParts?.flushInformative();
forElement_body?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.forPartsWithDeclarations) {
forParts_condition?.flushInformative();
forPartsWithDeclarations_variables?.flushInformative();
forParts_updaters?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.forPartsWithExpression) {
forParts_condition?.flushInformative();
forPartsWithExpression_initialization?.flushInformative();
forParts_updaters?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.forStatement) {
forMixin_forLoopParts?.flushInformative();
forStatement_body?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.formalParameterList) {
formalParameterList_parameters?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.functionDeclaration) {
actualReturnType?.flushInformative();
annotatedNode_metadata?.forEach((b) => b.flushInformative());
functionDeclaration_functionExpression?.flushInformative();
functionDeclaration_returnType?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.functionDeclarationStatement) {
functionDeclarationStatement_functionDeclaration?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.functionExpression) {
actualReturnType?.flushInformative();
functionExpression_body?.flushInformative();
functionExpression_formalParameters?.flushInformative();
functionExpression_typeParameters?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.functionExpressionInvocation) {
invocationExpression_invokeType?.flushInformative();
functionExpressionInvocation_function?.flushInformative();
invocationExpression_typeArguments?.flushInformative();
expression_type?.flushInformative();
invocationExpression_arguments?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.functionTypeAlias) {
actualReturnType?.flushInformative();
annotatedNode_metadata?.forEach((b) => b.flushInformative());
@@ -8893,6 +8727,7 @@
functionTypeAlias_returnType?.flushInformative();
functionTypeAlias_typeParameters?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.functionTypedFormalParameter) {
actualType?.flushInformative();
normalFormalParameter_metadata?.forEach((b) => b.flushInformative());
@@ -8900,72 +8735,91 @@
functionTypedFormalParameter_returnType?.flushInformative();
functionTypedFormalParameter_typeParameters?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.genericFunctionType) {
actualReturnType?.flushInformative();
genericFunctionType_typeParameters?.flushInformative();
genericFunctionType_returnType?.flushInformative();
genericFunctionType_formalParameters?.flushInformative();
genericFunctionType_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.genericTypeAlias) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
genericTypeAlias_typeParameters?.flushInformative();
genericTypeAlias_functionType?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.hideCombinator) {
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.ifElement) {
ifMixin_condition?.flushInformative();
ifElement_thenElement?.flushInformative();
ifElement_elseElement?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.ifStatement) {
ifMixin_condition?.flushInformative();
ifStatement_elseStatement?.flushInformative();
ifStatement_thenStatement?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.implementsClause) {
implementsClause_interfaces?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.importDirective) {
namespaceDirective_combinators?.forEach((b) => b.flushInformative());
annotatedNode_metadata?.forEach((b) => b.flushInformative());
namespaceDirective_configurations?.forEach((b) => b.flushInformative());
informativeId = null;
uriBasedDirective_uri?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.indexExpression) {
indexExpression_index?.flushInformative();
indexExpression_target?.flushInformative();
- indexExpression_substitution?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.instanceCreationExpression) {
instanceCreationExpression_arguments
?.forEach((b) => b.flushInformative());
instanceCreationExpression_constructorName?.flushInformative();
instanceCreationExpression_typeArguments?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.integerLiteral) {
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.interpolationExpression) {
interpolationExpression_expression?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.interpolationString) {
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.isExpression) {
isExpression_expression?.flushInformative();
isExpression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.label) {
label_label?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.labeledStatement) {
labeledStatement_labels?.forEach((b) => b.flushInformative());
labeledStatement_statement?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.libraryDirective) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
libraryDirective_name?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.libraryIdentifier) {
libraryIdentifier_components?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.listLiteral) {
typedLiteral_typeArguments?.forEach((b) => b.flushInformative());
listLiteral_elements?.forEach((b) => b.flushInformative());
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.mapLiteralEntry) {
mapLiteralEntry_key?.flushInformative();
mapLiteralEntry_value?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.methodDeclaration) {
actualReturnType?.flushInformative();
annotatedNode_metadata?.forEach((b) => b.flushInformative());
@@ -8974,6 +8828,7 @@
methodDeclaration_returnType?.flushInformative();
methodDeclaration_typeParameters?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
topLevelTypeInferenceError?.flushInformative();
} else if (kind == idl.LinkedNodeKind.methodInvocation) {
invocationExpression_invokeType?.flushInformative();
@@ -8982,6 +8837,7 @@
invocationExpression_typeArguments?.flushInformative();
expression_type?.flushInformative();
invocationExpression_arguments?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.mixinDeclaration) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
mixinDeclaration_onClause?.flushInformative();
@@ -8989,137 +8845,174 @@
classOrMixinDeclaration_members?.forEach((b) => b.flushInformative());
classOrMixinDeclaration_typeParameters?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.namedExpression) {
namedExpression_expression?.flushInformative();
namedExpression_name?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.nativeClause) {
nativeClause_name?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.nativeFunctionBody) {
nativeFunctionBody_stringLiteral?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.nullLiteral) {
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.onClause) {
onClause_superclassConstraints?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.parenthesizedExpression) {
parenthesizedExpression_expression?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.partDirective) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
informativeId = null;
uriBasedDirective_uri?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.partOfDirective) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
partOfDirective_libraryName?.flushInformative();
partOfDirective_uri?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.postfixExpression) {
postfixExpression_operand?.flushInformative();
- postfixExpression_substitution?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.prefixExpression) {
prefixExpression_operand?.flushInformative();
- prefixExpression_substitution?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.prefixedIdentifier) {
prefixedIdentifier_identifier?.flushInformative();
prefixedIdentifier_prefix?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.propertyAccess) {
propertyAccess_propertyName?.flushInformative();
propertyAccess_target?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.redirectingConstructorInvocation) {
redirectingConstructorInvocation_arguments?.flushInformative();
redirectingConstructorInvocation_constructorName?.flushInformative();
- redirectingConstructorInvocation_substitution?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.rethrowExpression) {
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.returnStatement) {
returnStatement_expression?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.setOrMapLiteral) {
typedLiteral_typeArguments?.forEach((b) => b.flushInformative());
setOrMapLiteral_elements?.forEach((b) => b.flushInformative());
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.showCombinator) {
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.simpleFormalParameter) {
actualType?.flushInformative();
normalFormalParameter_metadata?.forEach((b) => b.flushInformative());
simpleFormalParameter_type?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
topLevelTypeInferenceError?.flushInformative();
} else if (kind == idl.LinkedNodeKind.simpleIdentifier) {
- simpleIdentifier_substitution?.flushInformative();
- expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.simpleStringLiteral) {
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.spreadElement) {
spreadElement_expression?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.stringInterpolation) {
stringInterpolation_elements?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.superConstructorInvocation) {
superConstructorInvocation_arguments?.flushInformative();
superConstructorInvocation_constructorName?.flushInformative();
- superConstructorInvocation_substitution?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.superExpression) {
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.switchCase) {
switchMember_statements?.forEach((b) => b.flushInformative());
switchCase_expression?.flushInformative();
switchMember_labels?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.switchDefault) {
switchMember_statements?.forEach((b) => b.flushInformative());
switchMember_labels?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.switchStatement) {
switchStatement_members?.forEach((b) => b.flushInformative());
switchStatement_expression?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.symbolLiteral) {
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.thisExpression) {
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.throwExpression) {
throwExpression_expression?.flushInformative();
expression_type?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.topLevelVariableDeclaration) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
topLevelVariableDeclaration_variableList?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.tryStatement) {
tryStatement_catchClauses?.forEach((b) => b.flushInformative());
tryStatement_body?.flushInformative();
tryStatement_finallyBlock?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.typeArgumentList) {
typeArgumentList_arguments?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.typeName) {
typeName_typeArguments?.forEach((b) => b.flushInformative());
typeName_name?.flushInformative();
+ resolution?.flushInformative();
typeName_type?.flushInformative();
} else if (kind == idl.LinkedNodeKind.typeParameter) {
annotatedNode_metadata?.forEach((b) => b.flushInformative());
typeParameter_bound?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
typeParameter_defaultType?.flushInformative();
} else if (kind == idl.LinkedNodeKind.typeParameterList) {
typeParameterList_typeParameters?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.variableDeclaration) {
actualType?.flushInformative();
annotatedNode_metadata?.forEach((b) => b.flushInformative());
variableDeclaration_initializer?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
topLevelTypeInferenceError?.flushInformative();
} else if (kind == idl.LinkedNodeKind.variableDeclarationList) {
variableDeclarationList_variables?.forEach((b) => b.flushInformative());
annotatedNode_metadata?.forEach((b) => b.flushInformative());
variableDeclarationList_type?.flushInformative();
informativeId = null;
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.variableDeclarationStatement) {
variableDeclarationStatement_variables?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.whileStatement) {
whileStatement_body?.flushInformative();
whileStatement_condition?.flushInformative();
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.withClause) {
withClause_mixinTypes?.forEach((b) => b.flushInformative());
+ resolution?.flushInformative();
} else if (kind == idl.LinkedNodeKind.yieldStatement) {
yieldStatement_expression?.flushInformative();
+ resolution?.flushInformative();
}
}
@@ -9136,7 +9029,8 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.annotation) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.annotation_arguments != null);
@@ -9145,11 +9039,9 @@
this.annotation_constructorName?.collectApiSignature(signature);
signature.addBool(this.annotation_name != null);
this.annotation_name?.collectApiSignature(signature);
- signature.addInt(this.annotation_element ?? 0);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
- signature.addBool(this.annotation_substitution != null);
- this.annotation_substitution?.collectApiSignature(signature);
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.argumentList) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.argumentList_arguments == null) {
@@ -9161,7 +9053,8 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.asExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.asExpression_expression != null);
@@ -9171,7 +9064,8 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.assertInitializer) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.assertInitializer_condition != null);
@@ -9179,7 +9073,8 @@
signature.addBool(this.assertInitializer_message != null);
this.assertInitializer_message?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.assertStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.assertStatement_condition != null);
@@ -9187,23 +9082,22 @@
signature.addBool(this.assertStatement_message != null);
this.assertStatement_message?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.assignmentExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.assignmentExpression_leftHandSide != null);
this.assignmentExpression_leftHandSide?.collectApiSignature(signature);
signature.addBool(this.assignmentExpression_rightHandSide != null);
this.assignmentExpression_rightHandSide?.collectApiSignature(signature);
- signature.addInt(this.assignmentExpression_element ?? 0);
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
signature.addInt(this.assignmentExpression_operator == null
? 0
: this.assignmentExpression_operator.index);
- signature.addString(this.name ?? '');
- signature.addBool(this.assignmentExpression_substitution != null);
- this.assignmentExpression_substitution?.collectApiSignature(signature);
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.awaitExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.awaitExpression_expression != null);
@@ -9211,14 +9105,14 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.binaryExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.binaryExpression_leftOperand != null);
this.binaryExpression_leftOperand?.collectApiSignature(signature);
signature.addBool(this.binaryExpression_rightOperand != null);
this.binaryExpression_rightOperand?.collectApiSignature(signature);
- signature.addInt(this.binaryExpression_element ?? 0);
signature.addInt(this.flags ?? 0);
signature.addBool(this.binaryExpression_invokeType != null);
this.binaryExpression_invokeType?.collectApiSignature(signature);
@@ -9227,9 +9121,8 @@
signature.addInt(this.binaryExpression_operator == null
? 0
: this.binaryExpression_operator.index);
- signature.addString(this.name ?? '');
- signature.addBool(this.binaryExpression_substitution != null);
- this.binaryExpression_substitution?.collectApiSignature(signature);
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.block) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.block_statements == null) {
@@ -9241,24 +9134,30 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.blockFunctionBody) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.blockFunctionBody_block != null);
this.blockFunctionBody_block?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.booleanLiteral) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.flags ?? 0);
+ signature.addBool(this.expression_type != null);
+ this.expression_type?.collectApiSignature(signature);
signature.addBool(this.booleanLiteral_value == true);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.breakStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.breakStatement_label != null);
this.breakStatement_label?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.cascadeExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.cascadeExpression_sections == null) {
@@ -9274,7 +9173,8 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.catchClause) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.catchClause_body != null);
@@ -9286,7 +9186,8 @@
signature.addBool(this.catchClause_stackTraceParameter != null);
this.catchClause_stackTraceParameter?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.classDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -9325,6 +9226,8 @@
signature.addBool(this.classDeclaration_isDartObject == true);
signature.addBool(this.simplyBoundable_isSimplyBounded == true);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.classTypeAlias) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -9346,6 +9249,8 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.simplyBoundable_isSimplyBounded == true);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.comment) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.comment_references == null) {
@@ -9366,13 +9271,15 @@
signature.addString(x);
}
}
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.commentReference) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.commentReference_identifier != null);
this.commentReference_identifier?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.compilationUnit) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.compilationUnit_declarations == null) {
@@ -9394,9 +9301,6 @@
signature.addBool(this.compilationUnit_scriptTag != null);
this.compilationUnit_scriptTag?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
- signature.addBool(this.compilationUnit_languageVersion != null);
- this.compilationUnit_languageVersion?.collectApiSignature(signature);
if (this.compilationUnit_featureSet == null) {
signature.addInt(0);
} else {
@@ -9405,6 +9309,10 @@
signature.addInt(x);
}
}
+ signature.addBool(this.compilationUnit_languageVersion != null);
+ this.compilationUnit_languageVersion?.collectApiSignature(signature);
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.conditionalExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.conditionalExpression_condition != null);
@@ -9416,7 +9324,8 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.configuration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.configuration_name != null);
@@ -9426,7 +9335,8 @@
signature.addBool(this.configuration_uri != null);
this.configuration_uri?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.constructorDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.constructorDeclaration_initializers == null) {
@@ -9458,6 +9368,8 @@
this.constructorDeclaration_returnType?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.constructorFieldInitializer) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.constructorFieldInitializer_expression != null);
@@ -9469,24 +9381,24 @@
.constructorFieldInitializer_fieldName
?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.constructorName) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.constructorName_name != null);
this.constructorName_name?.collectApiSignature(signature);
signature.addBool(this.constructorName_type != null);
this.constructorName_type?.collectApiSignature(signature);
- signature.addInt(this.constructorName_element ?? 0);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
- signature.addBool(this.constructorName_substitution != null);
- this.constructorName_substitution?.collectApiSignature(signature);
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.continueStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.continueStatement_label != null);
this.continueStatement_label?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.declaredIdentifier) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -9502,7 +9414,8 @@
signature.addBool(this.declaredIdentifier_type != null);
this.declaredIdentifier_type?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.defaultFormalParameter) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.defaultFormalParameter_defaultValue != null);
@@ -9510,10 +9423,13 @@
signature.addBool(this.defaultFormalParameter_parameter != null);
this.defaultFormalParameter_parameter?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
+ signature.addBool(this.actualType != null);
+ this.actualType?.collectApiSignature(signature);
signature.addInt(this.defaultFormalParameter_kind == null
? 0
: this.defaultFormalParameter_kind.index);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.doStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.doStatement_body != null);
@@ -9521,7 +9437,8 @@
signature.addBool(this.doStatement_condition != null);
this.doStatement_condition?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.dottedName) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.dottedName_components == null) {
@@ -9533,22 +9450,26 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.doubleLiteral) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.flags ?? 0);
signature.addDouble(this.doubleLiteral_value ?? 0.0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.emptyFunctionBody) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.emptyFunctionBody_fake ?? 0);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.emptyStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.emptyStatement_fake ?? 0);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.enumConstantDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -9561,6 +9482,8 @@
}
signature.addInt(this.flags ?? 0);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.enumDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.enumDeclaration_constants == null) {
@@ -9581,6 +9504,8 @@
}
signature.addInt(this.flags ?? 0);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.exportDirective) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.namespaceDirective_combinators == null) {
@@ -9610,28 +9535,31 @@
signature.addBool(this.uriBasedDirective_uri != null);
this.uriBasedDirective_uri?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addInt(this.uriBasedDirective_uriElement ?? 0);
signature.addString(this.namespaceDirective_selectedUri ?? '');
signature.addString(this.uriBasedDirective_uriContent ?? '');
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.expressionFunctionBody) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.expressionFunctionBody_expression != null);
this.expressionFunctionBody_expression?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.expressionStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.expressionStatement_expression != null);
this.expressionStatement_expression?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.extendsClause) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.extendsClause_superclass != null);
this.extendsClause_superclass?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.extensionDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -9657,6 +9585,8 @@
signature.addInt(this.flags ?? 0);
signature.addString(this.extensionDeclaration_refName ?? '');
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.extensionOverride) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.extensionOverride_arguments == null) {
@@ -9674,7 +9604,6 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.extensionOverride_extendedType != null);
this.extensionOverride_extendedType?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
if (this.extensionOverride_typeArgumentTypes == null) {
signature.addInt(0);
} else {
@@ -9683,6 +9612,8 @@
x?.collectApiSignature(signature);
}
}
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.fieldDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -9696,7 +9627,8 @@
signature.addBool(this.fieldDeclaration_fields != null);
this.fieldDeclaration_fields?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.fieldFormalParameter) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.normalFormalParameter_metadata == null) {
@@ -9720,6 +9652,8 @@
this.actualType?.collectApiSignature(signature);
signature.addBool(this.inheritsCovariant == true);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.forEachPartsWithDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.forEachParts_iterable != null);
@@ -9729,7 +9663,8 @@
.forEachPartsWithDeclaration_loopVariable
?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.forEachPartsWithIdentifier) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.forEachParts_iterable != null);
@@ -9739,7 +9674,8 @@
.forEachPartsWithIdentifier_identifier
?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.forElement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.forMixin_forLoopParts != null);
@@ -9747,7 +9683,8 @@
signature.addBool(this.forElement_body != null);
this.forElement_body?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.forPartsWithDeclarations) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.forParts_updaters == null) {
@@ -9763,7 +9700,8 @@
signature.addBool(this.forPartsWithDeclarations_variables != null);
this.forPartsWithDeclarations_variables?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.forPartsWithExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.forParts_updaters == null) {
@@ -9781,7 +9719,8 @@
.forPartsWithExpression_initialization
?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.forStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.forMixin_forLoopParts != null);
@@ -9789,7 +9728,8 @@
signature.addBool(this.forStatement_body != null);
this.forStatement_body?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.formalParameterList) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.formalParameterList_parameters == null) {
@@ -9801,7 +9741,8 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.functionDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -9822,6 +9763,8 @@
signature.addBool(this.actualReturnType != null);
this.actualReturnType?.collectApiSignature(signature);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.functionDeclarationStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(
@@ -9830,7 +9773,8 @@
.functionDeclarationStatement_functionDeclaration
?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.functionExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.functionExpression_body != null);
@@ -9842,7 +9786,8 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.actualReturnType != null);
this.actualReturnType?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.functionExpressionInvocation) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.functionExpressionInvocation_function != null);
@@ -9858,7 +9803,8 @@
this.invocationExpression_invokeType?.collectApiSignature(signature);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.functionTypeAlias) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -9881,6 +9827,8 @@
signature.addBool(this.typeAlias_hasSelfReference == true);
signature.addBool(this.simplyBoundable_isSimplyBounded == true);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.functionTypedFormalParameter) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.normalFormalParameter_metadata == null) {
@@ -9910,6 +9858,8 @@
this.actualType?.collectApiSignature(signature);
signature.addBool(this.inheritsCovariant == true);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.genericFunctionType) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.genericFunctionType_typeParameters != null);
@@ -9924,7 +9874,8 @@
this.actualReturnType?.collectApiSignature(signature);
signature.addBool(this.genericFunctionType_type != null);
this.genericFunctionType_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.genericTypeAlias) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -9943,6 +9894,8 @@
signature.addBool(this.typeAlias_hasSelfReference == true);
signature.addBool(this.simplyBoundable_isSimplyBounded == true);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.hideCombinator) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.flags ?? 0);
@@ -9954,7 +9907,8 @@
signature.addString(x);
}
}
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.ifElement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.ifMixin_condition != null);
@@ -9964,7 +9918,8 @@
signature.addBool(this.ifElement_elseElement != null);
this.ifElement_elseElement?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.ifStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.ifMixin_condition != null);
@@ -9974,7 +9929,8 @@
signature.addBool(this.ifStatement_thenStatement != null);
this.ifStatement_thenStatement?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.implementsClause) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.implementsClause_interfaces == null) {
@@ -9986,7 +9942,8 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.importDirective) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addString(this.importDirective_prefix ?? '');
@@ -10017,23 +9974,21 @@
signature.addBool(this.uriBasedDirective_uri != null);
this.uriBasedDirective_uri?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addInt(this.uriBasedDirective_uriElement ?? 0);
signature.addString(this.namespaceDirective_selectedUri ?? '');
signature.addString(this.uriBasedDirective_uriContent ?? '');
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.indexExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.indexExpression_index != null);
this.indexExpression_index?.collectApiSignature(signature);
signature.addBool(this.indexExpression_target != null);
this.indexExpression_target?.collectApiSignature(signature);
- signature.addInt(this.indexExpression_element ?? 0);
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
- signature.addBool(this.indexExpression_substitution != null);
- this.indexExpression_substitution?.collectApiSignature(signature);
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.instanceCreationExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.instanceCreationExpression_arguments == null) {
@@ -10056,25 +10011,29 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.integerLiteral) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.integerLiteral_value ?? 0);
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.interpolationExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.interpolationExpression_expression != null);
this.interpolationExpression_expression?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.interpolationString) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.flags ?? 0);
signature.addString(this.interpolationString_value ?? '');
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.isExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.isExpression_expression != null);
@@ -10082,13 +10041,15 @@
signature.addBool(this.isExpression_type != null);
this.isExpression_type?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.label) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.label_label != null);
this.label_label?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.labeledStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.labeledStatement_labels == null) {
@@ -10102,7 +10063,8 @@
signature.addBool(this.labeledStatement_statement != null);
this.labeledStatement_statement?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.libraryDirective) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -10116,7 +10078,8 @@
signature.addBool(this.libraryDirective_name != null);
this.libraryDirective_name?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.libraryIdentifier) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.libraryIdentifier_components == null) {
@@ -10128,7 +10091,8 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.listLiteral) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.typedLiteral_typeArguments == null) {
@@ -10150,7 +10114,8 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.mapLiteralEntry) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.mapLiteralEntry_key != null);
@@ -10158,7 +10123,8 @@
signature.addBool(this.mapLiteralEntry_value != null);
this.mapLiteralEntry_value?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.methodDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -10186,6 +10152,8 @@
signature.addBool(this.topLevelTypeInferenceError != null);
this.topLevelTypeInferenceError?.collectApiSignature(signature);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.methodInvocation) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.methodInvocation_methodName != null);
@@ -10201,7 +10169,8 @@
this.invocationExpression_invokeType?.collectApiSignature(signature);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.mixinDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -10241,6 +10210,8 @@
}
}
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.namedExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.namedExpression_expression != null);
@@ -10248,26 +10219,30 @@
signature.addBool(this.namedExpression_name != null);
this.namedExpression_name?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.nativeClause) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.nativeClause_name != null);
this.nativeClause_name?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.nativeFunctionBody) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.nativeFunctionBody_stringLiteral != null);
this.nativeFunctionBody_stringLiteral?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.nullLiteral) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.nullLiteral_fake ?? 0);
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.onClause) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.onClause_superclassConstraints == null) {
@@ -10279,7 +10254,8 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.parenthesizedExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.parenthesizedExpression_expression != null);
@@ -10287,7 +10263,8 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.partDirective) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -10301,9 +10278,9 @@
signature.addBool(this.uriBasedDirective_uri != null);
this.uriBasedDirective_uri?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addInt(this.uriBasedDirective_uriElement ?? 0);
signature.addString(this.uriBasedDirective_uriContent ?? '');
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.partOfDirective) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -10319,35 +10296,32 @@
signature.addBool(this.partOfDirective_uri != null);
this.partOfDirective_uri?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.postfixExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.postfixExpression_operand != null);
this.postfixExpression_operand?.collectApiSignature(signature);
- signature.addInt(this.postfixExpression_element ?? 0);
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
signature.addInt(this.postfixExpression_operator == null
? 0
: this.postfixExpression_operator.index);
- signature.addString(this.name ?? '');
- signature.addBool(this.postfixExpression_substitution != null);
- this.postfixExpression_substitution?.collectApiSignature(signature);
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.prefixExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.prefixExpression_operand != null);
this.prefixExpression_operand?.collectApiSignature(signature);
- signature.addInt(this.prefixExpression_element ?? 0);
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
signature.addInt(this.prefixExpression_operator == null
? 0
: this.prefixExpression_operator.index);
- signature.addString(this.name ?? '');
- signature.addBool(this.prefixExpression_substitution != null);
- this.prefixExpression_substitution?.collectApiSignature(signature);
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.prefixedIdentifier) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.prefixedIdentifier_identifier != null);
@@ -10357,7 +10331,8 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.propertyAccess) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.propertyAccess_propertyName != null);
@@ -10370,7 +10345,8 @@
signature.addInt(this.propertyAccess_operator == null
? 0
: this.propertyAccess_operator.index);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.redirectingConstructorInvocation) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature
@@ -10383,26 +10359,23 @@
this
.redirectingConstructorInvocation_constructorName
?.collectApiSignature(signature);
- signature.addInt(this.redirectingConstructorInvocation_element ?? 0);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
- signature
- .addBool(this.redirectingConstructorInvocation_substitution != null);
- this
- .redirectingConstructorInvocation_substitution
- ?.collectApiSignature(signature);
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.rethrowExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.returnStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.returnStatement_expression != null);
this.returnStatement_expression?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.setOrMapLiteral) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.typedLiteral_typeArguments == null) {
@@ -10424,7 +10397,8 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.showCombinator) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.flags ?? 0);
@@ -10436,7 +10410,8 @@
signature.addString(x);
}
}
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.simpleFormalParameter) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.normalFormalParameter_metadata == null) {
@@ -10456,20 +10431,20 @@
signature.addBool(this.topLevelTypeInferenceError != null);
this.topLevelTypeInferenceError?.collectApiSignature(signature);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.simpleIdentifier) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
- signature.addInt(this.simpleIdentifier_element ?? 0);
signature.addInt(this.flags ?? 0);
- signature.addBool(this.expression_type != null);
- this.expression_type?.collectApiSignature(signature);
signature.addString(this.name ?? '');
- signature.addBool(this.simpleIdentifier_substitution != null);
- this.simpleIdentifier_substitution?.collectApiSignature(signature);
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.simpleStringLiteral) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.flags ?? 0);
signature.addString(this.simpleStringLiteral_value ?? '');
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.spreadElement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.spreadElement_expression != null);
@@ -10478,7 +10453,8 @@
signature.addInt(this.spreadElement_spreadOperator == null
? 0
: this.spreadElement_spreadOperator.index);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.stringInterpolation) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.stringInterpolation_elements == null) {
@@ -10490,7 +10466,8 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.superConstructorInvocation) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.superConstructorInvocation_arguments != null);
@@ -10500,19 +10477,16 @@
this
.superConstructorInvocation_constructorName
?.collectApiSignature(signature);
- signature.addInt(this.superConstructorInvocation_element ?? 0);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
- signature.addBool(this.superConstructorInvocation_substitution != null);
- this
- .superConstructorInvocation_substitution
- ?.collectApiSignature(signature);
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.superExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.switchCase) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.switchMember_labels == null) {
@@ -10534,7 +10508,8 @@
signature.addBool(this.switchCase_expression != null);
this.switchCase_expression?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.switchDefault) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.switchMember_labels == null) {
@@ -10554,7 +10529,8 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.switchStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.switchStatement_members == null) {
@@ -10568,7 +10544,8 @@
signature.addBool(this.switchStatement_expression != null);
this.switchStatement_expression?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.symbolLiteral) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.flags ?? 0);
@@ -10582,13 +10559,15 @@
signature.addString(x);
}
}
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.thisExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.throwExpression) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.throwExpression_expression != null);
@@ -10596,7 +10575,8 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.expression_type != null);
this.expression_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.topLevelVariableDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -10612,7 +10592,8 @@
.topLevelVariableDeclaration_variableList
?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.tryStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.tryStatement_catchClauses == null) {
@@ -10628,7 +10609,8 @@
signature.addBool(this.tryStatement_finallyBlock != null);
this.tryStatement_finallyBlock?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.typeArgumentList) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.typeArgumentList_arguments == null) {
@@ -10640,7 +10622,8 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.typeName) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.typeName_typeArguments == null) {
@@ -10656,7 +10639,8 @@
signature.addInt(this.flags ?? 0);
signature.addBool(this.typeName_type != null);
this.typeName_type?.collectApiSignature(signature);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.typeParameter) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -10674,6 +10658,8 @@
signature.addBool(this.typeParameter_defaultType != null);
this.typeParameter_defaultType?.collectApiSignature(signature);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.typeParameterList) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.typeParameterList_typeParameters == null) {
@@ -10685,7 +10671,8 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.variableDeclaration) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.annotatedNode_metadata == null) {
@@ -10705,6 +10692,8 @@
signature.addBool(this.topLevelTypeInferenceError != null);
this.topLevelTypeInferenceError?.collectApiSignature(signature);
signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.variableDeclarationList) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.variableDeclarationList_variables == null) {
@@ -10726,7 +10715,8 @@
signature.addBool(this.variableDeclarationList_type != null);
this.variableDeclarationList_type?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.variableDeclarationStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.variableDeclarationStatement_variables != null);
@@ -10734,7 +10724,8 @@
.variableDeclarationStatement_variables
?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.whileStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.whileStatement_body != null);
@@ -10742,7 +10733,8 @@
signature.addBool(this.whileStatement_condition != null);
this.whileStatement_condition?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.withClause) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
if (this.withClause_mixinTypes == null) {
@@ -10754,13 +10746,15 @@
}
}
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
} else if (kind == idl.LinkedNodeKind.yieldStatement) {
signature.addInt(this.kind == null ? 0 : this.kind.index);
signature.addBool(this.yieldStatement_expression != null);
this.yieldStatement_expression?.collectApiSignature(signature);
signature.addInt(this.flags ?? 0);
- signature.addString(this.name ?? '');
+ signature.addBool(this.resolution != null);
+ this.resolution?.collectApiSignature(signature);
}
}
@@ -10771,24 +10765,24 @@
fb.Offset offset_variantField_6;
fb.Offset offset_variantField_7;
fb.Offset offset_variantField_8;
- fb.Offset offset_variantField_38;
fb.Offset offset_variantField_9;
fb.Offset offset_variantField_12;
fb.Offset offset_variantField_5;
fb.Offset offset_variantField_13;
fb.Offset offset_variantField_33;
fb.Offset offset_variantField_3;
- fb.Offset offset_variantField_41;
- fb.Offset offset_variantField_40;
+ fb.Offset offset_variantField_19;
+ fb.Offset offset_variantField_39;
fb.Offset offset_variantField_10;
fb.Offset offset_variantField_25;
fb.Offset offset_variantField_20;
- fb.Offset offset_variantField_39;
+ fb.Offset offset_variantField_38;
fb.Offset offset_variantField_1;
fb.Offset offset_variantField_30;
fb.Offset offset_variantField_14;
fb.Offset offset_variantField_34;
- fb.Offset offset_name;
+ fb.Offset offset_variantField_37;
+ fb.Offset offset_resolution;
fb.Offset offset_variantField_32;
fb.Offset offset_variantField_23;
fb.Offset offset_variantField_11;
@@ -10813,9 +10807,6 @@
if (_variantField_8 != null) {
offset_variantField_8 = _variantField_8.finish(fbBuilder);
}
- if (_variantField_38 != null) {
- offset_variantField_38 = _variantField_38.finish(fbBuilder);
- }
if (_variantField_9 != null) {
offset_variantField_9 = _variantField_9.finish(fbBuilder);
}
@@ -10837,11 +10828,11 @@
offset_variantField_3 = fbBuilder
.writeList(_variantField_3.map((b) => b.finish(fbBuilder)).toList());
}
- if (!(_variantField_41 == null || _variantField_41.isEmpty)) {
- offset_variantField_41 = fbBuilder.writeListUint32(_variantField_41);
+ if (!(_variantField_19 == null || _variantField_19.isEmpty)) {
+ offset_variantField_19 = fbBuilder.writeListUint32(_variantField_19);
}
- if (_variantField_40 != null) {
- offset_variantField_40 = _variantField_40.finish(fbBuilder);
+ if (_variantField_39 != null) {
+ offset_variantField_39 = _variantField_39.finish(fbBuilder);
}
if (_variantField_10 != null) {
offset_variantField_10 = _variantField_10.finish(fbBuilder);
@@ -10852,9 +10843,9 @@
if (_variantField_20 != null) {
offset_variantField_20 = fbBuilder.writeString(_variantField_20);
}
- if (!(_variantField_39 == null || _variantField_39.isEmpty)) {
- offset_variantField_39 = fbBuilder
- .writeList(_variantField_39.map((b) => b.finish(fbBuilder)).toList());
+ if (!(_variantField_38 == null || _variantField_38.isEmpty)) {
+ offset_variantField_38 = fbBuilder
+ .writeList(_variantField_38.map((b) => b.finish(fbBuilder)).toList());
}
if (_variantField_1 != null) {
offset_variantField_1 = fbBuilder.writeString(_variantField_1);
@@ -10869,8 +10860,11 @@
offset_variantField_34 = fbBuilder.writeList(
_variantField_34.map((b) => fbBuilder.writeString(b)).toList());
}
- if (_name != null) {
- offset_name = fbBuilder.writeString(_name);
+ if (_variantField_37 != null) {
+ offset_variantField_37 = fbBuilder.writeString(_variantField_37);
+ }
+ if (_resolution != null) {
+ offset_resolution = _resolution.finish(fbBuilder);
}
if (_variantField_32 != null) {
offset_variantField_32 = _variantField_32.finish(fbBuilder);
@@ -10900,18 +10894,9 @@
if (offset_variantField_7 != null) {
fbBuilder.addOffset(7, offset_variantField_7);
}
- if (_variantField_17 != null && _variantField_17 != 0) {
- fbBuilder.addUint32(17, _variantField_17);
- }
if (offset_variantField_8 != null) {
fbBuilder.addOffset(8, offset_variantField_8);
}
- if (offset_variantField_38 != null) {
- fbBuilder.addOffset(38, offset_variantField_38);
- }
- if (_variantField_15 != null && _variantField_15 != 0) {
- fbBuilder.addUint32(15, _variantField_15);
- }
if (_variantField_28 != null &&
_variantField_28 != idl.UnlinkedTokenType.NOTHING) {
fbBuilder.addUint8(28, _variantField_28.index);
@@ -10941,11 +10926,11 @@
if (offset_variantField_3 != null) {
fbBuilder.addOffset(3, offset_variantField_3);
}
- if (offset_variantField_41 != null) {
- fbBuilder.addOffset(41, offset_variantField_41);
+ if (offset_variantField_19 != null) {
+ fbBuilder.addOffset(19, offset_variantField_19);
}
- if (offset_variantField_40 != null) {
- fbBuilder.addOffset(40, offset_variantField_40);
+ if (offset_variantField_39 != null) {
+ fbBuilder.addOffset(39, offset_variantField_39);
}
if (offset_variantField_10 != null) {
fbBuilder.addOffset(10, offset_variantField_10);
@@ -10958,18 +10943,24 @@
if (_variantField_21 != null && _variantField_21 != 0.0) {
fbBuilder.addFloat64(21, _variantField_21);
}
+ if (_variantField_15 != null && _variantField_15 != 0) {
+ fbBuilder.addUint32(15, _variantField_15);
+ }
if (offset_variantField_25 != null) {
fbBuilder.addOffset(25, offset_variantField_25);
}
if (offset_variantField_20 != null) {
fbBuilder.addOffset(20, offset_variantField_20);
}
- if (offset_variantField_39 != null) {
- fbBuilder.addOffset(39, offset_variantField_39);
+ if (offset_variantField_38 != null) {
+ fbBuilder.addOffset(38, offset_variantField_38);
}
if (_flags != null && _flags != 0) {
fbBuilder.addUint32(18, _flags);
}
+ if (_variantField_17 != null && _variantField_17 != 0) {
+ fbBuilder.addUint32(17, _variantField_17);
+ }
if (offset_variantField_1 != null) {
fbBuilder.addOffset(1, offset_variantField_1);
}
@@ -10994,8 +10985,11 @@
if (offset_variantField_34 != null) {
fbBuilder.addOffset(34, offset_variantField_34);
}
- if (offset_name != null) {
- fbBuilder.addOffset(37, offset_name);
+ if (offset_variantField_37 != null) {
+ fbBuilder.addOffset(37, offset_variantField_37);
+ }
+ if (offset_resolution != null) {
+ fbBuilder.addOffset(40, offset_resolution);
}
if (_variantField_35 != null &&
_variantField_35 != idl.UnlinkedTokenType.NOTHING) {
@@ -11013,9 +11007,6 @@
if (offset_variantField_22 != null) {
fbBuilder.addOffset(22, offset_variantField_22);
}
- if (_variantField_19 != null && _variantField_19 != 0) {
- fbBuilder.addUint32(19, _variantField_19);
- }
return fbBuilder.endTable();
}
}
@@ -11041,10 +11032,7 @@
List<idl.LinkedNode> _variantField_4;
idl.LinkedNode _variantField_6;
idl.LinkedNode _variantField_7;
- int _variantField_17;
idl.LinkedNode _variantField_8;
- idl.LinkedNodeTypeSubstitution _variantField_38;
- int _variantField_15;
idl.UnlinkedTokenType _variantField_28;
bool _variantField_27;
idl.LinkedNode _variantField_9;
@@ -11054,15 +11042,17 @@
List<String> _variantField_33;
idl.LinkedNodeCommentType _variantField_29;
List<idl.LinkedNode> _variantField_3;
- List<int> _variantField_41;
- idl.LinkedLibraryLanguageVersion _variantField_40;
+ List<int> _variantField_19;
+ idl.LinkedLibraryLanguageVersion _variantField_39;
idl.LinkedNode _variantField_10;
idl.LinkedNodeFormalParameterKind _variantField_26;
double _variantField_21;
+ int _variantField_15;
idl.LinkedNodeType _variantField_25;
String _variantField_20;
- List<idl.LinkedNodeType> _variantField_39;
+ List<idl.LinkedNodeType> _variantField_38;
int _flags;
+ int _variantField_17;
String _variantField_1;
int _variantField_36;
int _variantField_16;
@@ -11071,13 +11061,13 @@
idl.LinkedNodeKind _kind;
bool _variantField_31;
List<String> _variantField_34;
- String _name;
+ String _variantField_37;
+ idl.LinkedNodeResolution _resolution;
idl.UnlinkedTokenType _variantField_35;
idl.TopLevelInferenceError _variantField_32;
idl.LinkedNodeType _variantField_23;
idl.LinkedNode _variantField_11;
String _variantField_22;
- int _variantField_19;
@override
idl.LinkedNodeType get actualReturnType {
@@ -11093,7 +11083,8 @@
@override
idl.LinkedNodeType get actualType {
- assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
+ assert(kind == idl.LinkedNodeKind.defaultFormalParameter ||
+ kind == idl.LinkedNodeKind.fieldFormalParameter ||
kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
kind == idl.LinkedNodeKind.simpleFormalParameter ||
kind == idl.LinkedNodeKind.variableDeclaration);
@@ -12382,22 +12373,6 @@
}
@override
- int get annotation_element {
- assert(kind == idl.LinkedNodeKind.annotation);
- _variantField_17 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 17, 0);
- return _variantField_17;
- }
-
- @override
- int get genericFunctionType_id {
- assert(kind == idl.LinkedNodeKind.genericFunctionType);
- _variantField_17 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 17, 0);
- return _variantField_17;
- }
-
- @override
idl.LinkedNode get annotation_name {
assert(kind == idl.LinkedNodeKind.annotation);
_variantField_8 ??=
@@ -12534,191 +12509,6 @@
}
@override
- idl.LinkedNodeTypeSubstitution get annotation_substitution {
- assert(kind == idl.LinkedNodeKind.annotation);
- _variantField_38 ??= const _LinkedNodeTypeSubstitutionReader()
- .vTableGet(_bc, _bcOffset, 38, null);
- return _variantField_38;
- }
-
- @override
- idl.LinkedNodeTypeSubstitution get assignmentExpression_substitution {
- assert(kind == idl.LinkedNodeKind.assignmentExpression);
- _variantField_38 ??= const _LinkedNodeTypeSubstitutionReader()
- .vTableGet(_bc, _bcOffset, 38, null);
- return _variantField_38;
- }
-
- @override
- idl.LinkedNodeTypeSubstitution get binaryExpression_substitution {
- assert(kind == idl.LinkedNodeKind.binaryExpression);
- _variantField_38 ??= const _LinkedNodeTypeSubstitutionReader()
- .vTableGet(_bc, _bcOffset, 38, null);
- return _variantField_38;
- }
-
- @override
- idl.LinkedNodeTypeSubstitution get constructorName_substitution {
- assert(kind == idl.LinkedNodeKind.constructorName);
- _variantField_38 ??= const _LinkedNodeTypeSubstitutionReader()
- .vTableGet(_bc, _bcOffset, 38, null);
- return _variantField_38;
- }
-
- @override
- idl.LinkedNodeTypeSubstitution get indexExpression_substitution {
- assert(kind == idl.LinkedNodeKind.indexExpression);
- _variantField_38 ??= const _LinkedNodeTypeSubstitutionReader()
- .vTableGet(_bc, _bcOffset, 38, null);
- return _variantField_38;
- }
-
- @override
- idl.LinkedNodeTypeSubstitution get postfixExpression_substitution {
- assert(kind == idl.LinkedNodeKind.postfixExpression);
- _variantField_38 ??= const _LinkedNodeTypeSubstitutionReader()
- .vTableGet(_bc, _bcOffset, 38, null);
- return _variantField_38;
- }
-
- @override
- idl.LinkedNodeTypeSubstitution get prefixExpression_substitution {
- assert(kind == idl.LinkedNodeKind.prefixExpression);
- _variantField_38 ??= const _LinkedNodeTypeSubstitutionReader()
- .vTableGet(_bc, _bcOffset, 38, null);
- return _variantField_38;
- }
-
- @override
- idl.LinkedNodeTypeSubstitution
- get redirectingConstructorInvocation_substitution {
- assert(kind == idl.LinkedNodeKind.redirectingConstructorInvocation);
- _variantField_38 ??= const _LinkedNodeTypeSubstitutionReader()
- .vTableGet(_bc, _bcOffset, 38, null);
- return _variantField_38;
- }
-
- @override
- idl.LinkedNodeTypeSubstitution get simpleIdentifier_substitution {
- assert(kind == idl.LinkedNodeKind.simpleIdentifier);
- _variantField_38 ??= const _LinkedNodeTypeSubstitutionReader()
- .vTableGet(_bc, _bcOffset, 38, null);
- return _variantField_38;
- }
-
- @override
- idl.LinkedNodeTypeSubstitution get superConstructorInvocation_substitution {
- assert(kind == idl.LinkedNodeKind.superConstructorInvocation);
- _variantField_38 ??= const _LinkedNodeTypeSubstitutionReader()
- .vTableGet(_bc, _bcOffset, 38, null);
- return _variantField_38;
- }
-
- @override
- int get assignmentExpression_element {
- assert(kind == idl.LinkedNodeKind.assignmentExpression);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get binaryExpression_element {
- assert(kind == idl.LinkedNodeKind.binaryExpression);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get constructorName_element {
- assert(kind == idl.LinkedNodeKind.constructorName);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get emptyFunctionBody_fake {
- assert(kind == idl.LinkedNodeKind.emptyFunctionBody);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get emptyStatement_fake {
- assert(kind == idl.LinkedNodeKind.emptyStatement);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get indexExpression_element {
- assert(kind == idl.LinkedNodeKind.indexExpression);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get nullLiteral_fake {
- assert(kind == idl.LinkedNodeKind.nullLiteral);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get postfixExpression_element {
- assert(kind == idl.LinkedNodeKind.postfixExpression);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get prefixExpression_element {
- assert(kind == idl.LinkedNodeKind.prefixExpression);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get redirectingConstructorInvocation_element {
- assert(kind == idl.LinkedNodeKind.redirectingConstructorInvocation);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get simpleIdentifier_element {
- assert(kind == idl.LinkedNodeKind.simpleIdentifier);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get superConstructorInvocation_element {
- assert(kind == idl.LinkedNodeKind.superConstructorInvocation);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
- int get typeParameter_variance {
- assert(kind == idl.LinkedNodeKind.typeParameter);
- _variantField_15 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
- return _variantField_15;
- }
-
- @override
idl.UnlinkedTokenType get assignmentExpression_operator {
assert(kind == idl.LinkedNodeKind.assignmentExpression);
_variantField_28 ??= const _UnlinkedTokenTypeReader()
@@ -12948,17 +12738,17 @@
@override
List<int> get compilationUnit_featureSet {
assert(kind == idl.LinkedNodeKind.compilationUnit);
- _variantField_41 ??= const fb.Uint32ListReader()
- .vTableGet(_bc, _bcOffset, 41, const <int>[]);
- return _variantField_41;
+ _variantField_19 ??= const fb.Uint32ListReader()
+ .vTableGet(_bc, _bcOffset, 19, const <int>[]);
+ return _variantField_19;
}
@override
idl.LinkedLibraryLanguageVersion get compilationUnit_languageVersion {
assert(kind == idl.LinkedNodeKind.compilationUnit);
- _variantField_40 ??= const _LinkedLibraryLanguageVersionReader()
- .vTableGet(_bc, _bcOffset, 40, null);
- return _variantField_40;
+ _variantField_39 ??= const _LinkedLibraryLanguageVersionReader()
+ .vTableGet(_bc, _bcOffset, 39, null);
+ return _variantField_39;
}
@override
@@ -12989,11 +12779,44 @@
}
@override
+ int get emptyFunctionBody_fake {
+ assert(kind == idl.LinkedNodeKind.emptyFunctionBody);
+ _variantField_15 ??=
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
+ return _variantField_15;
+ }
+
+ @override
+ int get emptyStatement_fake {
+ assert(kind == idl.LinkedNodeKind.emptyStatement);
+ _variantField_15 ??=
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
+ return _variantField_15;
+ }
+
+ @override
+ int get nullLiteral_fake {
+ assert(kind == idl.LinkedNodeKind.nullLiteral);
+ _variantField_15 ??=
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
+ return _variantField_15;
+ }
+
+ @override
+ int get typeParameter_variance {
+ assert(kind == idl.LinkedNodeKind.typeParameter);
+ _variantField_15 ??=
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 15, 0);
+ return _variantField_15;
+ }
+
+ @override
idl.LinkedNodeType get expression_type {
assert(kind == idl.LinkedNodeKind.assignmentExpression ||
kind == idl.LinkedNodeKind.asExpression ||
kind == idl.LinkedNodeKind.awaitExpression ||
kind == idl.LinkedNodeKind.binaryExpression ||
+ kind == idl.LinkedNodeKind.booleanLiteral ||
kind == idl.LinkedNodeKind.cascadeExpression ||
kind == idl.LinkedNodeKind.conditionalExpression ||
kind == idl.LinkedNodeKind.functionExpressionInvocation ||
@@ -13010,7 +12833,6 @@
kind == idl.LinkedNodeKind.postfixExpression ||
kind == idl.LinkedNodeKind.rethrowExpression ||
kind == idl.LinkedNodeKind.setOrMapLiteral ||
- kind == idl.LinkedNodeKind.simpleIdentifier ||
kind == idl.LinkedNodeKind.superExpression ||
kind == idl.LinkedNodeKind.symbolLiteral ||
kind == idl.LinkedNodeKind.thisExpression ||
@@ -13056,10 +12878,10 @@
@override
List<idl.LinkedNodeType> get extensionOverride_typeArgumentTypes {
assert(kind == idl.LinkedNodeKind.extensionOverride);
- _variantField_39 ??=
+ _variantField_38 ??=
const fb.ListReader<idl.LinkedNodeType>(_LinkedNodeTypeReader())
- .vTableGet(_bc, _bcOffset, 39, const <idl.LinkedNodeType>[]);
- return _variantField_39;
+ .vTableGet(_bc, _bcOffset, 38, const <idl.LinkedNodeType>[]);
+ return _variantField_38;
}
@override
@@ -13069,6 +12891,14 @@
}
@override
+ int get genericFunctionType_id {
+ assert(kind == idl.LinkedNodeKind.genericFunctionType);
+ _variantField_17 ??=
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 17, 0);
+ return _variantField_17;
+ }
+
+ @override
String get importDirective_prefix {
assert(kind == idl.LinkedNodeKind.importDirective);
_variantField_1 ??=
@@ -13194,8 +13024,33 @@
@override
String get name {
- _name ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 37, '');
- return _name;
+ assert(kind == idl.LinkedNodeKind.classDeclaration ||
+ kind == idl.LinkedNodeKind.classTypeAlias ||
+ kind == idl.LinkedNodeKind.constructorDeclaration ||
+ kind == idl.LinkedNodeKind.enumDeclaration ||
+ kind == idl.LinkedNodeKind.enumConstantDeclaration ||
+ kind == idl.LinkedNodeKind.extensionDeclaration ||
+ kind == idl.LinkedNodeKind.fieldFormalParameter ||
+ kind == idl.LinkedNodeKind.functionDeclaration ||
+ kind == idl.LinkedNodeKind.functionTypeAlias ||
+ kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
+ kind == idl.LinkedNodeKind.genericTypeAlias ||
+ kind == idl.LinkedNodeKind.methodDeclaration ||
+ kind == idl.LinkedNodeKind.mixinDeclaration ||
+ kind == idl.LinkedNodeKind.simpleFormalParameter ||
+ kind == idl.LinkedNodeKind.simpleIdentifier ||
+ kind == idl.LinkedNodeKind.typeParameter ||
+ kind == idl.LinkedNodeKind.variableDeclaration);
+ _variantField_37 ??=
+ const fb.StringReader().vTableGet(_bc, _bcOffset, 37, '');
+ return _variantField_37;
+ }
+
+ @override
+ idl.LinkedNodeResolution get resolution {
+ _resolution ??=
+ const _LinkedNodeResolutionReader().vTableGet(_bc, _bcOffset, 40, null);
+ return _resolution;
}
@override
@@ -13249,16 +13104,6 @@
const fb.StringReader().vTableGet(_bc, _bcOffset, 22, '');
return _variantField_22;
}
-
- @override
- int get uriBasedDirective_uriElement {
- assert(kind == idl.LinkedNodeKind.exportDirective ||
- kind == idl.LinkedNodeKind.importDirective ||
- kind == idl.LinkedNodeKind.partDirective);
- _variantField_19 ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 19, 0);
- return _variantField_19;
- }
}
abstract class _LinkedNodeMixin implements idl.LinkedNode {
@@ -13271,8 +13116,8 @@
if (kind != idl.LinkedNodeKind.adjacentStrings) {
_result["kind"] = kind.toString().split('.')[1];
}
- if (name != '') {
- _result["name"] = name;
+ if (resolution != null) {
+ _result["resolution"] = resolution.toJson();
}
if (kind == idl.LinkedNodeKind.adjacentStrings) {
if (adjacentStrings_strings.isNotEmpty) {
@@ -13288,15 +13133,9 @@
_result["annotation_constructorName"] =
annotation_constructorName.toJson();
}
- if (annotation_element != 0) {
- _result["annotation_element"] = annotation_element;
- }
if (annotation_name != null) {
_result["annotation_name"] = annotation_name.toJson();
}
- if (annotation_substitution != null) {
- _result["annotation_substitution"] = annotation_substitution.toJson();
- }
}
if (kind == idl.LinkedNodeKind.argumentList) {
if (argumentList_arguments.isNotEmpty) {
@@ -13343,13 +13182,6 @@
_result["assignmentExpression_rightHandSide"] =
assignmentExpression_rightHandSide.toJson();
}
- if (assignmentExpression_substitution != null) {
- _result["assignmentExpression_substitution"] =
- assignmentExpression_substitution.toJson();
- }
- if (assignmentExpression_element != 0) {
- _result["assignmentExpression_element"] = assignmentExpression_element;
- }
if (assignmentExpression_operator != idl.UnlinkedTokenType.NOTHING) {
_result["assignmentExpression_operator"] =
assignmentExpression_operator.toString().split('.')[1];
@@ -13380,13 +13212,6 @@
_result["binaryExpression_rightOperand"] =
binaryExpression_rightOperand.toJson();
}
- if (binaryExpression_substitution != null) {
- _result["binaryExpression_substitution"] =
- binaryExpression_substitution.toJson();
- }
- if (binaryExpression_element != 0) {
- _result["binaryExpression_element"] = binaryExpression_element;
- }
if (binaryExpression_operator != idl.UnlinkedTokenType.NOTHING) {
_result["binaryExpression_operator"] =
binaryExpression_operator.toString().split('.')[1];
@@ -13410,6 +13235,9 @@
if (booleanLiteral_value != false) {
_result["booleanLiteral_value"] = booleanLiteral_value;
}
+ if (expression_type != null) {
+ _result["expression_type"] = expression_type.toJson();
+ }
}
if (kind == idl.LinkedNodeKind.breakStatement) {
if (breakStatement_label != null) {
@@ -13488,6 +13316,9 @@
_result["simplyBoundable_isSimplyBounded"] =
simplyBoundable_isSimplyBounded;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
if (unused11 != null) {
_result["unused11"] = unused11.toJson();
}
@@ -13520,6 +13351,9 @@
_result["simplyBoundable_isSimplyBounded"] =
simplyBoundable_isSimplyBounded;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
}
if (kind == idl.LinkedNodeKind.comment) {
if (comment_references.isNotEmpty) {
@@ -13623,6 +13457,9 @@
if (informativeId != 0) {
_result["informativeId"] = informativeId;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
}
if (kind == idl.LinkedNodeKind.constructorFieldInitializer) {
if (constructorFieldInitializer_expression != null) {
@@ -13641,13 +13478,6 @@
if (constructorName_type != null) {
_result["constructorName_type"] = constructorName_type.toJson();
}
- if (constructorName_substitution != null) {
- _result["constructorName_substitution"] =
- constructorName_substitution.toJson();
- }
- if (constructorName_element != 0) {
- _result["constructorName_element"] = constructorName_element;
- }
}
if (kind == idl.LinkedNodeKind.continueStatement) {
if (continueStatement_label != null) {
@@ -13668,6 +13498,9 @@
}
}
if (kind == idl.LinkedNodeKind.defaultFormalParameter) {
+ if (actualType != null) {
+ _result["actualType"] = actualType.toJson();
+ }
if (defaultFormalParameter_defaultValue != null) {
_result["defaultFormalParameter_defaultValue"] =
defaultFormalParameter_defaultValue.toJson();
@@ -13724,6 +13557,9 @@
if (informativeId != 0) {
_result["informativeId"] = informativeId;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
}
if (kind == idl.LinkedNodeKind.enumDeclaration) {
if (enumDeclaration_constants.isNotEmpty) {
@@ -13737,6 +13573,9 @@
if (informativeId != 0) {
_result["informativeId"] = informativeId;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
}
if (kind == idl.LinkedNodeKind.exportDirective) {
if (namespaceDirective_combinators.isNotEmpty) {
@@ -13768,9 +13607,6 @@
if (uriBasedDirective_uriContent != '') {
_result["uriBasedDirective_uriContent"] = uriBasedDirective_uriContent;
}
- if (uriBasedDirective_uriElement != 0) {
- _result["uriBasedDirective_uriElement"] = uriBasedDirective_uriElement;
- }
}
if (kind == idl.LinkedNodeKind.expressionFunctionBody) {
if (expressionFunctionBody_expression != null) {
@@ -13813,6 +13649,9 @@
if (informativeId != 0) {
_result["informativeId"] = informativeId;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
}
if (kind == idl.LinkedNodeKind.extensionOverride) {
if (extensionOverride_extendedType != null) {
@@ -13879,6 +13718,9 @@
if (informativeId != 0) {
_result["informativeId"] = informativeId;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
}
if (kind == idl.LinkedNodeKind.forEachPartsWithDeclaration) {
if (forEachParts_iterable != null) {
@@ -13967,6 +13809,9 @@
if (informativeId != 0) {
_result["informativeId"] = informativeId;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
}
if (kind == idl.LinkedNodeKind.functionDeclarationStatement) {
if (functionDeclarationStatement_functionDeclaration != null) {
@@ -14041,6 +13886,9 @@
_result["simplyBoundable_isSimplyBounded"] =
simplyBoundable_isSimplyBounded;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
}
if (kind == idl.LinkedNodeKind.functionTypedFormalParameter) {
if (actualType != null) {
@@ -14070,6 +13918,9 @@
if (informativeId != 0) {
_result["informativeId"] = informativeId;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
}
if (kind == idl.LinkedNodeKind.genericFunctionType) {
if (actualReturnType != null) {
@@ -14083,9 +13934,6 @@
_result["genericFunctionType_returnType"] =
genericFunctionType_returnType.toJson();
}
- if (genericFunctionType_id != 0) {
- _result["genericFunctionType_id"] = genericFunctionType_id;
- }
if (genericFunctionType_formalParameters != null) {
_result["genericFunctionType_formalParameters"] =
genericFunctionType_formalParameters.toJson();
@@ -14093,6 +13941,9 @@
if (genericFunctionType_type != null) {
_result["genericFunctionType_type"] = genericFunctionType_type.toJson();
}
+ if (genericFunctionType_id != 0) {
+ _result["genericFunctionType_id"] = genericFunctionType_id;
+ }
}
if (kind == idl.LinkedNodeKind.genericTypeAlias) {
if (annotatedNode_metadata.isNotEmpty) {
@@ -14117,6 +13968,9 @@
_result["simplyBoundable_isSimplyBounded"] =
simplyBoundable_isSimplyBounded;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
}
if (kind == idl.LinkedNodeKind.hideCombinator) {
if (informativeId != 0) {
@@ -14190,9 +14044,6 @@
if (uriBasedDirective_uriContent != '') {
_result["uriBasedDirective_uriContent"] = uriBasedDirective_uriContent;
}
- if (uriBasedDirective_uriElement != 0) {
- _result["uriBasedDirective_uriElement"] = uriBasedDirective_uriElement;
- }
}
if (kind == idl.LinkedNodeKind.indexExpression) {
if (indexExpression_index != null) {
@@ -14201,13 +14052,6 @@
if (indexExpression_target != null) {
_result["indexExpression_target"] = indexExpression_target.toJson();
}
- if (indexExpression_substitution != null) {
- _result["indexExpression_substitution"] =
- indexExpression_substitution.toJson();
- }
- if (indexExpression_element != 0) {
- _result["indexExpression_element"] = indexExpression_element;
- }
if (expression_type != null) {
_result["expression_type"] = expression_type.toJson();
}
@@ -14345,6 +14189,9 @@
_result["methodDeclaration_hasOperatorEqualWithParameterTypeFromObject"] =
methodDeclaration_hasOperatorEqualWithParameterTypeFromObject;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
if (topLevelTypeInferenceError != null) {
_result["topLevelTypeInferenceError"] =
topLevelTypeInferenceError.toJson();
@@ -14408,6 +14255,9 @@
_result["mixinDeclaration_superInvokedNames"] =
mixinDeclaration_superInvokedNames;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
}
if (kind == idl.LinkedNodeKind.namedExpression) {
if (namedExpression_expression != null) {
@@ -14468,9 +14318,6 @@
if (uriBasedDirective_uriContent != '') {
_result["uriBasedDirective_uriContent"] = uriBasedDirective_uriContent;
}
- if (uriBasedDirective_uriElement != 0) {
- _result["uriBasedDirective_uriElement"] = uriBasedDirective_uriElement;
- }
}
if (kind == idl.LinkedNodeKind.partOfDirective) {
if (annotatedNode_metadata.isNotEmpty) {
@@ -14493,13 +14340,6 @@
_result["postfixExpression_operand"] =
postfixExpression_operand.toJson();
}
- if (postfixExpression_substitution != null) {
- _result["postfixExpression_substitution"] =
- postfixExpression_substitution.toJson();
- }
- if (postfixExpression_element != 0) {
- _result["postfixExpression_element"] = postfixExpression_element;
- }
if (postfixExpression_operator != idl.UnlinkedTokenType.NOTHING) {
_result["postfixExpression_operator"] =
postfixExpression_operator.toString().split('.')[1];
@@ -14512,13 +14352,6 @@
if (prefixExpression_operand != null) {
_result["prefixExpression_operand"] = prefixExpression_operand.toJson();
}
- if (prefixExpression_substitution != null) {
- _result["prefixExpression_substitution"] =
- prefixExpression_substitution.toJson();
- }
- if (prefixExpression_element != 0) {
- _result["prefixExpression_element"] = prefixExpression_element;
- }
if (prefixExpression_operator != idl.UnlinkedTokenType.NOTHING) {
_result["prefixExpression_operator"] =
prefixExpression_operator.toString().split('.')[1];
@@ -14565,14 +14398,6 @@
_result["redirectingConstructorInvocation_constructorName"] =
redirectingConstructorInvocation_constructorName.toJson();
}
- if (redirectingConstructorInvocation_substitution != null) {
- _result["redirectingConstructorInvocation_substitution"] =
- redirectingConstructorInvocation_substitution.toJson();
- }
- if (redirectingConstructorInvocation_element != 0) {
- _result["redirectingConstructorInvocation_element"] =
- redirectingConstructorInvocation_element;
- }
}
if (kind == idl.LinkedNodeKind.rethrowExpression) {
if (expression_type != null) {
@@ -14627,21 +14452,17 @@
if (informativeId != 0) {
_result["informativeId"] = informativeId;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
if (topLevelTypeInferenceError != null) {
_result["topLevelTypeInferenceError"] =
topLevelTypeInferenceError.toJson();
}
}
if (kind == idl.LinkedNodeKind.simpleIdentifier) {
- if (simpleIdentifier_substitution != null) {
- _result["simpleIdentifier_substitution"] =
- simpleIdentifier_substitution.toJson();
- }
- if (simpleIdentifier_element != 0) {
- _result["simpleIdentifier_element"] = simpleIdentifier_element;
- }
- if (expression_type != null) {
- _result["expression_type"] = expression_type.toJson();
+ if (name != '') {
+ _result["name"] = name;
}
}
if (kind == idl.LinkedNodeKind.simpleStringLiteral) {
@@ -14674,14 +14495,6 @@
_result["superConstructorInvocation_constructorName"] =
superConstructorInvocation_constructorName.toJson();
}
- if (superConstructorInvocation_substitution != null) {
- _result["superConstructorInvocation_substitution"] =
- superConstructorInvocation_substitution.toJson();
- }
- if (superConstructorInvocation_element != 0) {
- _result["superConstructorInvocation_element"] =
- superConstructorInvocation_element;
- }
}
if (kind == idl.LinkedNodeKind.superExpression) {
if (expression_type != null) {
@@ -14802,6 +14615,9 @@
if (informativeId != 0) {
_result["informativeId"] = informativeId;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
if (typeParameter_defaultType != null) {
_result["typeParameter_defaultType"] =
typeParameter_defaultType.toJson();
@@ -14833,6 +14649,9 @@
if (informativeId != 0) {
_result["informativeId"] = informativeId;
}
+ if (name != '') {
+ _result["name"] = name;
+ }
if (topLevelTypeInferenceError != null) {
_result["topLevelTypeInferenceError"] =
topLevelTypeInferenceError.toJson();
@@ -14893,19 +14712,17 @@
"adjacentStrings_strings": adjacentStrings_strings,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.annotation) {
return {
"annotation_arguments": annotation_arguments,
"annotation_constructorName": annotation_constructorName,
- "annotation_element": annotation_element,
"annotation_name": annotation_name,
- "annotation_substitution": annotation_substitution,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.argumentList) {
@@ -14913,7 +14730,7 @@
"argumentList_arguments": argumentList_arguments,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.asExpression) {
@@ -14923,7 +14740,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.assertInitializer) {
@@ -14932,7 +14749,7 @@
"assertInitializer_message": assertInitializer_message,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.assertStatement) {
@@ -14941,7 +14758,7 @@
"assertStatement_message": assertStatement_message,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.assignmentExpression) {
@@ -14949,13 +14766,11 @@
"assignmentExpression_leftHandSide": assignmentExpression_leftHandSide,
"assignmentExpression_rightHandSide":
assignmentExpression_rightHandSide,
- "assignmentExpression_substitution": assignmentExpression_substitution,
- "assignmentExpression_element": assignmentExpression_element,
"assignmentExpression_operator": assignmentExpression_operator,
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.awaitExpression) {
@@ -14964,7 +14779,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.binaryExpression) {
@@ -14972,13 +14787,11 @@
"binaryExpression_invokeType": binaryExpression_invokeType,
"binaryExpression_leftOperand": binaryExpression_leftOperand,
"binaryExpression_rightOperand": binaryExpression_rightOperand,
- "binaryExpression_substitution": binaryExpression_substitution,
- "binaryExpression_element": binaryExpression_element,
"binaryExpression_operator": binaryExpression_operator,
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.block) {
@@ -14986,7 +14799,7 @@
"block_statements": block_statements,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.blockFunctionBody) {
@@ -14994,15 +14807,16 @@
"blockFunctionBody_block": blockFunctionBody_block,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.booleanLiteral) {
return {
"booleanLiteral_value": booleanLiteral_value,
+ "expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.breakStatement) {
@@ -15010,7 +14824,7 @@
"breakStatement_label": breakStatement_label,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.cascadeExpression) {
@@ -15020,7 +14834,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.catchClause) {
@@ -15031,7 +14845,7 @@
"catchClause_stackTraceParameter": catchClause_stackTraceParameter,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.classDeclaration) {
@@ -15051,6 +14865,7 @@
"kind": kind,
"simplyBoundable_isSimplyBounded": simplyBoundable_isSimplyBounded,
"name": name,
+ "resolution": resolution,
"unused11": unused11,
};
}
@@ -15066,6 +14881,7 @@
"kind": kind,
"simplyBoundable_isSimplyBounded": simplyBoundable_isSimplyBounded,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.comment) {
@@ -15075,7 +14891,7 @@
"comment_type": comment_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.commentReference) {
@@ -15083,7 +14899,7 @@
"commentReference_identifier": commentReference_identifier,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.compilationUnit) {
@@ -15096,7 +14912,7 @@
"flags": flags,
"informativeId": informativeId,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.conditionalExpression) {
@@ -15109,7 +14925,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.configuration) {
@@ -15119,7 +14935,7 @@
"configuration_uri": configuration_uri,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.constructorDeclaration) {
@@ -15136,6 +14952,7 @@
"informativeId": informativeId,
"kind": kind,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.constructorFieldInitializer) {
@@ -15146,18 +14963,16 @@
constructorFieldInitializer_fieldName,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.constructorName) {
return {
"constructorName_name": constructorName_name,
"constructorName_type": constructorName_type,
- "constructorName_substitution": constructorName_substitution,
- "constructorName_element": constructorName_element,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.continueStatement) {
@@ -15165,7 +14980,7 @@
"continueStatement_label": continueStatement_label,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.declaredIdentifier) {
@@ -15175,11 +14990,12 @@
"declaredIdentifier_type": declaredIdentifier_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.defaultFormalParameter) {
return {
+ "actualType": actualType,
"defaultFormalParameter_defaultValue":
defaultFormalParameter_defaultValue,
"defaultFormalParameter_parameter": defaultFormalParameter_parameter,
@@ -15187,7 +15003,7 @@
"flags": flags,
"informativeId": informativeId,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.doStatement) {
@@ -15196,7 +15012,7 @@
"doStatement_condition": doStatement_condition,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.dottedName) {
@@ -15204,7 +15020,7 @@
"dottedName_components": dottedName_components,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.doubleLiteral) {
@@ -15212,7 +15028,7 @@
"doubleLiteral_value": doubleLiteral_value,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.emptyFunctionBody) {
@@ -15220,7 +15036,7 @@
"emptyFunctionBody_fake": emptyFunctionBody_fake,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.emptyStatement) {
@@ -15228,7 +15044,7 @@
"emptyStatement_fake": emptyStatement_fake,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.enumConstantDeclaration) {
@@ -15238,6 +15054,7 @@
"informativeId": informativeId,
"kind": kind,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.enumDeclaration) {
@@ -15248,6 +15065,7 @@
"informativeId": informativeId,
"kind": kind,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.exportDirective) {
@@ -15260,9 +15078,8 @@
"informativeId": informativeId,
"uriBasedDirective_uri": uriBasedDirective_uri,
"kind": kind,
- "name": name,
+ "resolution": resolution,
"uriBasedDirective_uriContent": uriBasedDirective_uriContent,
- "uriBasedDirective_uriElement": uriBasedDirective_uriElement,
};
}
if (kind == idl.LinkedNodeKind.expressionFunctionBody) {
@@ -15270,7 +15087,7 @@
"expressionFunctionBody_expression": expressionFunctionBody_expression,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.expressionStatement) {
@@ -15278,7 +15095,7 @@
"expressionStatement_expression": expressionStatement_expression,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.extendsClause) {
@@ -15286,7 +15103,7 @@
"extendsClause_superclass": extendsClause_superclass,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.extensionDeclaration) {
@@ -15301,6 +15118,7 @@
"informativeId": informativeId,
"kind": kind,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.extensionOverride) {
@@ -15313,7 +15131,7 @@
extensionOverride_typeArgumentTypes,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.fieldDeclaration) {
@@ -15323,7 +15141,7 @@
"flags": flags,
"informativeId": informativeId,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.fieldFormalParameter) {
@@ -15340,6 +15158,7 @@
"informativeId": informativeId,
"kind": kind,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.forEachPartsWithDeclaration) {
@@ -15349,7 +15168,7 @@
forEachPartsWithDeclaration_loopVariable,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.forEachPartsWithIdentifier) {
@@ -15359,7 +15178,7 @@
forEachPartsWithIdentifier_identifier,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.forElement) {
@@ -15368,7 +15187,7 @@
"forElement_body": forElement_body,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.forPartsWithDeclarations) {
@@ -15379,7 +15198,7 @@
"forParts_updaters": forParts_updaters,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.forPartsWithExpression) {
@@ -15390,7 +15209,7 @@
"forParts_updaters": forParts_updaters,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.forStatement) {
@@ -15399,7 +15218,7 @@
"forStatement_body": forStatement_body,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.formalParameterList) {
@@ -15407,7 +15226,7 @@
"formalParameterList_parameters": formalParameterList_parameters,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.functionDeclaration) {
@@ -15421,6 +15240,7 @@
"informativeId": informativeId,
"kind": kind,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.functionDeclarationStatement) {
@@ -15429,7 +15249,7 @@
functionDeclarationStatement_functionDeclaration,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.functionExpression) {
@@ -15441,7 +15261,7 @@
"functionExpression_typeParameters": functionExpression_typeParameters,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.functionExpressionInvocation) {
@@ -15455,7 +15275,7 @@
"flags": flags,
"invocationExpression_arguments": invocationExpression_arguments,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.functionTypeAlias) {
@@ -15472,6 +15292,7 @@
"kind": kind,
"simplyBoundable_isSimplyBounded": simplyBoundable_isSimplyBounded,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.functionTypedFormalParameter) {
@@ -15489,6 +15310,7 @@
"informativeId": informativeId,
"kind": kind,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.genericFunctionType) {
@@ -15497,13 +15319,13 @@
"genericFunctionType_typeParameters":
genericFunctionType_typeParameters,
"genericFunctionType_returnType": genericFunctionType_returnType,
- "genericFunctionType_id": genericFunctionType_id,
"genericFunctionType_formalParameters":
genericFunctionType_formalParameters,
"genericFunctionType_type": genericFunctionType_type,
"flags": flags,
+ "genericFunctionType_id": genericFunctionType_id,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.genericTypeAlias) {
@@ -15517,6 +15339,7 @@
"kind": kind,
"simplyBoundable_isSimplyBounded": simplyBoundable_isSimplyBounded,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.hideCombinator) {
@@ -15525,7 +15348,7 @@
"informativeId": informativeId,
"kind": kind,
"names": names,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.ifElement) {
@@ -15535,7 +15358,7 @@
"ifElement_elseElement": ifElement_elseElement,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.ifStatement) {
@@ -15545,7 +15368,7 @@
"ifStatement_thenStatement": ifStatement_thenStatement,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.implementsClause) {
@@ -15553,7 +15376,7 @@
"implementsClause_interfaces": implementsClause_interfaces,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.importDirective) {
@@ -15567,21 +15390,18 @@
"informativeId": informativeId,
"uriBasedDirective_uri": uriBasedDirective_uri,
"kind": kind,
- "name": name,
+ "resolution": resolution,
"uriBasedDirective_uriContent": uriBasedDirective_uriContent,
- "uriBasedDirective_uriElement": uriBasedDirective_uriElement,
};
}
if (kind == idl.LinkedNodeKind.indexExpression) {
return {
"indexExpression_index": indexExpression_index,
"indexExpression_target": indexExpression_target,
- "indexExpression_substitution": indexExpression_substitution,
- "indexExpression_element": indexExpression_element,
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.instanceCreationExpression) {
@@ -15595,7 +15415,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.integerLiteral) {
@@ -15604,7 +15424,7 @@
"flags": flags,
"integerLiteral_value": integerLiteral_value,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.interpolationExpression) {
@@ -15613,7 +15433,7 @@
interpolationExpression_expression,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.interpolationString) {
@@ -15621,7 +15441,7 @@
"flags": flags,
"interpolationString_value": interpolationString_value,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.isExpression) {
@@ -15630,7 +15450,7 @@
"isExpression_type": isExpression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.label) {
@@ -15638,7 +15458,7 @@
"label_label": label_label,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.labeledStatement) {
@@ -15647,7 +15467,7 @@
"labeledStatement_statement": labeledStatement_statement,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.libraryDirective) {
@@ -15657,7 +15477,7 @@
"flags": flags,
"informativeId": informativeId,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.libraryIdentifier) {
@@ -15665,7 +15485,7 @@
"libraryIdentifier_components": libraryIdentifier_components,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.listLiteral) {
@@ -15675,7 +15495,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.mapLiteralEntry) {
@@ -15684,7 +15504,7 @@
"mapLiteralEntry_value": mapLiteralEntry_value,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.methodDeclaration) {
@@ -15702,6 +15522,7 @@
"methodDeclaration_hasOperatorEqualWithParameterTypeFromObject":
methodDeclaration_hasOperatorEqualWithParameterTypeFromObject,
"name": name,
+ "resolution": resolution,
"topLevelTypeInferenceError": topLevelTypeInferenceError,
};
}
@@ -15716,7 +15537,7 @@
"flags": flags,
"invocationExpression_arguments": invocationExpression_arguments,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.mixinDeclaration) {
@@ -15735,6 +15556,7 @@
"mixinDeclaration_superInvokedNames":
mixinDeclaration_superInvokedNames,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.namedExpression) {
@@ -15743,7 +15565,7 @@
"namedExpression_name": namedExpression_name,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.nativeClause) {
@@ -15751,7 +15573,7 @@
"nativeClause_name": nativeClause_name,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.nativeFunctionBody) {
@@ -15759,7 +15581,7 @@
"nativeFunctionBody_stringLiteral": nativeFunctionBody_stringLiteral,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.nullLiteral) {
@@ -15768,7 +15590,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.onClause) {
@@ -15776,7 +15598,7 @@
"onClause_superclassConstraints": onClause_superclassConstraints,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.parenthesizedExpression) {
@@ -15786,7 +15608,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.partDirective) {
@@ -15796,9 +15618,8 @@
"informativeId": informativeId,
"uriBasedDirective_uri": uriBasedDirective_uri,
"kind": kind,
- "name": name,
+ "resolution": resolution,
"uriBasedDirective_uriContent": uriBasedDirective_uriContent,
- "uriBasedDirective_uriElement": uriBasedDirective_uriElement,
};
}
if (kind == idl.LinkedNodeKind.partOfDirective) {
@@ -15809,31 +15630,27 @@
"flags": flags,
"informativeId": informativeId,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.postfixExpression) {
return {
"postfixExpression_operand": postfixExpression_operand,
- "postfixExpression_substitution": postfixExpression_substitution,
- "postfixExpression_element": postfixExpression_element,
"postfixExpression_operator": postfixExpression_operator,
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.prefixExpression) {
return {
"prefixExpression_operand": prefixExpression_operand,
- "prefixExpression_substitution": prefixExpression_substitution,
- "prefixExpression_element": prefixExpression_element,
"prefixExpression_operator": prefixExpression_operator,
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.prefixedIdentifier) {
@@ -15843,7 +15660,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.propertyAccess) {
@@ -15854,7 +15671,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.redirectingConstructorInvocation) {
@@ -15863,13 +15680,9 @@
redirectingConstructorInvocation_arguments,
"redirectingConstructorInvocation_constructorName":
redirectingConstructorInvocation_constructorName,
- "redirectingConstructorInvocation_substitution":
- redirectingConstructorInvocation_substitution,
- "redirectingConstructorInvocation_element":
- redirectingConstructorInvocation_element,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.rethrowExpression) {
@@ -15877,7 +15690,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.returnStatement) {
@@ -15885,7 +15698,7 @@
"returnStatement_expression": returnStatement_expression,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.setOrMapLiteral) {
@@ -15895,7 +15708,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.showCombinator) {
@@ -15904,7 +15717,7 @@
"informativeId": informativeId,
"kind": kind,
"names": names,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.simpleFormalParameter) {
@@ -15917,17 +15730,16 @@
"informativeId": informativeId,
"kind": kind,
"name": name,
+ "resolution": resolution,
"topLevelTypeInferenceError": topLevelTypeInferenceError,
};
}
if (kind == idl.LinkedNodeKind.simpleIdentifier) {
return {
- "simpleIdentifier_substitution": simpleIdentifier_substitution,
- "simpleIdentifier_element": simpleIdentifier_element,
- "expression_type": expression_type,
"flags": flags,
"kind": kind,
"name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.simpleStringLiteral) {
@@ -15935,7 +15747,7 @@
"simpleStringLiteral_value": simpleStringLiteral_value,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.spreadElement) {
@@ -15943,7 +15755,7 @@
"spreadElement_expression": spreadElement_expression,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
"spreadElement_spreadOperator": spreadElement_spreadOperator,
};
}
@@ -15952,7 +15764,7 @@
"stringInterpolation_elements": stringInterpolation_elements,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.superConstructorInvocation) {
@@ -15961,13 +15773,9 @@
superConstructorInvocation_arguments,
"superConstructorInvocation_constructorName":
superConstructorInvocation_constructorName,
- "superConstructorInvocation_substitution":
- superConstructorInvocation_substitution,
- "superConstructorInvocation_element":
- superConstructorInvocation_element,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.superExpression) {
@@ -15975,7 +15783,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.switchCase) {
@@ -15985,7 +15793,7 @@
"switchMember_labels": switchMember_labels,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.switchDefault) {
@@ -15994,7 +15802,7 @@
"switchMember_labels": switchMember_labels,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.switchStatement) {
@@ -16003,7 +15811,7 @@
"switchStatement_expression": switchStatement_expression,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.symbolLiteral) {
@@ -16012,7 +15820,7 @@
"flags": flags,
"kind": kind,
"names": names,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.thisExpression) {
@@ -16020,7 +15828,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.throwExpression) {
@@ -16029,7 +15837,7 @@
"expression_type": expression_type,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.topLevelVariableDeclaration) {
@@ -16040,7 +15848,7 @@
"flags": flags,
"informativeId": informativeId,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.tryStatement) {
@@ -16050,7 +15858,7 @@
"tryStatement_finallyBlock": tryStatement_finallyBlock,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.typeArgumentList) {
@@ -16058,7 +15866,7 @@
"typeArgumentList_arguments": typeArgumentList_arguments,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.typeName) {
@@ -16067,7 +15875,7 @@
"typeName_name": typeName_name,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
"typeName_type": typeName_type,
};
}
@@ -16080,6 +15888,7 @@
"informativeId": informativeId,
"kind": kind,
"name": name,
+ "resolution": resolution,
"typeParameter_defaultType": typeParameter_defaultType,
};
}
@@ -16088,7 +15897,7 @@
"typeParameterList_typeParameters": typeParameterList_typeParameters,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.variableDeclaration) {
@@ -16101,6 +15910,7 @@
"informativeId": informativeId,
"kind": kind,
"name": name,
+ "resolution": resolution,
"topLevelTypeInferenceError": topLevelTypeInferenceError,
};
}
@@ -16112,7 +15922,7 @@
"flags": flags,
"informativeId": informativeId,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.variableDeclarationStatement) {
@@ -16121,7 +15931,7 @@
variableDeclarationStatement_variables,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.whileStatement) {
@@ -16130,7 +15940,7 @@
"whileStatement_condition": whileStatement_condition,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.withClause) {
@@ -16138,7 +15948,7 @@
"withClause_mixinTypes": withClause_mixinTypes,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
if (kind == idl.LinkedNodeKind.yieldStatement) {
@@ -16146,7 +15956,7 @@
"yieldStatement_expression": yieldStatement_expression,
"flags": flags,
"kind": kind,
- "name": name,
+ "resolution": resolution,
};
}
throw StateError("Unexpected $kind");
@@ -16661,6 +16471,179 @@
String toString() => convert.json.encode(toJson());
}
+class LinkedNodeResolutionBuilder extends Object
+ with _LinkedNodeResolutionMixin
+ implements idl.LinkedNodeResolution {
+ List<int> _elements;
+ List<LinkedNodeTypeSubstitutionBuilder> _substitutions;
+ List<LinkedNodeTypeBuilder> _types;
+
+ @override
+ List<int> get elements => _elements ??= <int>[];
+
+ set elements(List<int> value) {
+ assert(value == null || value.every((e) => e >= 0));
+ this._elements = value;
+ }
+
+ @override
+ List<LinkedNodeTypeSubstitutionBuilder> get substitutions =>
+ _substitutions ??= <LinkedNodeTypeSubstitutionBuilder>[];
+
+ set substitutions(List<LinkedNodeTypeSubstitutionBuilder> value) {
+ this._substitutions = value;
+ }
+
+ @override
+ List<LinkedNodeTypeBuilder> get types => _types ??= <LinkedNodeTypeBuilder>[];
+
+ set types(List<LinkedNodeTypeBuilder> value) {
+ this._types = value;
+ }
+
+ LinkedNodeResolutionBuilder(
+ {List<int> elements,
+ List<LinkedNodeTypeSubstitutionBuilder> substitutions,
+ List<LinkedNodeTypeBuilder> types})
+ : _elements = elements,
+ _substitutions = substitutions,
+ _types = types;
+
+ /// Flush [informative] data recursively.
+ void flushInformative() {
+ _substitutions?.forEach((b) => b.flushInformative());
+ _types?.forEach((b) => b.flushInformative());
+ }
+
+ /// Accumulate non-[informative] data into [signature].
+ void collectApiSignature(api_sig.ApiSignature signature) {
+ if (this._elements == null) {
+ signature.addInt(0);
+ } else {
+ signature.addInt(this._elements.length);
+ for (var x in this._elements) {
+ signature.addInt(x);
+ }
+ }
+ if (this._substitutions == null) {
+ signature.addInt(0);
+ } else {
+ signature.addInt(this._substitutions.length);
+ for (var x in this._substitutions) {
+ x?.collectApiSignature(signature);
+ }
+ }
+ if (this._types == null) {
+ signature.addInt(0);
+ } else {
+ signature.addInt(this._types.length);
+ for (var x in this._types) {
+ x?.collectApiSignature(signature);
+ }
+ }
+ }
+
+ fb.Offset finish(fb.Builder fbBuilder) {
+ fb.Offset offset_elements;
+ fb.Offset offset_substitutions;
+ fb.Offset offset_types;
+ if (!(_elements == null || _elements.isEmpty)) {
+ offset_elements = fbBuilder.writeListUint32(_elements);
+ }
+ if (!(_substitutions == null || _substitutions.isEmpty)) {
+ offset_substitutions = fbBuilder
+ .writeList(_substitutions.map((b) => b.finish(fbBuilder)).toList());
+ }
+ if (!(_types == null || _types.isEmpty)) {
+ offset_types =
+ fbBuilder.writeList(_types.map((b) => b.finish(fbBuilder)).toList());
+ }
+ fbBuilder.startTable();
+ if (offset_elements != null) {
+ fbBuilder.addOffset(0, offset_elements);
+ }
+ if (offset_substitutions != null) {
+ fbBuilder.addOffset(1, offset_substitutions);
+ }
+ if (offset_types != null) {
+ fbBuilder.addOffset(2, offset_types);
+ }
+ return fbBuilder.endTable();
+ }
+}
+
+class _LinkedNodeResolutionReader
+ extends fb.TableReader<_LinkedNodeResolutionImpl> {
+ const _LinkedNodeResolutionReader();
+
+ @override
+ _LinkedNodeResolutionImpl createObject(fb.BufferContext bc, int offset) =>
+ _LinkedNodeResolutionImpl(bc, offset);
+}
+
+class _LinkedNodeResolutionImpl extends Object
+ with _LinkedNodeResolutionMixin
+ implements idl.LinkedNodeResolution {
+ final fb.BufferContext _bc;
+ final int _bcOffset;
+
+ _LinkedNodeResolutionImpl(this._bc, this._bcOffset);
+
+ List<int> _elements;
+ List<idl.LinkedNodeTypeSubstitution> _substitutions;
+ List<idl.LinkedNodeType> _types;
+
+ @override
+ List<int> get elements {
+ _elements ??=
+ const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 0, const <int>[]);
+ return _elements;
+ }
+
+ @override
+ List<idl.LinkedNodeTypeSubstitution> get substitutions {
+ _substitutions ??= const fb.ListReader<idl.LinkedNodeTypeSubstitution>(
+ _LinkedNodeTypeSubstitutionReader())
+ .vTableGet(_bc, _bcOffset, 1, const <idl.LinkedNodeTypeSubstitution>[]);
+ return _substitutions;
+ }
+
+ @override
+ List<idl.LinkedNodeType> get types {
+ _types ??= const fb.ListReader<idl.LinkedNodeType>(_LinkedNodeTypeReader())
+ .vTableGet(_bc, _bcOffset, 2, const <idl.LinkedNodeType>[]);
+ return _types;
+ }
+}
+
+abstract class _LinkedNodeResolutionMixin implements idl.LinkedNodeResolution {
+ @override
+ Map<String, Object> toJson() {
+ Map<String, Object> _result = <String, Object>{};
+ if (elements.isNotEmpty) {
+ _result["elements"] = elements;
+ }
+ if (substitutions.isNotEmpty) {
+ _result["substitutions"] =
+ substitutions.map((_value) => _value.toJson()).toList();
+ }
+ if (types.isNotEmpty) {
+ _result["types"] = types.map((_value) => _value.toJson()).toList();
+ }
+ return _result;
+ }
+
+ @override
+ Map<String, Object> toMap() => {
+ "elements": elements,
+ "substitutions": substitutions,
+ "types": types,
+ };
+
+ @override
+ String toString() => convert.json.encode(toJson());
+}
+
class LinkedNodeTypeBuilder extends Object
with _LinkedNodeTypeMixin
implements idl.LinkedNodeType {
@@ -16673,7 +16656,6 @@
List<LinkedNodeTypeBuilder> _interfaceTypeArguments;
idl.LinkedNodeTypeKind _kind;
idl.EntityRefNullabilitySuffix _nullabilitySuffix;
- int _typeParameterElement;
int _typeParameterId;
@override
@@ -16750,14 +16732,6 @@
}
@override
- int get typeParameterElement => _typeParameterElement ??= 0;
-
- set typeParameterElement(int value) {
- assert(value == null || value >= 0);
- this._typeParameterElement = value;
- }
-
- @override
int get typeParameterId => _typeParameterId ??= 0;
set typeParameterId(int value) {
@@ -16775,7 +16749,6 @@
List<LinkedNodeTypeBuilder> interfaceTypeArguments,
idl.LinkedNodeTypeKind kind,
idl.EntityRefNullabilitySuffix nullabilitySuffix,
- int typeParameterElement,
int typeParameterId})
: _functionFormalParameters = functionFormalParameters,
_functionReturnType = functionReturnType,
@@ -16786,7 +16759,6 @@
_interfaceTypeArguments = interfaceTypeArguments,
_kind = kind,
_nullabilitySuffix = nullabilitySuffix,
- _typeParameterElement = typeParameterElement,
_typeParameterId = typeParameterId;
/// Flush [informative] data recursively.
@@ -16828,7 +16800,6 @@
}
}
signature.addInt(this._kind == null ? 0 : this._kind.index);
- signature.addInt(this._typeParameterElement ?? 0);
signature.addInt(this._typeParameterId ?? 0);
signature.addInt(
this._nullabilitySuffix == null ? 0 : this._nullabilitySuffix.index);
@@ -16880,10 +16851,10 @@
fbBuilder.addOffset(1, offset_functionReturnType);
}
if (_functionTypedef != null && _functionTypedef != 0) {
- fbBuilder.addUint32(9, _functionTypedef);
+ fbBuilder.addUint32(8, _functionTypedef);
}
if (offset_functionTypedefTypeArguments != null) {
- fbBuilder.addOffset(10, offset_functionTypedefTypeArguments);
+ fbBuilder.addOffset(9, offset_functionTypedefTypeArguments);
}
if (offset_functionTypeParameters != null) {
fbBuilder.addOffset(2, offset_functionTypeParameters);
@@ -16899,13 +16870,10 @@
}
if (_nullabilitySuffix != null &&
_nullabilitySuffix != idl.EntityRefNullabilitySuffix.starOrIrrelevant) {
- fbBuilder.addUint8(8, _nullabilitySuffix.index);
- }
- if (_typeParameterElement != null && _typeParameterElement != 0) {
- fbBuilder.addUint32(6, _typeParameterElement);
+ fbBuilder.addUint8(7, _nullabilitySuffix.index);
}
if (_typeParameterId != null && _typeParameterId != 0) {
- fbBuilder.addUint32(7, _typeParameterId);
+ fbBuilder.addUint32(6, _typeParameterId);
}
return fbBuilder.endTable();
}
@@ -16936,7 +16904,6 @@
List<idl.LinkedNodeType> _interfaceTypeArguments;
idl.LinkedNodeTypeKind _kind;
idl.EntityRefNullabilitySuffix _nullabilitySuffix;
- int _typeParameterElement;
int _typeParameterId;
@override
@@ -16959,7 +16926,7 @@
@override
int get functionTypedef {
_functionTypedef ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 9, 0);
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 8, 0);
return _functionTypedef;
}
@@ -16967,7 +16934,7 @@
List<idl.LinkedNodeType> get functionTypedefTypeArguments {
_functionTypedefTypeArguments ??=
const fb.ListReader<idl.LinkedNodeType>(_LinkedNodeTypeReader())
- .vTableGet(_bc, _bcOffset, 10, const <idl.LinkedNodeType>[]);
+ .vTableGet(_bc, _bcOffset, 9, const <idl.LinkedNodeType>[]);
return _functionTypedefTypeArguments;
}
@@ -17005,21 +16972,14 @@
@override
idl.EntityRefNullabilitySuffix get nullabilitySuffix {
_nullabilitySuffix ??= const _EntityRefNullabilitySuffixReader().vTableGet(
- _bc, _bcOffset, 8, idl.EntityRefNullabilitySuffix.starOrIrrelevant);
+ _bc, _bcOffset, 7, idl.EntityRefNullabilitySuffix.starOrIrrelevant);
return _nullabilitySuffix;
}
@override
- int get typeParameterElement {
- _typeParameterElement ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 6, 0);
- return _typeParameterElement;
- }
-
- @override
int get typeParameterId {
_typeParameterId ??=
- const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 7, 0);
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 6, 0);
return _typeParameterId;
}
}
@@ -17060,9 +17020,6 @@
if (nullabilitySuffix != idl.EntityRefNullabilitySuffix.starOrIrrelevant) {
_result["nullabilitySuffix"] = nullabilitySuffix.toString().split('.')[1];
}
- if (typeParameterElement != 0) {
- _result["typeParameterElement"] = typeParameterElement;
- }
if (typeParameterId != 0) {
_result["typeParameterId"] = typeParameterId;
}
@@ -17080,7 +17037,6 @@
"interfaceTypeArguments": interfaceTypeArguments,
"kind": kind,
"nullabilitySuffix": nullabilitySuffix,
- "typeParameterElement": typeParameterElement,
"typeParameterId": typeParameterId,
};
diff --git a/pkg/analyzer/lib/src/summary/format.fbs b/pkg/analyzer/lib/src/summary/format.fbs
index e9c6fe6..b20e97d 100644
--- a/pkg/analyzer/lib/src/summary/format.fbs
+++ b/pkg/analyzer/lib/src/summary/format.fbs
@@ -422,6 +422,8 @@
never,
+ null_,
+
typeParameter,
void_
@@ -1088,14 +1090,8 @@
variantField_7:LinkedNode (id: 7);
- variantField_17:uint (id: 17);
-
variantField_8:LinkedNode (id: 8);
- variantField_38:LinkedNodeTypeSubstitution (id: 38);
-
- variantField_15:uint (id: 15);
-
variantField_28:UnlinkedTokenType (id: 28);
variantField_27:bool (id: 27);
@@ -1114,10 +1110,10 @@
variantField_3:[LinkedNode] (id: 3);
- variantField_41:[uint] (id: 41);
+ variantField_19:[uint] (id: 19);
/// The language version information.
- variantField_40:LinkedLibraryLanguageVersion (id: 40);
+ variantField_39:LinkedLibraryLanguageVersion (id: 39);
variantField_10:LinkedNode (id: 10);
@@ -1125,14 +1121,18 @@
variantField_21:double (id: 21);
+ variantField_15:uint (id: 15);
+
variantField_25:LinkedNodeType (id: 25);
variantField_20:string (id: 20);
- variantField_39:[LinkedNodeType] (id: 39);
+ variantField_38:[LinkedNodeType] (id: 38);
flags:uint (id: 18);
+ variantField_17:uint (id: 17);
+
variantField_1:string (id: 1);
variantField_36:uint (id: 36);
@@ -1149,7 +1149,9 @@
variantField_34:[string] (id: 34);
- name:string (id: 37);
+ variantField_37:string (id: 37);
+
+ resolution:LinkedNodeResolution (id: 40);
variantField_35:UnlinkedTokenType (id: 35);
@@ -1160,8 +1162,6 @@
variantField_11:LinkedNode (id: 11);
variantField_22:string (id: 22);
-
- variantField_19:uint (id: 19);
}
/// Information about a group of libraries linked together, for example because
@@ -1195,6 +1195,17 @@
parent:[uint] (id: 0);
}
+/// Resolution information for the whole node, as the sequence of elements
+/// and types for sub-nodes, which the writer and reader visit in the same
+/// order.
+table LinkedNodeResolution {
+ elements:[uint] (id: 0);
+
+ substitutions:[LinkedNodeTypeSubstitution] (id: 1);
+
+ types:[LinkedNodeType] (id: 2);
+}
+
/// Information about a Dart type.
table LinkedNodeType {
functionFormalParameters:[LinkedNodeTypeFormalParameter] (id: 0);
@@ -1202,9 +1213,9 @@
functionReturnType:LinkedNodeType (id: 1);
/// The typedef this function type is created for.
- functionTypedef:uint (id: 9);
+ functionTypedef:uint (id: 8);
- functionTypedefTypeArguments:[LinkedNodeType] (id: 10);
+ functionTypedefTypeArguments:[LinkedNodeType] (id: 9);
functionTypeParameters:[LinkedNodeTypeTypeParameter] (id: 2);
@@ -1215,11 +1226,9 @@
kind:LinkedNodeTypeKind (id: 5);
- nullabilitySuffix:EntityRefNullabilitySuffix (id: 8);
+ nullabilitySuffix:EntityRefNullabilitySuffix (id: 7);
- typeParameterElement:uint (id: 6);
-
- typeParameterId:uint (id: 7);
+ typeParameterId:uint (id: 6);
}
/// Information about a formal parameter in a function type.
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index 4b84de9..b8d7f63 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -666,6 +666,7 @@
/// The explicit or inferred type of a variable.
@VariantId(24, variantList: [
+ LinkedNodeKind.defaultFormalParameter,
LinkedNodeKind.fieldFormalParameter,
LinkedNodeKind.functionTypedFormalParameter,
LinkedNodeKind.simpleFormalParameter,
@@ -708,15 +709,9 @@
@VariantId(7, variant: LinkedNodeKind.annotation)
LinkedNode get annotation_constructorName;
- @VariantId(17, variant: LinkedNodeKind.annotation)
- int get annotation_element;
-
@VariantId(8, variant: LinkedNodeKind.annotation)
LinkedNode get annotation_name;
- @VariantId(38, variant: LinkedNodeKind.annotation)
- LinkedNodeTypeSubstitution get annotation_substitution;
-
@VariantId(2, variant: LinkedNodeKind.argumentList)
List<LinkedNode> get argumentList_arguments;
@@ -738,9 +733,6 @@
@VariantId(7, variant: LinkedNodeKind.assertStatement)
LinkedNode get assertStatement_message;
- @VariantId(15, variant: LinkedNodeKind.assignmentExpression)
- int get assignmentExpression_element;
-
@VariantId(6, variant: LinkedNodeKind.assignmentExpression)
LinkedNode get assignmentExpression_leftHandSide;
@@ -750,15 +742,9 @@
@VariantId(7, variant: LinkedNodeKind.assignmentExpression)
LinkedNode get assignmentExpression_rightHandSide;
- @VariantId(38, variant: LinkedNodeKind.assignmentExpression)
- LinkedNodeTypeSubstitution get assignmentExpression_substitution;
-
@VariantId(6, variant: LinkedNodeKind.awaitExpression)
LinkedNode get awaitExpression_expression;
- @VariantId(15, variant: LinkedNodeKind.binaryExpression)
- int get binaryExpression_element;
-
@VariantId(24, variant: LinkedNodeKind.binaryExpression)
LinkedNodeType get binaryExpression_invokeType;
@@ -771,9 +757,6 @@
@VariantId(7, variant: LinkedNodeKind.binaryExpression)
LinkedNode get binaryExpression_rightOperand;
- @VariantId(38, variant: LinkedNodeKind.binaryExpression)
- LinkedNodeTypeSubstitution get binaryExpression_substitution;
-
@VariantId(2, variant: LinkedNodeKind.block)
List<LinkedNode> get block_statements;
@@ -864,11 +847,11 @@
@VariantId(3, variant: LinkedNodeKind.compilationUnit)
List<LinkedNode> get compilationUnit_directives;
- @VariantId(41, variant: LinkedNodeKind.compilationUnit)
+ @VariantId(19, variant: LinkedNodeKind.compilationUnit)
List<int> get compilationUnit_featureSet;
/// The language version information.
- @VariantId(40, variant: LinkedNodeKind.compilationUnit)
+ @VariantId(39, variant: LinkedNodeKind.compilationUnit)
LinkedLibraryLanguageVersion get compilationUnit_languageVersion;
@VariantId(6, variant: LinkedNodeKind.compilationUnit)
@@ -913,15 +896,9 @@
@VariantId(7, variant: LinkedNodeKind.constructorFieldInitializer)
LinkedNode get constructorFieldInitializer_fieldName;
- @VariantId(15, variant: LinkedNodeKind.constructorName)
- int get constructorName_element;
-
@VariantId(6, variant: LinkedNodeKind.constructorName)
LinkedNode get constructorName_name;
- @VariantId(38, variant: LinkedNodeKind.constructorName)
- LinkedNodeTypeSubstitution get constructorName_substitution;
-
@VariantId(7, variant: LinkedNodeKind.constructorName)
LinkedNode get constructorName_type;
@@ -969,6 +946,7 @@
LinkedNodeKind.asExpression,
LinkedNodeKind.awaitExpression,
LinkedNodeKind.binaryExpression,
+ LinkedNodeKind.booleanLiteral,
LinkedNodeKind.cascadeExpression,
LinkedNodeKind.conditionalExpression,
LinkedNodeKind.functionExpressionInvocation,
@@ -985,7 +963,6 @@
LinkedNodeKind.postfixExpression,
LinkedNodeKind.rethrowExpression,
LinkedNodeKind.setOrMapLiteral,
- LinkedNodeKind.simpleIdentifier,
LinkedNodeKind.superExpression,
LinkedNodeKind.symbolLiteral,
LinkedNodeKind.thisExpression,
@@ -1026,7 +1003,7 @@
@VariantId(8, variant: LinkedNodeKind.extensionOverride)
LinkedNode get extensionOverride_typeArguments;
- @VariantId(39, variant: LinkedNodeKind.extensionOverride)
+ @VariantId(38, variant: LinkedNodeKind.extensionOverride)
List<LinkedNodeType> get extensionOverride_typeArgumentTypes;
@VariantId(6, variant: LinkedNodeKind.fieldDeclaration)
@@ -1173,15 +1150,9 @@
@VariantId(1, variant: LinkedNodeKind.importDirective)
String get importDirective_prefix;
- @VariantId(15, variant: LinkedNodeKind.indexExpression)
- int get indexExpression_element;
-
@VariantId(6, variant: LinkedNodeKind.indexExpression)
LinkedNode get indexExpression_index;
- @VariantId(38, variant: LinkedNodeKind.indexExpression)
- LinkedNodeTypeSubstitution get indexExpression_substitution;
-
@VariantId(7, variant: LinkedNodeKind.indexExpression)
LinkedNode get indexExpression_target;
@@ -1323,7 +1294,25 @@
@VariantId(34, variant: LinkedNodeKind.mixinDeclaration)
List<String> get mixinDeclaration_superInvokedNames;
- @Id(37)
+ @VariantId(37, variantList: [
+ LinkedNodeKind.classDeclaration,
+ LinkedNodeKind.classTypeAlias,
+ LinkedNodeKind.constructorDeclaration,
+ LinkedNodeKind.enumDeclaration,
+ LinkedNodeKind.enumConstantDeclaration,
+ LinkedNodeKind.extensionDeclaration,
+ LinkedNodeKind.fieldFormalParameter,
+ LinkedNodeKind.functionDeclaration,
+ LinkedNodeKind.functionTypeAlias,
+ LinkedNodeKind.functionTypedFormalParameter,
+ LinkedNodeKind.genericTypeAlias,
+ LinkedNodeKind.methodDeclaration,
+ LinkedNodeKind.mixinDeclaration,
+ LinkedNodeKind.simpleFormalParameter,
+ LinkedNodeKind.simpleIdentifier,
+ LinkedNodeKind.typeParameter,
+ LinkedNodeKind.variableDeclaration,
+ ])
String get name;
@VariantId(6, variant: LinkedNodeKind.namedExpression)
@@ -1385,36 +1374,24 @@
@VariantId(7, variant: LinkedNodeKind.partOfDirective)
LinkedNode get partOfDirective_uri;
- @VariantId(15, variant: LinkedNodeKind.postfixExpression)
- int get postfixExpression_element;
-
@VariantId(6, variant: LinkedNodeKind.postfixExpression)
LinkedNode get postfixExpression_operand;
@VariantId(28, variant: LinkedNodeKind.postfixExpression)
UnlinkedTokenType get postfixExpression_operator;
- @VariantId(38, variant: LinkedNodeKind.postfixExpression)
- LinkedNodeTypeSubstitution get postfixExpression_substitution;
-
@VariantId(6, variant: LinkedNodeKind.prefixedIdentifier)
LinkedNode get prefixedIdentifier_identifier;
@VariantId(7, variant: LinkedNodeKind.prefixedIdentifier)
LinkedNode get prefixedIdentifier_prefix;
- @VariantId(15, variant: LinkedNodeKind.prefixExpression)
- int get prefixExpression_element;
-
@VariantId(6, variant: LinkedNodeKind.prefixExpression)
LinkedNode get prefixExpression_operand;
@VariantId(28, variant: LinkedNodeKind.prefixExpression)
UnlinkedTokenType get prefixExpression_operator;
- @VariantId(38, variant: LinkedNodeKind.prefixExpression)
- LinkedNodeTypeSubstitution get prefixExpression_substitution;
-
@VariantId(28, variant: LinkedNodeKind.propertyAccess)
UnlinkedTokenType get propertyAccess_operator;
@@ -1430,11 +1407,8 @@
@VariantId(7, variant: LinkedNodeKind.redirectingConstructorInvocation)
LinkedNode get redirectingConstructorInvocation_constructorName;
- @VariantId(15, variant: LinkedNodeKind.redirectingConstructorInvocation)
- int get redirectingConstructorInvocation_element;
-
- @VariantId(38, variant: LinkedNodeKind.redirectingConstructorInvocation)
- LinkedNodeTypeSubstitution get redirectingConstructorInvocation_substitution;
+ @Id(40)
+ LinkedNodeResolution get resolution;
@VariantId(6, variant: LinkedNodeKind.returnStatement)
LinkedNode get returnStatement_expression;
@@ -1445,12 +1419,6 @@
@VariantId(6, variant: LinkedNodeKind.simpleFormalParameter)
LinkedNode get simpleFormalParameter_type;
- @VariantId(15, variant: LinkedNodeKind.simpleIdentifier)
- int get simpleIdentifier_element;
-
- @VariantId(38, variant: LinkedNodeKind.simpleIdentifier)
- LinkedNodeTypeSubstitution get simpleIdentifier_substitution;
-
@VariantId(20, variant: LinkedNodeKind.simpleStringLiteral)
String get simpleStringLiteral_value;
@@ -1478,12 +1446,6 @@
@VariantId(7, variant: LinkedNodeKind.superConstructorInvocation)
LinkedNode get superConstructorInvocation_constructorName;
- @VariantId(15, variant: LinkedNodeKind.superConstructorInvocation)
- int get superConstructorInvocation_element;
-
- @VariantId(38, variant: LinkedNodeKind.superConstructorInvocation)
- LinkedNodeTypeSubstitution get superConstructorInvocation_substitution;
-
@VariantId(6, variant: LinkedNodeKind.switchCase)
LinkedNode get switchCase_expression;
@@ -1582,13 +1544,6 @@
])
String get uriBasedDirective_uriContent;
- @VariantId(19, variantList: [
- LinkedNodeKind.exportDirective,
- LinkedNodeKind.importDirective,
- LinkedNodeKind.partDirective,
- ])
- int get uriBasedDirective_uriElement;
-
@VariantId(6, variant: LinkedNodeKind.variableDeclaration)
LinkedNode get variableDeclaration_initializer;
@@ -1793,6 +1748,20 @@
List<int> get parent;
}
+/// Resolution information for the whole node, as the sequence of elements
+/// and types for sub-nodes, which the writer and reader visit in the same
+/// order.
+abstract class LinkedNodeResolution extends base.SummaryClass {
+ @Id(0)
+ List<int> get elements;
+
+ @Id(1)
+ List<LinkedNodeTypeSubstitution> get substitutions;
+
+ @Id(2)
+ List<LinkedNodeType> get types;
+}
+
/// Information about a Dart type.
abstract class LinkedNodeType extends base.SummaryClass {
@Id(0)
@@ -1802,10 +1771,10 @@
LinkedNodeType get functionReturnType;
/// The typedef this function type is created for.
- @Id(9)
+ @Id(8)
int get functionTypedef;
- @Id(10)
+ @Id(9)
List<LinkedNodeType> get functionTypedefTypeArguments;
@Id(2)
@@ -1821,13 +1790,10 @@
@Id(5)
LinkedNodeTypeKind get kind;
- @Id(8)
+ @Id(7)
EntityRefNullabilitySuffix get nullabilitySuffix;
@Id(6)
- int get typeParameterElement;
-
- @Id(7)
int get typeParameterId;
}
@@ -1849,6 +1815,7 @@
function,
interface,
never,
+ null_,
typeParameter,
void_
}
diff --git a/pkg/analyzer/lib/src/summary2/apply_resolution.dart b/pkg/analyzer/lib/src/summary2/apply_resolution.dart
new file mode 100644
index 0000000..e24a642
--- /dev/null
+++ b/pkg/analyzer/lib/src/summary2/apply_resolution.dart
@@ -0,0 +1,852 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/visitor.dart';
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/src/dart/ast/ast.dart';
+import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/member.dart';
+import 'package:analyzer/src/dart/element/type_algebra.dart';
+import 'package:analyzer/src/summary/idl.dart';
+import 'package:analyzer/src/summary2/ast_binary_flags.dart';
+import 'package:analyzer/src/summary2/lazy_ast.dart';
+import 'package:analyzer/src/summary2/linked_unit_context.dart';
+
+class ApplyResolutionVisitor extends ThrowingAstVisitor<void> {
+ final LinkedUnitContext _unitContext;
+ final LinkedNodeResolution _resolution;
+
+ int _elementPtr = 0;
+ int _typePtr = 0;
+
+ ApplyResolutionVisitor(this._unitContext, this._resolution);
+
+ void addParentTypeParameters(AstNode node) {
+ var enclosing = node.parent;
+ if (enclosing is ClassOrMixinDeclaration) {
+ var typeParameterList = enclosing.typeParameters;
+ if (typeParameterList == null) return;
+
+ for (var typeParameter in typeParameterList.typeParameters) {
+ var element = typeParameter.declaredElement;
+ _unitContext.typeParameterStack.add(element);
+ }
+ } else if (enclosing is ExtensionDeclaration) {
+ // TODO
+ var typeParameterList = enclosing.typeParameters;
+ if (typeParameterList == null) return;
+
+ for (var typeParameter in typeParameterList.typeParameters) {
+ var element = typeParameter.declaredElement;
+ _unitContext.typeParameterStack.add(element);
+ }
+ } else if (enclosing is VariableDeclarationList) {
+ var enclosing2 = enclosing.parent;
+ if (enclosing2 is FieldDeclaration) {
+ return addParentTypeParameters(enclosing2);
+ } else if (enclosing2 is TopLevelVariableDeclaration) {
+ return;
+ } else {
+ throw UnimplementedError('${enclosing2.runtimeType}');
+ }
+ } else {
+ throw UnimplementedError('${enclosing.runtimeType}');
+ }
+ }
+
+ @override
+ void visitAdjacentStrings(AdjacentStrings node) {
+ node.strings.accept(this);
+ // TODO(scheglov) type?
+ }
+
+ @override
+ void visitAnnotation(Annotation node) {
+ node.name.accept(this);
+ node.constructorName?.accept(this);
+ node.arguments?.accept(this);
+
+ node.element = _nextElement();
+ }
+
+ @override
+ void visitArgumentList(ArgumentList node) {
+ node.arguments.accept(this);
+ }
+
+ @override
+ void visitAsExpression(AsExpression node) {
+ node.expression.accept(this);
+ node.type.accept(this);
+ }
+
+ @override
+ void visitAssertInitializer(AssertInitializer node) {
+ node.condition.accept(this);
+ node.message?.accept(this);
+ }
+
+ @override
+ void visitAssignmentExpression(AssignmentExpression node) {
+ node.leftHandSide.accept(this);
+ node.rightHandSide.accept(this);
+ _expression(node);
+ node.staticElement = _nextElement();
+ }
+
+ @override
+ void visitBinaryExpression(BinaryExpression node) {
+ node.leftOperand.accept(this);
+ node.rightOperand.accept(this);
+
+ node.staticType = _nextType();
+ node.staticElement = _nextElement();
+ }
+
+ @override
+ void visitBooleanLiteral(BooleanLiteral node) {
+ node.staticType = _nextType();
+ }
+
+ @override
+ void visitCascadeExpression(CascadeExpression node) {
+ node.target.accept(this);
+ node.cascadeSections.accept(this);
+ _expression(node);
+ }
+
+ @override
+ visitClassDeclaration(ClassDeclaration node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ node.typeParameters?.accept(this);
+ node.extendsClause?.accept(this);
+ node.nativeClause?.accept(this);
+ node.withClause?.accept(this);
+ node.implementsClause?.accept(this);
+ _namedCompilationUnitMember(node);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitClassTypeAlias(ClassTypeAlias node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ node.typeParameters?.accept(this);
+ node.superclass?.accept(this);
+ node.withClause?.accept(this);
+ node.implementsClause?.accept(this);
+ node.metadata?.accept(this);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitConditionalExpression(ConditionalExpression node) {
+ node.condition.accept(this);
+ node.thenExpression.accept(this);
+ node.elseExpression.accept(this);
+ node.staticType = _nextType();
+ }
+
+ @override
+ void visitConfiguration(Configuration node) {
+ node.name?.accept(this);
+ node.value?.accept(this);
+ node.uri?.accept(this);
+ }
+
+ @override
+ void visitConstructorDeclaration(ConstructorDeclaration node) {
+ node.returnType?.accept(this);
+ node.parameters?.accept(this);
+ node.initializers?.accept(this);
+ node.redirectedConstructor?.accept(this);
+ node.metadata?.accept(this);
+ }
+
+ @override
+ void visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
+ node.fieldName.accept(this);
+ node.expression.accept(this);
+ }
+
+ @override
+ void visitConstructorName(ConstructorName node) {
+ node.type.accept(this);
+ node.name?.accept(this);
+
+ node.staticElement = _nextElement();
+ }
+
+ @override
+ void visitDeclaredIdentifier(DeclaredIdentifier node) {
+ node.type?.accept(this);
+ node.identifier.accept(this);
+ _declaration(node);
+ }
+
+ @override
+ visitDefaultFormalParameter(DefaultFormalParameter node) {
+ node.parameter.accept(this);
+ node.defaultValue?.accept(this);
+ }
+
+ @override
+ void visitDottedName(DottedName node) {
+ node.components.accept(this);
+ }
+
+ @override
+ void visitDoubleLiteral(DoubleLiteral node) {
+ // TODO(scheglov) type?
+ }
+
+ @override
+ void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
+ node.metadata?.accept(this);
+ }
+
+ @override
+ void visitEnumDeclaration(EnumDeclaration node) {
+ node.constants.accept(this);
+ node.metadata?.accept(this);
+ }
+
+ @override
+ void visitExportDirective(ExportDirective node) {
+ _namespaceDirective(node);
+ }
+
+ @override
+ void visitExpressionFunctionBody(ExpressionFunctionBody node) {
+ node.expression.accept(this);
+ }
+
+ @override
+ visitExtendsClause(ExtendsClause node) {
+ node.superclass.accept(this);
+ }
+
+ @override
+ void visitExtensionDeclaration(ExtensionDeclaration node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ node.typeParameters?.accept(this);
+ node.extendedType?.accept(this);
+ node.metadata?.accept(this);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitExtensionOverride(ExtensionOverride node) {
+ node.extensionName.accept(this);
+ node.typeArguments?.accept(this);
+ node.argumentList.accept(this);
+ (node as ExtensionOverrideImpl).extendedType = _nextType();
+ // TODO(scheglov) typeArgumentTypes?
+ }
+
+ @override
+ void visitFieldDeclaration(FieldDeclaration node) {
+ node.fields.accept(this);
+ node.metadata?.accept(this);
+ }
+
+ @override
+ void visitFieldFormalParameter(FieldFormalParameter node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ node.typeParameters?.accept(this);
+ node.type?.accept(this);
+ node.parameters?.accept(this);
+
+ _normalFormalParameter(node);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
+ node.loopVariable.accept(this);
+ _forEachParts(node);
+ }
+
+ @override
+ void visitForElement(ForElement node) {
+ node.body.accept(this);
+ node.forLoopParts.accept(this);
+ }
+
+ @override
+ visitFormalParameterList(FormalParameterList node) {
+ node.parameters.accept(this);
+ }
+
+ @override
+ void visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
+ node.variables.accept(this);
+ _forParts(node);
+ }
+
+ @override
+ void visitFunctionDeclaration(FunctionDeclaration node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ var node2 = node.functionExpression;
+ node2.typeParameters?.accept(this);
+ node2.parameters?.accept(this);
+ node2.body?.accept(this);
+
+ node.returnType?.accept(this);
+ node.metadata?.accept(this);
+ _setActualReturnType(node);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitFunctionExpression(FunctionExpression node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ node.typeParameters?.accept(this);
+ node.parameters?.accept(this);
+ node.body?.accept(this);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
+ node.function.accept(this);
+ _invocationExpression(node);
+ }
+
+ @override
+ void visitFunctionTypeAlias(FunctionTypeAlias node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ node.typeParameters?.accept(this);
+ node.returnType?.accept(this);
+ node.parameters?.accept(this);
+ node.metadata?.accept(this);
+ _setActualReturnType(node);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ node.typeParameters?.accept(this);
+ node.returnType?.accept(this);
+ node.parameters?.accept(this);
+ _normalFormalParameter(node);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitGenericFunctionType(GenericFunctionType node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ node.typeParameters?.accept(this);
+ node.returnType?.accept(this);
+ node.parameters?.accept(this);
+ (node as GenericFunctionTypeImpl).type = _nextType();
+ _setActualReturnType(node);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitGenericTypeAlias(GenericTypeAlias node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ node.typeParameters?.accept(this);
+ node.functionType?.accept(this);
+ node.metadata?.accept(this);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitHideCombinator(HideCombinator node) {}
+
+ @override
+ void visitIfElement(IfElement node) {
+ node.condition.accept(this);
+ node.thenElement.accept(this);
+ node.elseElement?.accept(this);
+ }
+
+ @override
+ visitImplementsClause(ImplementsClause node) {
+ node.interfaces.accept(this);
+ }
+
+ @override
+ void visitImportDirective(ImportDirective node) {
+ _namespaceDirective(node);
+ }
+
+ @override
+ void visitInstanceCreationExpression(InstanceCreationExpression node) {
+ node.constructorName.accept(this);
+ (node as InstanceCreationExpressionImpl).typeArguments?.accept(this);
+ node.argumentList.accept(this);
+ node.staticType = _nextType();
+ }
+
+ @override
+ void visitIntegerLiteral(IntegerLiteral node) {
+ node.staticType = _nextType();
+ }
+
+ @override
+ void visitInterpolationExpression(InterpolationExpression node) {
+ node.expression.accept(this);
+ }
+
+ @override
+ void visitInterpolationString(InterpolationString node) {
+ // TODO(scheglov) type?
+ }
+
+ @override
+ void visitIsExpression(IsExpression node) {
+ node.expression.accept(this);
+ node.type.accept(this);
+ }
+
+ @override
+ void visitLabel(Label node) {
+ node.label.accept(this);
+ }
+
+ @override
+ void visitLibraryDirective(LibraryDirective node) {
+ node.name.accept(this);
+ _directive(node);
+ }
+
+ @override
+ void visitLibraryIdentifier(LibraryIdentifier node) {
+ node.components.accept(this);
+ }
+
+ @override
+ void visitListLiteral(ListLiteral node) {
+ node.elements.accept(this);
+ node.staticType = _nextType();
+ node.typeArguments?.accept(this);
+ }
+
+ @override
+ void visitMapLiteralEntry(MapLiteralEntry node) {
+ node.key.accept(this);
+ node.value.accept(this);
+ }
+
+ @override
+ visitMethodDeclaration(MethodDeclaration node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ node.typeParameters?.accept(this);
+ node.returnType?.accept(this);
+ node.parameters?.accept(this);
+ node.metadata?.accept(this);
+ _setActualReturnType(node);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitMethodInvocation(MethodInvocation node) {
+ node.target?.accept(this);
+ node.methodName.accept(this);
+ _invocationExpression(node);
+ }
+
+ @override
+ void visitMixinDeclaration(MixinDeclaration node) {
+ var typeParameterStackHeight = _unitContext.typeParameterStack.length;
+
+ node.typeParameters?.accept(this);
+ node.onClause?.accept(this);
+ node.implementsClause?.accept(this);
+ node.metadata?.accept(this);
+
+ _unitContext.typeParameterStack.length = typeParameterStackHeight;
+ }
+
+ @override
+ void visitNamedExpression(NamedExpression node) {
+ node.name.accept(this);
+ node.expression.accept(this);
+ }
+
+ @override
+ void visitNativeClause(NativeClause node) {
+ node.name.accept(this);
+ }
+
+ @override
+ void visitNullLiteral(NullLiteral node) {
+ // TODO(scheglov) type?
+ }
+
+ @override
+ void visitOnClause(OnClause node) {
+ node.superclassConstraints.accept(this);
+ }
+
+ @override
+ void visitParenthesizedExpression(ParenthesizedExpression node) {
+ node.expression.accept(this);
+ node.staticType = _nextType();
+ }
+
+ @override
+ void visitPartDirective(PartDirective node) {
+ _uriBasedDirective(node);
+ }
+
+ @override
+ void visitPostfixExpression(PostfixExpression node) {
+ node.operand.accept(this);
+ node.staticElement = _nextElement();
+ _expression(node);
+ }
+
+ @override
+ void visitPrefixedIdentifier(PrefixedIdentifier node) {
+ node.prefix.accept(this);
+ node.identifier.accept(this);
+
+ node.staticType = _nextType();
+ }
+
+ @override
+ void visitPrefixExpression(PrefixExpression node) {
+ node.operand.accept(this);
+ node.staticElement = _nextElement();
+ _expression(node);
+ }
+
+ @override
+ void visitPropertyAccess(PropertyAccess node) {
+ node.target.accept(this);
+ node.propertyName.accept(this);
+
+ node.staticType = _nextType();
+ }
+
+ @override
+ void visitRedirectingConstructorInvocation(
+ RedirectingConstructorInvocation node) {
+ node.constructorName?.accept(this);
+ node.argumentList.accept(this);
+ node.staticElement = _nextElement();
+ }
+
+ @override
+ void visitSetOrMapLiteral(SetOrMapLiteral node) {
+ node.elements.accept(this);
+ node.staticType = _nextType();
+ node.typeArguments?.accept(this);
+ }
+
+ @override
+ void visitShowCombinator(ShowCombinator node) {}
+
+ @override
+ visitSimpleFormalParameter(SimpleFormalParameter node) {
+ node.type?.accept(this);
+ _normalFormalParameter(node);
+ }
+
+ @override
+ visitSimpleIdentifier(SimpleIdentifier node) {
+ var data = LazyAst.getData(node);
+
+ node.staticElement = _nextElement();
+
+ if (AstBinaryFlags.hasType(data.flags)) {
+ node.staticType = _nextType();
+ }
+ }
+
+ @override
+ void visitSimpleStringLiteral(SimpleStringLiteral node) {
+ // TODO(scheglov) type?
+ }
+
+ @override
+ void visitSpreadElement(SpreadElement node) {
+ node.expression.accept(this);
+ }
+
+ @override
+ void visitStringInterpolation(StringInterpolation node) {
+ node.elements.accept(this);
+ // TODO(scheglov) type?
+ }
+
+ @override
+ void visitSuperConstructorInvocation(SuperConstructorInvocation node) {
+ node.constructorName?.accept(this);
+ node.argumentList.accept(this);
+ node.staticElement = _nextElement();
+ }
+
+ @override
+ void visitSuperExpression(SuperExpression node) {
+ node.staticType = _nextType();
+ }
+
+ @override
+ void visitSymbolLiteral(SymbolLiteral node) {
+ node.staticType = _nextType();
+ }
+
+ @override
+ void visitThisExpression(ThisExpression node) {
+ node.staticType = _nextType();
+ }
+
+ @override
+ void visitThrowExpression(ThrowExpression node) {
+ node.expression.accept(this);
+ node.staticType = _nextType();
+ }
+
+ @override
+ void visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
+ node.variables.accept(this);
+ node.metadata?.accept(this);
+ }
+
+ @override
+ visitTypeArgumentList(TypeArgumentList node) {
+ node.arguments?.accept(this);
+ }
+
+ @override
+ visitTypeName(TypeName node) {
+ node.name.accept(this);
+ node.typeArguments?.accept(this);
+
+ node.type = _nextType();
+ // print('[node: $node][type: ${node.type}]');
+ }
+
+ @override
+ visitTypeParameterList(TypeParameterList node) {
+ for (var typeParameter in node.typeParameters) {
+ var name = typeParameter.name;
+ var element = TypeParameterElementImpl(name.name, name.offset);
+ name.staticElement = element;
+ _unitContext.typeParameterStack.add(element);
+ }
+
+ for (var typeParameter in node.typeParameters) {
+ var element = typeParameter.declaredElement as TypeParameterElementImpl;
+ element.variance = LazyAst.getVariance(typeParameter);
+
+ typeParameter.bound?.accept(this);
+ element.bound = typeParameter.bound?.type;
+
+ element.defaultType = _nextType();
+
+ typeParameter.metadata?.accept(this);
+ element.metadata = _buildAnnotations2(
+ _unitContext.reference.element,
+ typeParameter.metadata,
+ );
+
+ {
+ var lazy = LazyTypeParameter.get(typeParameter);
+ var informative = _unitContext.getInformativeData(lazy.data);
+ element.setCodeRange(
+ informative?.codeOffset ?? 0,
+ informative?.codeLength ?? 0,
+ );
+ }
+
+ // TODO(scheglov) We used to do this with the previous elements impl.
+ // We probably still do this.
+ // But the code below is bad and incomplete.
+ // And why does this affect MethodMember(s)?
+ {
+ var parent = node.parent;
+ if (parent is ClassDeclaration) {
+ (parent.declaredElement as ElementImpl).encloseElement(element);
+ } else if (parent is ClassTypeAlias) {
+ (parent.declaredElement as ElementImpl).encloseElement(element);
+ } else if (parent is ExtensionDeclaration) {
+ (parent.declaredElement as ElementImpl).encloseElement(element);
+ } else if (parent is FunctionExpression) {
+ var parent2 = parent.parent;
+ if (parent2 is FunctionDeclaration) {
+ (parent2.declaredElement as ElementImpl).encloseElement(element);
+ }
+ } else if (parent is FunctionTypeAlias) {
+ (parent.declaredElement as ElementImpl).encloseElement(element);
+ } else if (parent is GenericTypeAlias) {
+ (parent.declaredElement as ElementImpl).encloseElement(element);
+ } else if (parent is MethodDeclaration) {
+ (parent.declaredElement as ElementImpl).encloseElement(element);
+ } else if (parent is MixinDeclaration) {
+ (parent.declaredElement as ElementImpl).encloseElement(element);
+ }
+ }
+ }
+ }
+
+ @override
+ void visitVariableDeclaration(VariableDeclaration node) {
+ node.initializer?.accept(this);
+ _setActualType(node);
+ }
+
+ @override
+ void visitVariableDeclarationList(VariableDeclarationList node) {
+ node.type?.accept(this);
+ node.variables.accept(this);
+ node.metadata?.accept(this);
+ }
+
+ @override
+ void visitWithClause(WithClause node) {
+ node.mixinTypes.accept(this);
+ }
+
+ void _annotatedNode(AnnotatedNode node) {
+ node.metadata?.accept(this);
+ }
+
+ /// Return annotations for the given [nodeList] in the [unit].
+ List<ElementAnnotation> _buildAnnotations2(
+ CompilationUnitElementImpl unit, List<Annotation> nodeList) {
+ var length = nodeList.length;
+ if (length == 0) {
+ return const <ElementAnnotation>[];
+ }
+
+ var annotations = List<ElementAnnotation>(length);
+ for (int i = 0; i < length; i++) {
+ var ast = nodeList[i];
+ annotations[i] = ElementAnnotationImpl(unit)
+ ..annotationAst = ast
+ ..element = ast.element;
+ }
+ return annotations;
+ }
+
+ void _compilationUnitMember(CompilationUnitMember node) {
+ _declaration(node);
+ }
+
+ void _declaration(Declaration node) {
+ _annotatedNode(node);
+ }
+
+ void _directive(Directive node) {
+ node.metadata?.accept(this);
+ }
+
+ void _expression(Expression node) {
+ node.staticType = _nextType();
+ }
+
+ void _forEachParts(ForEachParts node) {
+ _forLoopParts(node);
+ node.iterable.accept(this);
+ }
+
+ void _forLoopParts(ForLoopParts node) {}
+
+ void _formalParameter(FormalParameter node) {
+ _setActualType(node);
+ }
+
+ void _forParts(ForParts node) {
+ _forLoopParts(node);
+ node.condition?.accept(this);
+ node.updaters.accept(this);
+ }
+
+ void _invocationExpression(InvocationExpression node) {
+ _expression(node);
+ node.argumentList.accept(this);
+ node.staticInvokeType = _nextType();
+ node.typeArguments?.accept(this);
+ }
+
+ void _namedCompilationUnitMember(NamedCompilationUnitMember node) {
+ _compilationUnitMember(node);
+ }
+
+ void _namespaceDirective(NamespaceDirective node) {
+ _uriBasedDirective(node);
+ node.combinators?.accept(this);
+ node.configurations?.accept(this);
+ }
+
+ Element _nextElement() {
+ var ptr = _elementPtr++;
+ var elementIndex = _resolution.elements[ptr];
+ var element = _unitContext.elementOfIndex(elementIndex);
+
+ var substitutionNode = _resolution.substitutions[ptr];
+ if (substitutionNode.typeArguments.isNotEmpty) {
+ var typeParameters =
+ (element.enclosingElement as TypeParameterizedElement).typeParameters;
+ var typeArguments = substitutionNode.typeArguments
+ .map(_unitContext.readType)
+ .toList(growable: false);
+ var substitution = Substitution.fromPairs(typeParameters, typeArguments);
+ element = ExecutableMember.from2(element, substitution);
+ }
+
+ if (substitutionNode.isLegacy) {
+ element = Member.legacy(element);
+ }
+
+ return element;
+ }
+
+ DartType _nextType() {
+ var id = _typePtr++;
+ var data = _resolution.types[id];
+ var type = _unitContext.readType(data);
+ return type;
+ }
+
+ void _normalFormalParameter(NormalFormalParameter node) {
+ _formalParameter(node);
+ node.metadata?.accept(this);
+ }
+
+ void _setActualReturnType(AstNode node) {
+ var type = _nextType();
+ LazyAst.setReturnType(node, type);
+ }
+
+ void _setActualType(AstNode node) {
+ var type = _nextType();
+ LazyAst.setType(node, type);
+ }
+
+ void _uriBasedDirective(UriBasedDirective node) {
+ _directive(node);
+ node.uri.accept(this);
+ }
+}
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart b/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart
index beac780..65d0148 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart
@@ -75,6 +75,11 @@
TypeName,
);
+ static final _hasType = _checkBit(
+ 1,
+ SimpleIdentifier,
+ );
+
static final _isAbstract = _checkBit(
1,
ClassDeclaration,
@@ -237,6 +242,7 @@
bool hasSeparatorColon = false,
bool hasSeparatorEquals = false,
bool hasThis = false,
+ bool hasType = false,
bool hasTypeArguments = false,
bool isAbstract = false,
bool isAsync = false,
@@ -298,6 +304,9 @@
if (hasThis) {
result |= _hasThis;
}
+ if (hasType) {
+ result |= _hasType;
+ }
if (hasTypeArguments) {
result |= _hasTypeArguments;
}
@@ -423,6 +432,10 @@
return (flags & _hasThis) != 0;
}
+ static bool hasType(int flags) {
+ return (flags & _hasType) != 0;
+ }
+
static bool hasTypeArguments(int flags) {
return (flags & _hasTypeArguments) != 0;
}
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
index 4df499f..3dda72c 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
@@ -5,13 +5,9 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/standard_ast_factory.dart';
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/experiments.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/ast/ast_factory.dart';
-import 'package:analyzer/src/dart/element/member.dart';
-import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/resolver/variance.dart';
import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
import 'package:analyzer/src/generated/testing/token_factory.dart';
@@ -37,25 +33,8 @@
/// Set to `true` when this reader is used to lazily read its unit.
bool isLazy = false;
- /// Whether we are reading a directive.
- ///
- /// [StringLiteral]s in directives are not actual expressions, and don't need
- /// a type. Moreover, when we are reading `dart:core` imports, the type
- /// provider is not ready yet, so we cannot access type `String`.
- bool _isReadingDirective = false;
-
AstBinaryReader(this._unitContext);
- InterfaceType get _boolType => _unitContext.typeProvider.boolType;
-
- InterfaceType get _doubleType => _unitContext.typeProvider.doubleType;
-
- InterfaceType get _intType => _unitContext.typeProvider.intType;
-
- DartType get _nullType => _unitContext.typeProvider.nullType;
-
- InterfaceType get _stringType => _unitContext.typeProvider.stringType;
-
AstNode readNode(LinkedNode data) {
timerAstBinaryReader.start();
try {
@@ -65,10 +44,6 @@
}
}
- DartType readType(LinkedNodeType data) {
- return _readType(data);
- }
-
Token _combinatorKeyword(LinkedNode data, Keyword keyword, Token def) {
var informativeData = _unitContext.getInformativeData(data);
if (informativeData != null) {
@@ -96,40 +71,10 @@
return def;
}
- Element _elementOfComponents(
- int rawElementIndex,
- LinkedNodeTypeSubstitution substitutionNode,
- ) {
- var element = _getElement(rawElementIndex);
- if (substitutionNode == null) return element;
-
- var typeParameters = substitutionNode.typeParameters
- .map<TypeParameterElement>(_getElement)
- .toList();
- var typeArguments = substitutionNode.typeArguments.map(_readType).toList();
- var substitution = Substitution.fromPairs(typeParameters, typeArguments);
-
- var member = ExecutableMember.from2(element, substitution);
- if (substitutionNode.isLegacy) {
- member = Member.legacy(member);
- }
-
- return member;
- }
-
- T _getElement<T extends Element>(int index) {
- var bundleContext = _unitContext.bundleContext;
- return bundleContext.elementOfIndex(index);
- }
-
AdjacentStrings _read_adjacentStrings(LinkedNode data) {
- var node = astFactory.adjacentStrings(
+ return astFactory.adjacentStrings(
_readNodeList(data.adjacentStrings_strings),
);
- if (!_isReadingDirective) {
- node.staticType = _stringType;
- }
- return node;
}
Annotation _read_annotation(LinkedNode data) {
@@ -139,10 +84,7 @@
_Tokens.PERIOD,
_readNode(data.annotation_constructorName),
_readNode(data.annotation_arguments),
- )..element = _elementOfComponents(
- data.annotation_element,
- data.annotation_substitution,
- );
+ );
}
ArgumentList _read_argumentList(LinkedNode data) {
@@ -158,7 +100,7 @@
_readNode(data.asExpression_expression),
_Tokens.AS,
_readNode(data.asExpression_type),
- )..staticType = _readType(data.expression_type);
+ );
}
AssertInitializer _read_assertInitializer(LinkedNode data) {
@@ -189,19 +131,14 @@
_readNode(data.assignmentExpression_leftHandSide),
_Tokens.fromType(data.assignmentExpression_operator),
_readNode(data.assignmentExpression_rightHandSide),
- )
- ..staticElement = _elementOfComponents(
- data.assignmentExpression_element,
- data.assignmentExpression_substitution,
- )
- ..staticType = _readType(data.expression_type);
+ );
}
AwaitExpression _read_awaitExpression(LinkedNode data) {
return astFactory.awaitExpression(
_Tokens.AWAIT,
_readNode(data.awaitExpression_expression),
- )..staticType = _readType(data.expression_type);
+ );
}
BinaryExpression _read_binaryExpression(LinkedNode data) {
@@ -209,12 +146,7 @@
_readNode(data.binaryExpression_leftOperand),
_Tokens.fromType(data.binaryExpression_operator),
_readNode(data.binaryExpression_rightOperand),
- )
- ..staticElement = _elementOfComponents(
- data.binaryExpression_element,
- data.binaryExpression_substitution,
- )
- ..staticType = _readType(data.expression_type);
+ );
}
Block _read_block(LinkedNode data) {
@@ -244,8 +176,7 @@
}
BooleanLiteral _read_booleanLiteral(LinkedNode data) {
- return AstTestFactory.booleanLiteral(data.booleanLiteral_value)
- ..staticType = _boolType;
+ return AstTestFactory.booleanLiteral(data.booleanLiteral_value);
}
BreakStatement _read_breakStatement(LinkedNode data) {
@@ -260,7 +191,7 @@
return astFactory.cascadeExpression(
_readNode(data.cascadeExpression_target),
_readNodeList(data.cascadeExpression_sections),
- )..staticType = _readType(data.expression_type);
+ );
}
CatchClause _read_catchClause(LinkedNode data) {
@@ -285,20 +216,20 @@
try {
var node = astFactory.classDeclaration(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
AstBinaryFlags.isAbstract(data.flags) ? _Tokens.ABSTRACT : null,
_Tokens.CLASS,
_declaredIdentifier(data),
_readNode(data.classOrMixinDeclaration_typeParameters),
- _readNodeLazy(data.classDeclaration_extendsClause),
- _readNodeLazy(data.classDeclaration_withClause),
- _readNodeLazy(data.classOrMixinDeclaration_implementsClause),
+ _readNode(data.classDeclaration_extendsClause),
+ _readNode(data.classDeclaration_withClause),
+ _readNode(data.classOrMixinDeclaration_implementsClause),
_Tokens.OPEN_CURLY_BRACKET,
_readNodeListLazy(data.classOrMixinDeclaration_members),
_Tokens.CLOSE_CURLY_BRACKET,
);
- node.nativeClause = _readNodeLazy(data.classDeclaration_nativeClause);
- LazyClassDeclaration.setData(node, data);
+ node.nativeClause = _readNode(data.classDeclaration_nativeClause);
+ LazyClassDeclaration.setData(_unitContext, data, node);
return node;
} finally {
timerAstBinaryReaderClass.stop();
@@ -310,18 +241,18 @@
try {
var node = astFactory.classTypeAlias(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_Tokens.CLASS,
_declaredIdentifier(data),
_readNode(data.classTypeAlias_typeParameters),
_Tokens.EQ,
AstBinaryFlags.isAbstract(data.flags) ? _Tokens.ABSTRACT : null,
- _readNodeLazy(data.classTypeAlias_superclass),
- _readNodeLazy(data.classTypeAlias_withClause),
- _readNodeLazy(data.classTypeAlias_implementsClause),
+ _readNode(data.classTypeAlias_superclass),
+ _readNode(data.classTypeAlias_withClause),
+ _readNode(data.classTypeAlias_implementsClause),
_Tokens.SEMICOLON,
);
- LazyClassTypeAlias.setData(node, data);
+ LazyClassTypeAlias.setData(_unitContext, data, node);
return node;
} finally {
timerAstBinaryReaderClass.stop();
@@ -380,7 +311,7 @@
_readNode(data.conditionalExpression_thenExpression),
_Tokens.COLON,
_readNode(data.conditionalExpression_elseExpression),
- )..staticType = _readType(data.expression_type);
+ );
}
Configuration _read_configuration(LinkedNode data) {
@@ -416,25 +347,25 @@
var node = astFactory.constructorDeclaration(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
AstBinaryFlags.isExternal(data.flags) ? _Tokens.EXTERNAL : null,
AstBinaryFlags.isConst(data.flags) ? _Tokens.CONST : null,
AstBinaryFlags.isFactory(data.flags) ? _Tokens.FACTORY : null,
returnType,
periodToken,
nameIdentifier,
- _readNodeLazy(data.constructorDeclaration_parameters),
+ _readNode(data.constructorDeclaration_parameters),
_Tokens.choose(
AstBinaryFlags.hasSeparatorColon(data.flags),
_Tokens.COLON,
AstBinaryFlags.hasSeparatorEquals(data.flags),
_Tokens.EQ,
),
- _readNodeListLazy(data.constructorDeclaration_initializers),
- _readNodeLazy(data.constructorDeclaration_redirectedConstructor),
- _readNodeLazy(data.constructorDeclaration_body),
+ _readNodeList(data.constructorDeclaration_initializers),
+ _readNode(data.constructorDeclaration_redirectedConstructor),
+ _readNode(data.constructorDeclaration_body),
);
- LazyConstructorDeclaration.setData(node, data);
+ LazyConstructorDeclaration.setData(_unitContext, data, node);
return node;
}
@@ -455,10 +386,7 @@
_readNode(data.constructorName_type),
data.constructorName_name != null ? _Tokens.PERIOD : null,
_readNode(data.constructorName_name),
- )..staticElement = _elementOfComponents(
- data.constructorName_element,
- data.constructorName_substitution,
- );
+ );
}
ContinueStatement _read_continueStatement(LinkedNode data) {
@@ -491,7 +419,7 @@
_readNode(data.defaultFormalParameter_parameter),
_toParameterKind(data.defaultFormalParameter_kind),
data.defaultFormalParameter_defaultValue != null ? _Tokens.COLON : null,
- _readNodeLazy(data.defaultFormalParameter_defaultValue),
+ _readNode(data.defaultFormalParameter_defaultValue),
);
LazyFormalParameter.setData(node, data);
return node;
@@ -516,8 +444,7 @@
}
DoubleLiteral _read_doubleLiteral(LinkedNode data) {
- return AstTestFactory.doubleLiteral(data.doubleLiteral_value)
- ..staticType = _doubleType;
+ return AstTestFactory.doubleLiteral(data.doubleLiteral_value);
}
EmptyFunctionBody _read_emptyFunctionBody(LinkedNode data) {
@@ -535,7 +462,7 @@
EnumConstantDeclaration _read_enumConstantDeclaration(LinkedNode data) {
var node = astFactory.enumConstantDeclaration(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_declaredIdentifier(data),
);
LazyEnumConstantDeclaration.setData(node, data);
@@ -545,34 +472,32 @@
EnumDeclaration _read_enumDeclaration(LinkedNode data) {
var node = astFactory.enumDeclaration(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_Tokens.ENUM,
_declaredIdentifier(data),
_Tokens.OPEN_CURLY_BRACKET,
- _readNodeListLazy(data.enumDeclaration_constants),
+ _readNodeList(data.enumDeclaration_constants),
_Tokens.CLOSE_CURLY_BRACKET,
);
- LazyEnumDeclaration.setData(node, data);
+ LazyEnumDeclaration.setData(_unitContext, data, node);
return node;
}
ExportDirective _read_exportDirective(LinkedNode data) {
timerAstBinaryReaderDirective.start();
- _isReadingDirective = true;
try {
var node = astFactory.exportDirective(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_directiveKeyword(data, Keyword.EXPORT, _Tokens.EXPORT),
_readNode(data.uriBasedDirective_uri),
_readNodeList(data.namespaceDirective_configurations),
_readNodeList(data.namespaceDirective_combinators),
_Tokens.SEMICOLON,
);
- LazyDirective.setData(node, data);
+ LazyDirective.setData(_unitContext, data, node);
return node;
} finally {
- _isReadingDirective = false;
timerAstBinaryReaderDirective.stop();
}
}
@@ -615,17 +540,17 @@
try {
var node = astFactory.extensionDeclaration(
comment: _readDocumentationComment(data),
- metadata: _readNodeListLazy(data.annotatedNode_metadata),
+ metadata: _readNodeList(data.annotatedNode_metadata),
extensionKeyword: _Tokens.EXTENSION,
name: data.name.isNotEmpty ? _declaredIdentifier(data) : null,
typeParameters: _readNode(data.extensionDeclaration_typeParameters),
onKeyword: _Tokens.ON,
- extendedType: _readNodeLazy(data.extensionDeclaration_extendedType),
+ extendedType: _readNode(data.extensionDeclaration_extendedType),
leftBracket: _Tokens.OPEN_CURLY_BRACKET,
- members: _readNodeListLazy(data.extensionDeclaration_members),
+ members: _readNodeList(data.extensionDeclaration_members),
rightBracket: _Tokens.CLOSE_CURLY_BRACKET,
);
- LazyExtensionDeclaration(node, data);
+ LazyExtensionDeclaration(_unitContext, data, node);
return node;
} finally {
timerAstBinaryReaderClass.stop();
@@ -644,9 +569,6 @@
),
typeArguments: _readNode(data.extensionOverride_typeArguments),
) as ExtensionOverrideImpl;
- node.extendedType = _readType(data.extensionOverride_extendedType);
- node.typeArgumentTypes =
- data.extensionOverride_typeArgumentTypes.map(_readType).toList();
return node;
}
@@ -660,12 +582,12 @@
externalKeyword:
AstBinaryFlags.isExternal(data.flags) ? _Tokens.EXTERNAL : null,
fieldList: _readNode(data.fieldDeclaration_fields),
- metadata: _readNodeListLazy(data.annotatedNode_metadata),
+ metadata: _readNodeList(data.annotatedNode_metadata),
semicolon: _Tokens.SEMICOLON,
staticKeyword:
AstBinaryFlags.isStatic(data.flags) ? _Tokens.STATIC : null,
);
- LazyFieldDeclaration.setData(node, data);
+ LazyFieldDeclaration.setData(_unitContext, data, node);
return node;
}
@@ -687,8 +609,8 @@
),
metadata: _readNodeList(data.normalFormalParameter_metadata),
comment: _readDocumentationComment(data),
- type: _readNodeLazy(data.fieldFormalParameter_type),
- parameters: _readNodeLazy(data.fieldFormalParameter_formalParameters),
+ type: _readNode(data.fieldFormalParameter_type),
+ parameters: _readNode(data.fieldFormalParameter_formalParameters),
question:
AstBinaryFlags.hasQuestion(data.flags) ? _Tokens.QUESTION : null,
requiredKeyword:
@@ -782,9 +704,9 @@
try {
var node = astFactory.functionDeclaration(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
AstBinaryFlags.isExternal(data.flags) ? _Tokens.EXTERNAL : null,
- _readNodeLazy(data.functionDeclaration_returnType),
+ _readNode(data.functionDeclaration_returnType),
_Tokens.choose(
AstBinaryFlags.isGet(data.flags),
_Tokens.GET,
@@ -792,9 +714,9 @@
_Tokens.SET,
),
_declaredIdentifier(data),
- _readNodeLazy(data.functionDeclaration_functionExpression),
+ _readNode(data.functionDeclaration_functionExpression),
);
- LazyFunctionDeclaration.setData(node, data);
+ LazyFunctionDeclaration.setData(_unitContext, data, node);
return node;
} finally {
timerAstBinaryReaderFunctionDeclaration.stop();
@@ -811,8 +733,8 @@
FunctionExpression _read_functionExpression(LinkedNode data) {
var node = astFactory.functionExpression(
_readNode(data.functionExpression_typeParameters),
- _readNodeLazy(data.functionExpression_formalParameters),
- _readNodeLazy(data.functionExpression_body),
+ _readNode(data.functionExpression_formalParameters),
+ _readNode(data.functionExpression_body),
);
LazyFunctionExpression.setData(node, data);
return node;
@@ -824,21 +746,21 @@
_readNode(data.functionExpressionInvocation_function),
_readNode(data.invocationExpression_typeArguments),
_readNode(data.invocationExpression_arguments),
- )..staticInvokeType = _readType(data.invocationExpression_invokeType);
+ );
}
FunctionTypeAlias _read_functionTypeAlias(LinkedNode data) {
var node = astFactory.functionTypeAlias(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_Tokens.TYPEDEF,
- _readNodeLazy(data.functionTypeAlias_returnType),
+ _readNode(data.functionTypeAlias_returnType),
_declaredIdentifier(data),
_readNode(data.functionTypeAlias_typeParameters),
- _readNodeLazy(data.functionTypeAlias_formalParameters),
+ _readNode(data.functionTypeAlias_formalParameters),
_Tokens.SEMICOLON,
);
- LazyFunctionTypeAlias.setData(node, data);
+ LazyFunctionTypeAlias.setData(_unitContext, data, node);
LazyFunctionTypeAlias.setHasSelfReference(
node,
data.typeAlias_hasSelfReference,
@@ -853,13 +775,13 @@
covariantKeyword:
AstBinaryFlags.isCovariant(data.flags) ? _Tokens.COVARIANT : null,
identifier: _declaredIdentifier(data),
- metadata: _readNodeListLazy(data.normalFormalParameter_metadata),
- parameters: _readNodeLazy(
+ metadata: _readNodeList(data.normalFormalParameter_metadata),
+ parameters: _readNode(
data.functionTypedFormalParameter_formalParameters,
),
requiredKeyword:
AstBinaryFlags.isRequired(data.flags) ? _Tokens.REQUIRED : null,
- returnType: _readNodeLazy(data.functionTypedFormalParameter_returnType),
+ returnType: _readNode(data.functionTypedFormalParameter_returnType),
typeParameters: _readNode(
data.functionTypedFormalParameter_typeParameters,
),
@@ -869,73 +791,32 @@
}
GenericFunctionType _read_genericFunctionType(LinkedNode data) {
- var id = data.genericFunctionType_id;
-
- // Read type parameters, without bounds, to avoid forward references.
- TypeParameterList typeParameterList;
- var typeParameterListData = data.genericFunctionType_typeParameters;
- if (typeParameterListData != null) {
- var dataList = typeParameterListData.typeParameterList_typeParameters;
- var typeParameters = List<TypeParameter>(dataList.length);
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- typeParameters[i] = astFactory.typeParameter(
- _readDocumentationComment(data),
- _readNodeList(data.annotatedNode_metadata),
- _declaredIdentifier(data),
- data.typeParameter_bound != null ? _Tokens.EXTENDS : null,
- null,
- );
- }
- typeParameterList = astFactory.typeParameterList(
- _Tokens.LT,
- typeParameters,
- _Tokens.GT,
- );
- }
-
- GenericFunctionTypeImpl node = astFactory.genericFunctionType(
- null,
+ return astFactory.genericFunctionType(
+ readNode(data.genericFunctionType_returnType),
_Tokens.FUNCTION,
- typeParameterList,
- null,
+ _readNode(data.genericFunctionType_typeParameters),
+ _readNode(data.genericFunctionType_formalParameters),
question:
AstBinaryFlags.hasQuestion(data.flags) ? _Tokens.QUESTION : null,
);
-
- // Create the node element, so now type parameter elements are available.
- LazyAst.setGenericFunctionTypeId(node, id);
- _unitContext.createGenericFunctionTypeElement(id, node);
-
- // Finish reading.
- if (typeParameterListData != null) {
- var dataList = typeParameterListData.typeParameterList_typeParameters;
- var typeParameters = typeParameterList.typeParameters;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- var node = typeParameters[i];
- node.bound = _readNode(data.typeParameter_bound);
- }
- }
- node.returnType = readNode(data.genericFunctionType_returnType);
- node.parameters = _readNode(data.genericFunctionType_formalParameters);
- node.type = _readType(data.genericFunctionType_type);
-
- return node;
}
GenericTypeAlias _read_genericTypeAlias(LinkedNode data) {
var node = astFactory.genericTypeAlias(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_Tokens.TYPEDEF,
_declaredIdentifier(data),
_readNode(data.genericTypeAlias_typeParameters),
_Tokens.EQ,
- _readNodeLazy(data.genericTypeAlias_functionType),
+ _readNode(data.genericTypeAlias_functionType),
_Tokens.SEMICOLON,
);
- LazyGenericTypeAlias.setData(node, data);
+ LazyGenericTypeAlias.setData(
+ _unitContext,
+ data,
+ node,
+ );
LazyGenericTypeAlias.setHasSelfReference(
node,
data.typeAlias_hasSelfReference,
@@ -987,7 +868,6 @@
ImportDirective _read_importDirective(LinkedNode data) {
timerAstBinaryReaderDirective.start();
- _isReadingDirective = true;
try {
SimpleIdentifier prefix;
if (data.importDirective_prefix.isNotEmpty) {
@@ -1002,7 +882,7 @@
var node = astFactory.importDirective(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_directiveKeyword(data, Keyword.IMPORT, _Tokens.IMPORT),
_readNode(data.uriBasedDirective_uri),
_readNodeList(data.namespaceDirective_configurations),
@@ -1012,10 +892,9 @@
_readNodeList(data.namespaceDirective_combinators),
_Tokens.SEMICOLON,
);
- LazyDirective.setData(node, data);
+ LazyDirective.setData(_unitContext, data, node);
return node;
} finally {
- _isReadingDirective = false;
timerAstBinaryReaderDirective.stop();
}
}
@@ -1028,14 +907,8 @@
leftBracket: _Tokens.OPEN_SQUARE_BRACKET,
index: _readNode(data.indexExpression_index),
rightBracket: _Tokens.CLOSE_SQUARE_BRACKET,
- )
- ..period =
- AstBinaryFlags.hasPeriod(data.flags) ? _Tokens.PERIOD_PERIOD : null
- ..staticElement = _elementOfComponents(
- data.indexExpression_element,
- data.indexExpression_substitution,
- )
- ..staticType = _readType(data.expression_type);
+ )..period =
+ AstBinaryFlags.hasPeriod(data.flags) ? _Tokens.PERIOD_PERIOD : null;
}
InstanceCreationExpression _read_instanceCreationExpression(LinkedNode data) {
@@ -1056,14 +929,11 @@
),
typeArguments: _readNode(data.instanceCreationExpression_typeArguments),
);
- node.staticType = _readType(data.expression_type);
return node;
}
IntegerLiteral _read_integerLiteral(LinkedNode data) {
- // TODO(scheglov) Remove `?? _intType` after internal SDK roll.
- return AstTestFactory.integer(data.integerLiteral_value)
- ..staticType = _readType(data.expression_type) ?? _intType;
+ return AstTestFactory.integer(data.integerLiteral_value);
}
InterpolationExpression _read_interpolationExpression(LinkedNode data) {
@@ -1091,7 +961,7 @@
_Tokens.IS,
AstBinaryFlags.hasNot(data.flags) ? _Tokens.BANG : null,
_readNode(data.isExpression_type),
- )..staticType = _boolType;
+ );
}
Label _read_label(LinkedNode data) {
@@ -1110,19 +980,17 @@
LibraryDirective _read_libraryDirective(LinkedNode data) {
timerAstBinaryReaderDirective.start();
- _isReadingDirective = true;
try {
var node = astFactory.libraryDirective(
_unitContext.createComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_Tokens.LIBRARY,
_readNode(data.libraryDirective_name),
_Tokens.SEMICOLON,
);
- LazyDirective.setData(node, data);
+ LazyDirective.setData(_unitContext, data, node);
return node;
} finally {
- _isReadingDirective = false;
timerAstBinaryReaderDirective.stop();
}
}
@@ -1146,7 +1014,7 @@
_Tokens.OPEN_SQUARE_BRACKET,
_readNodeList(data.listLiteral_elements),
_Tokens.CLOSE_SQUARE_BRACKET,
- )..staticType = _readType(data.expression_type);
+ );
}
MapLiteralEntry _read_mapLiteralEntry(LinkedNode data) {
@@ -1169,10 +1037,10 @@
var node = astFactory.methodDeclaration(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
AstBinaryFlags.isExternal(data.flags) ? _Tokens.EXTERNAL : null,
AstBinaryFlags.isStatic(data.flags) ? _Tokens.STATIC : null,
- _readNodeLazy(data.methodDeclaration_returnType),
+ _readNode(data.methodDeclaration_returnType),
_Tokens.choose(
AstBinaryFlags.isGet(data.flags),
_Tokens.GET,
@@ -1182,10 +1050,10 @@
AstBinaryFlags.isOperator(data.flags) ? _Tokens.OPERATOR : null,
_declaredIdentifier(data),
_readNode(data.methodDeclaration_typeParameters),
- _readNodeLazy(data.methodDeclaration_formalParameters),
+ _readNode(data.methodDeclaration_formalParameters),
body,
);
- LazyMethodDeclaration.setData(node, data);
+ LazyMethodDeclaration.setData(_unitContext, data, node);
LazyAst.setOperatorEqualParameterTypeFromObject(
node,
data.methodDeclaration_hasOperatorEqualWithParameterTypeFromObject,
@@ -1205,7 +1073,7 @@
_readNode(data.methodInvocation_methodName),
_readNode(data.invocationExpression_typeArguments),
_readNode(data.invocationExpression_arguments),
- )..staticInvokeType = _readType(data.invocationExpression_invokeType);
+ );
}
MixinDeclaration _read_mixinDeclaration(LinkedNode data) {
@@ -1213,17 +1081,17 @@
try {
var node = astFactory.mixinDeclaration(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_Tokens.MIXIN,
_declaredIdentifier(data),
_readNode(data.classOrMixinDeclaration_typeParameters),
- _readNodeLazy(data.mixinDeclaration_onClause),
- _readNodeLazy(data.classOrMixinDeclaration_implementsClause),
+ _readNode(data.mixinDeclaration_onClause),
+ _readNode(data.classOrMixinDeclaration_implementsClause),
_Tokens.OPEN_CURLY_BRACKET,
_readNodeListLazy(data.classOrMixinDeclaration_members),
_Tokens.CLOSE_CURLY_BRACKET,
);
- LazyMixinDeclaration(node, data);
+ LazyMixinDeclaration(_unitContext, data, node);
return node;
} finally {
timerAstBinaryReaderMixin.stop();
@@ -1256,7 +1124,7 @@
NullLiteral _read_nullLiteral(LinkedNode data) {
return astFactory.nullLiteral(
_Tokens.NULL,
- )..staticType = _nullType;
+ )..staticType;
}
OnClause _read_onClause(LinkedNode data) {
@@ -1271,45 +1139,41 @@
_Tokens.OPEN_PAREN,
_readNode(data.parenthesizedExpression_expression),
_Tokens.CLOSE_PAREN,
- )..staticType = _readType(data.expression_type);
+ );
}
PartDirective _read_partDirective(LinkedNode data) {
timerAstBinaryReaderDirective.start();
- _isReadingDirective = true;
try {
var node = astFactory.partDirective(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_Tokens.PART,
_readNode(data.uriBasedDirective_uri),
_Tokens.SEMICOLON,
);
- LazyDirective.setData(node, data);
+ LazyDirective.setData(_unitContext, data, node);
return node;
} finally {
- _isReadingDirective = false;
timerAstBinaryReaderDirective.stop();
}
}
PartOfDirective _read_partOfDirective(LinkedNode data) {
timerAstBinaryReaderDirective.start();
- _isReadingDirective = true;
try {
var node = astFactory.partOfDirective(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_Tokens.PART,
_Tokens.OF,
_readNode(data.partOfDirective_uri),
_readNode(data.partOfDirective_libraryName),
_Tokens.SEMICOLON,
);
- LazyDirective.setData(node, data);
+ LazyDirective.setData(_unitContext, data, node);
return node;
} finally {
- _isReadingDirective = false;
timerAstBinaryReaderDirective.stop();
}
}
@@ -1318,12 +1182,7 @@
return astFactory.postfixExpression(
_readNode(data.postfixExpression_operand),
_Tokens.fromType(data.postfixExpression_operator),
- )
- ..staticElement = _elementOfComponents(
- data.postfixExpression_element,
- data.postfixExpression_substitution,
- )
- ..staticType = _readType(data.expression_type);
+ );
}
PrefixedIdentifier _read_prefixedIdentifier(LinkedNode data) {
@@ -1331,19 +1190,14 @@
_readNode(data.prefixedIdentifier_prefix),
_Tokens.PERIOD,
_readNode(data.prefixedIdentifier_identifier),
- )..staticType = _readType(data.expression_type);
+ );
}
PrefixExpression _read_prefixExpression(LinkedNode data) {
return astFactory.prefixExpression(
_Tokens.fromType(data.prefixExpression_operator),
_readNode(data.prefixExpression_operand),
- )
- ..staticElement = _elementOfComponents(
- data.prefixExpression_element,
- data.prefixExpression_substitution,
- )
- ..staticType = _readType(data.expression_type);
+ );
}
PropertyAccess _read_propertyAccess(LinkedNode data) {
@@ -1351,7 +1205,7 @@
_readNode(data.propertyAccess_target),
_Tokens.fromType(data.propertyAccess_operator),
_readNode(data.propertyAccess_propertyName),
- )..staticType = _readType(data.expression_type);
+ );
}
RedirectingConstructorInvocation _read_redirectingConstructorInvocation(
@@ -1362,16 +1216,13 @@
hasThis ? _Tokens.PERIOD : null,
_readNode(data.redirectingConstructorInvocation_constructorName),
_readNode(data.redirectingConstructorInvocation_arguments),
- )..staticElement = _elementOfComponents(
- data.redirectingConstructorInvocation_element,
- data.redirectingConstructorInvocation_substitution,
- );
+ );
}
RethrowExpression _read_rethrowExpression(LinkedNode data) {
return astFactory.rethrowExpression(
_Tokens.RETHROW,
- )..staticType = _readType(data.expression_type);
+ );
}
ReturnStatement _read_returnStatement(LinkedNode data) {
@@ -1395,7 +1246,7 @@
)
: null,
rightBracket: _Tokens.CLOSE_CURLY_BRACKET,
- )..staticType = _readType(data.expression_type);
+ );
if (AstBinaryFlags.isMap(data.flags)) {
node.becomeMap();
} else if (AstBinaryFlags.isSet(data.flags)) {
@@ -1438,23 +1289,16 @@
}
SimpleIdentifier _read_simpleIdentifier(LinkedNode data) {
- return astFactory.simpleIdentifier(
+ var node = astFactory.simpleIdentifier(
TokenFactory.tokenFromString(data.name),
isDeclaration: AstBinaryFlags.isDeclaration(data.flags),
- )
- ..staticElement = _elementOfComponents(
- data.simpleIdentifier_element,
- data.simpleIdentifier_substitution,
- )
- ..staticType = _readType(data.expression_type);
+ );
+ LazyAst.setData(node, data);
+ return node;
}
SimpleStringLiteral _read_simpleStringLiteral(LinkedNode data) {
- var node = AstTestFactory.string2(data.simpleStringLiteral_value);
- if (!_isReadingDirective) {
- node.staticType = _stringType;
- }
- return node;
+ return AstTestFactory.string2(data.simpleStringLiteral_value);
}
SpreadElement _read_spreadElement(LinkedNode data) {
@@ -1465,13 +1309,9 @@
}
StringInterpolation _read_stringInterpolation(LinkedNode data) {
- var node = astFactory.stringInterpolation(
+ return astFactory.stringInterpolation(
_readNodeList(data.stringInterpolation_elements),
);
- if (!_isReadingDirective) {
- node.staticType = _stringType;
- }
- return node;
}
SuperConstructorInvocation _read_superConstructorInvocation(LinkedNode data) {
@@ -1480,16 +1320,13 @@
_Tokens.PERIOD,
_readNode(data.superConstructorInvocation_constructorName),
_readNode(data.superConstructorInvocation_arguments),
- )..staticElement = _elementOfComponents(
- data.superConstructorInvocation_element,
- data.superConstructorInvocation_substitution,
- );
+ );
}
SuperExpression _read_superExpression(LinkedNode data) {
return astFactory.superExpression(
_Tokens.SUPER,
- )..staticType = _readType(data.expression_type);
+ );
}
SwitchCase _read_switchCase(LinkedNode data) {
@@ -1527,20 +1364,20 @@
return astFactory.symbolLiteral(
_Tokens.HASH,
data.names.map((lexeme) => TokenFactory.tokenFromString(lexeme)).toList(),
- )..staticType = _readType(data.expression_type);
+ );
}
ThisExpression _read_thisExpression(LinkedNode data) {
return astFactory.thisExpression(
_Tokens.THIS,
- )..staticType = _readType(data.expression_type);
+ );
}
ThrowExpression _read_throwExpression(LinkedNode data) {
return astFactory.throwExpression(
_Tokens.THROW,
_readNode(data.throwExpression_expression),
- )..staticType = _readType(data.expression_type);
+ );
}
TopLevelVariableDeclaration _read_topLevelVariableDeclaration(
@@ -1549,13 +1386,13 @@
try {
var node = astFactory.topLevelVariableDeclaration(
_readDocumentationComment(data),
- _readNodeListLazy(data.annotatedNode_metadata),
+ _readNodeList(data.annotatedNode_metadata),
_readNode(data.topLevelVariableDeclaration_variableList),
_Tokens.SEMICOLON,
externalKeyword:
AstBinaryFlags.isExternal(data.flags) ? _Tokens.EXTERNAL : null,
);
- LazyTopLevelVariableDeclaration.setData(node, data);
+ LazyTopLevelVariableDeclaration.setData(_unitContext, data, node);
return node;
} finally {
timerAstBinaryReaderTopLevelVar.stop();
@@ -1592,7 +1429,7 @@
: null,
question:
AstBinaryFlags.hasQuestion(data.flags) ? _Tokens.QUESTION : null,
- )..type = _readType(data.typeName_type);
+ );
}
TypeParameter _read_typeParameter(LinkedNode data) {
@@ -1600,10 +1437,10 @@
// added to the interface.
var node = (astFactory as AstFactoryImpl).typeParameter2(
comment: _readDocumentationComment(data),
- metadata: _readNodeListLazy(data.annotatedNode_metadata),
+ metadata: _readNodeList(data.annotatedNode_metadata),
name: _declaredIdentifier(data),
extendsKeyword: _Tokens.EXTENDS,
- bound: _readNodeLazy(data.typeParameter_bound),
+ bound: _readNode(data.typeParameter_bound),
);
LazyAst.setVariance(node, _decodeVariance(data.typeParameter_variance));
LazyTypeParameter.setData(node, data);
@@ -1622,7 +1459,7 @@
var node = astFactory.variableDeclaration(
_declaredIdentifier(data),
_Tokens.EQ,
- _readNodeLazy(data.variableDeclaration_initializer),
+ _readNode(data.variableDeclaration_initializer),
);
LazyVariableDeclaration.setData(node, data);
LazyAst.setInheritsCovariant(node, data.inheritsCovariant);
@@ -1641,8 +1478,8 @@
_Tokens.VAR,
),
lateKeyword: AstBinaryFlags.isLate(data.flags) ? _Tokens.LATE : null,
- metadata: _readNodeListLazy(data.annotatedNode_metadata),
- type: _readNodeLazy(data.variableDeclarationList_type),
+ metadata: _readNodeList(data.annotatedNode_metadata),
+ type: _readNode(data.variableDeclarationList_type),
variables: _readNodeList(data.variableDeclarationList_variables),
);
LazyVariableDeclarationList.setData(node, data);
@@ -1936,11 +1773,6 @@
}
}
- AstNode _readNodeLazy(LinkedNode data) {
- if (isLazy) return null;
- return _readNode(data);
- }
-
List<T> _readNodeList<T>(List<LinkedNode> nodeList) {
var result = List<T>.filled(nodeList.length, null);
for (var i = 0; i < nodeList.length; ++i) {
@@ -1957,10 +1789,6 @@
return _readNodeList(nodeList);
}
- DartType _readType(LinkedNodeType data) {
- return _unitContext.readType(data);
- }
-
static Variance _decodeVariance(int encoding) {
if (encoding == 0) {
return null;
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
index 0035dd8..175ffc9 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
@@ -35,6 +35,8 @@
/// so initializers of final fields should be written.
bool _hasConstConstructor = false;
+ _ResolutionBuilder _resolutionBuilder;
+
AstBinaryWriter(this._linkingContext);
@override
@@ -46,7 +48,10 @@
@override
LinkedNodeBuilder visitAnnotation(Annotation node) {
- var elementComponents = _componentsOfElement(node.element);
+ var builder = LinkedNodeBuilder.annotation(
+ annotation_name: node.name?.accept(this),
+ annotation_constructorName: node.constructorName?.accept(this),
+ );
LinkedNodeBuilder storedArguments;
var arguments = node.arguments;
@@ -57,14 +62,11 @@
storedArguments = LinkedNodeBuilder.argumentList();
}
}
+ builder.annotation_arguments = storedArguments;
- return LinkedNodeBuilder.annotation(
- annotation_arguments: storedArguments,
- annotation_constructorName: node.constructorName?.accept(this),
- annotation_element: elementComponents.rawElement,
- annotation_substitution: elementComponents.substitution,
- annotation_name: node.name?.accept(this),
- );
+ _componentsOfElement(node.element);
+
+ return builder;
}
@override
@@ -102,40 +104,42 @@
@override
LinkedNodeBuilder visitAssignmentExpression(AssignmentExpression node) {
- var elementComponents = _componentsOfElement(node.staticElement);
- return LinkedNodeBuilder.assignmentExpression(
- assignmentExpression_element: elementComponents.rawElement,
- assignmentExpression_substitution: elementComponents.substitution,
+ var builder = LinkedNodeBuilder.assignmentExpression(
assignmentExpression_leftHandSide: node.leftHandSide.accept(this),
assignmentExpression_operator: TokensWriter.astToBinaryTokenType(
node.operator.type,
),
assignmentExpression_rightHandSide: node.rightHandSide.accept(this),
- expression_type: _writeType(node.staticType),
);
+ _storeExpression(builder, node);
+
+ _componentsOfElement(node.staticElement);
+
+ return builder;
}
@override
LinkedNodeBuilder visitAwaitExpression(AwaitExpression node) {
return LinkedNodeBuilder.awaitExpression(
awaitExpression_expression: node.expression.accept(this),
- expression_type: _writeType(node.staticType),
+ expression_type: _writeType('staticType', node.staticType),
);
}
@override
LinkedNodeBuilder visitBinaryExpression(BinaryExpression node) {
- var elementComponents = _componentsOfElement(node.staticElement);
- return LinkedNodeBuilder.binaryExpression(
- binaryExpression_element: elementComponents.rawElement,
- binaryExpression_substitution: elementComponents.substitution,
+ var builder = LinkedNodeBuilder.binaryExpression(
binaryExpression_leftOperand: node.leftOperand.accept(this),
binaryExpression_operator: TokensWriter.astToBinaryTokenType(
node.operator.type,
),
binaryExpression_rightOperand: node.rightOperand.accept(this),
- expression_type: _writeType(node.staticType),
+ expression_type: _writeType('staticType', node.staticType),
);
+
+ _componentsOfElement(node.staticElement);
+
+ return builder;
}
@override
@@ -167,6 +171,7 @@
LinkedNodeBuilder visitBooleanLiteral(BooleanLiteral node) {
return LinkedNodeBuilder.booleanLiteral(
booleanLiteral_value: node.value,
+ expression_type: _writeType('staticType', node.staticType),
);
}
@@ -204,6 +209,8 @@
try {
timerAstBinaryWriterClass.start();
+ _resolutionBuilder = _ResolutionBuilder();
+
_hasConstConstructor = false;
for (var member in node.members) {
if (member is ConstructorDeclaration && member.constKeyword != null) {
@@ -212,15 +219,29 @@
}
}
+ var typeParameters = _enterTypeParameters(node.typeParameters);
+
var builder = LinkedNodeBuilder.classDeclaration(
+ classOrMixinDeclaration_typeParameters:
+ node.typeParameters?.accept(this),
classDeclaration_extendsClause: node.extendsClause?.accept(this),
classDeclaration_nativeClause: node.nativeClause?.accept(this),
classDeclaration_withClause: node.withClause?.accept(this),
+ classOrMixinDeclaration_implementsClause:
+ node.implementsClause?.accept(this),
);
builder.flags = AstBinaryFlags.encode(
isAbstract: node.abstractKeyword != null,
);
+
_storeClassOrMixinDeclaration(builder, node);
+
+ _storeResolution(builder);
+
+ builder.classOrMixinDeclaration_members = _writeNodeList(node.members);
+
+ _linkingContext.typeParameterIndexer.exit(typeParameters);
+
return builder;
} finally {
timerAstBinaryWriterClass.stop();
@@ -231,17 +252,25 @@
LinkedNodeBuilder visitClassTypeAlias(ClassTypeAlias node) {
timerAstBinaryWriterClass.start();
try {
+ _resolutionBuilder = _ResolutionBuilder();
+
+ var typeParameters = _enterTypeParameters(node.typeParameters);
+
var builder = LinkedNodeBuilder.classTypeAlias(
- classTypeAlias_implementsClause: node.implementsClause?.accept(this),
- classTypeAlias_superclass: node.superclass.accept(this),
classTypeAlias_typeParameters: node.typeParameters?.accept(this),
+ classTypeAlias_superclass: node.superclass.accept(this),
classTypeAlias_withClause: node.withClause.accept(this),
+ classTypeAlias_implementsClause: node.implementsClause?.accept(this),
);
builder.flags = AstBinaryFlags.encode(
isAbstract: node.abstractKeyword != null,
);
_storeTypeAlias(builder, node);
_storeIsSimpleBounded(builder, node);
+
+ _storeResolution(builder);
+
+ _linkingContext.typeParameterIndexer.exit(typeParameters);
return builder;
} finally {
timerAstBinaryWriterClass.stop();
@@ -312,8 +341,8 @@
LinkedNodeBuilder visitConditionalExpression(ConditionalExpression node) {
var builder = LinkedNodeBuilder.conditionalExpression(
conditionalExpression_condition: node.condition.accept(this),
- conditionalExpression_elseExpression: node.elseExpression.accept(this),
conditionalExpression_thenExpression: node.thenExpression.accept(this),
+ conditionalExpression_elseExpression: node.elseExpression.accept(this),
);
_storeExpression(builder, node);
return builder;
@@ -334,12 +363,14 @@
@override
LinkedNodeBuilder visitConstructorDeclaration(ConstructorDeclaration node) {
+ _resolutionBuilder = _ResolutionBuilder();
+
var builder = LinkedNodeBuilder.constructorDeclaration(
- constructorDeclaration_initializers: _writeNodeList(node.initializers),
+ constructorDeclaration_returnType: node.returnType.accept(this),
constructorDeclaration_parameters: node.parameters.accept(this),
+ constructorDeclaration_initializers: _writeNodeList(node.initializers),
constructorDeclaration_redirectedConstructor:
node.redirectedConstructor?.accept(this),
- constructorDeclaration_returnType: node.returnType.accept(this),
informativeId: getInformativeId(node),
);
builder.flags = AstBinaryFlags.encode(
@@ -353,6 +384,9 @@
);
builder.name = node.name?.name;
_storeClassMember(builder, node);
+
+ _storeResolution(builder);
+
return builder;
}
@@ -360,8 +394,8 @@
LinkedNodeBuilder visitConstructorFieldInitializer(
ConstructorFieldInitializer node) {
var builder = LinkedNodeBuilder.constructorFieldInitializer(
- constructorFieldInitializer_expression: node.expression.accept(this),
constructorFieldInitializer_fieldName: node.fieldName.accept(this),
+ constructorFieldInitializer_expression: node.expression.accept(this),
);
builder.flags = AstBinaryFlags.encode(
hasThis: node.thisKeyword != null,
@@ -372,13 +406,14 @@
@override
LinkedNodeBuilder visitConstructorName(ConstructorName node) {
- var elementComponents = _componentsOfElement(node.staticElement);
- return LinkedNodeBuilder.constructorName(
- constructorName_element: elementComponents.rawElement,
- constructorName_substitution: elementComponents.substitution,
- constructorName_name: node.name?.accept(this),
+ var builder = LinkedNodeBuilder.constructorName(
constructorName_type: node.type.accept(this),
+ constructorName_name: node.name?.accept(this),
);
+
+ _componentsOfElement(node.staticElement);
+
+ return builder;
}
@override
@@ -393,8 +428,8 @@
@override
LinkedNodeBuilder visitDeclaredIdentifier(DeclaredIdentifier node) {
var builder = LinkedNodeBuilder.declaredIdentifier(
- declaredIdentifier_identifier: node.identifier.accept(this),
declaredIdentifier_type: node.type?.accept(this),
+ declaredIdentifier_identifier: node.identifier.accept(this),
);
builder.flags = AstBinaryFlags.encode(
isConst: node.keyword?.keyword == Keyword.CONST,
@@ -413,9 +448,9 @@
}
var builder = LinkedNodeBuilder.defaultFormalParameter(
+ defaultFormalParameter_parameter: node.parameter.accept(this),
defaultFormalParameter_defaultValue: defaultValue?.accept(this),
defaultFormalParameter_kind: _toParameterKind(node),
- defaultFormalParameter_parameter: node.parameter.accept(this),
informativeId: getInformativeId(node),
);
builder.flags = AstBinaryFlags.encode(
@@ -470,10 +505,12 @@
@override
LinkedNodeBuilder visitEnumDeclaration(EnumDeclaration node) {
+ _resolutionBuilder = _ResolutionBuilder();
var builder = LinkedNodeBuilder.enumDeclaration(
enumDeclaration_constants: _writeNodeList(node.constants),
);
_storeNamedCompilationUnitMember(builder, node);
+ _storeResolution(builder);
return builder;
}
@@ -481,8 +518,10 @@
LinkedNodeBuilder visitExportDirective(ExportDirective node) {
timerAstBinaryWriterDirective.start();
try {
+ _resolutionBuilder = _ResolutionBuilder();
var builder = LinkedNodeBuilder.exportDirective();
_storeNamespaceDirective(builder, node);
+ _storeResolution(builder);
return builder;
} finally {
timerAstBinaryWriterDirective.stop();
@@ -522,10 +561,12 @@
@override
LinkedNodeBuilder visitExtensionDeclaration(ExtensionDeclaration node) {
+ var typeParameters = _enterTypeParameters(node.typeParameters);
+ _resolutionBuilder = _ResolutionBuilder();
+
var builder = LinkedNodeBuilder.extensionDeclaration(
- extensionDeclaration_extendedType: node.extendedType.accept(this),
- extensionDeclaration_members: _writeNodeList(node.members),
extensionDeclaration_typeParameters: node.typeParameters?.accept(this),
+ extensionDeclaration_extendedType: node.extendedType.accept(this),
);
_storeCompilationUnitMember(builder, node);
@@ -533,26 +574,34 @@
builder.name = node.name?.name;
LazyExtensionDeclaration.get(node).put(builder);
+ _storeResolution(builder);
+
+ builder.extensionDeclaration_members = _writeNodeList(node.members);
+
+ _linkingContext.typeParameterIndexer.exit(typeParameters);
return builder;
}
@override
LinkedNodeBuilder visitExtensionOverride(ExtensionOverride node) {
var builder = LinkedNodeBuilder.extensionOverride(
+ extensionOverride_extensionName: node.extensionName.accept(this),
+ extensionOverride_typeArguments: node.typeArguments?.accept(this),
extensionOverride_arguments: _writeNodeList(
node.argumentList.arguments,
),
- extensionOverride_extensionName: node.extensionName.accept(this),
- extensionOverride_typeArguments: node.typeArguments?.accept(this),
- extensionOverride_typeArgumentTypes:
- node.typeArgumentTypes.map(_writeType).toList(),
- extensionOverride_extendedType: _writeType(node.extendedType),
+ extensionOverride_typeArgumentTypes: node.typeArgumentTypes
+ .map((t) => _writeType('typeArgumentType', t))
+ .toList(),
+ extensionOverride_extendedType:
+ _writeType('extendedType', node.extendedType),
);
return builder;
}
@override
LinkedNodeBuilder visitFieldDeclaration(FieldDeclaration node) {
+ _resolutionBuilder = _ResolutionBuilder();
var builder = LinkedNodeBuilder.fieldDeclaration(
fieldDeclaration_fields: node.fields.accept(this),
informativeId: getInformativeId(node),
@@ -564,19 +613,22 @@
isStatic: node.staticKeyword != null,
);
_storeClassMember(builder, node);
+ _storeResolution(builder);
return builder;
}
@override
LinkedNodeBuilder visitFieldFormalParameter(FieldFormalParameter node) {
+ var typeParameters = _enterTypeParameters(node.typeParameters);
var builder = LinkedNodeBuilder.fieldFormalParameter(
- fieldFormalParameter_formalParameters: node.parameters?.accept(this),
- fieldFormalParameter_type: node.type?.accept(this),
fieldFormalParameter_typeParameters: node.typeParameters?.accept(this),
+ fieldFormalParameter_type: node.type?.accept(this),
+ fieldFormalParameter_formalParameters: node.parameters?.accept(this),
);
_storeNormalFormalParameter(builder, node, node.keyword);
builder.flags |= AstBinaryFlags.encode(hasQuestion: node.question != null);
+ _linkingContext.typeParameterIndexer.exit(typeParameters);
return builder;
}
@@ -653,10 +705,14 @@
@override
LinkedNodeBuilder visitFunctionDeclaration(FunctionDeclaration node) {
+ _resolutionBuilder = _ResolutionBuilder();
+
+ var typeParameters =
+ _enterTypeParameters(node.functionExpression.typeParameters);
var builder = LinkedNodeBuilder.functionDeclaration(
- functionDeclaration_returnType: node.returnType?.accept(this),
functionDeclaration_functionExpression:
node.functionExpression?.accept(this),
+ functionDeclaration_returnType: node.returnType?.accept(this),
);
builder.flags = AstBinaryFlags.encode(
isExternal: node.externalKeyword != null,
@@ -665,6 +721,8 @@
);
_storeNamedCompilationUnitMember(builder, node);
_writeActualReturnType(builder, node);
+ _linkingContext.typeParameterIndexer.exit(typeParameters);
+ _storeResolution(builder);
return builder;
}
@@ -709,16 +767,24 @@
LinkedNodeBuilder visitFunctionTypeAlias(FunctionTypeAlias node) {
timerAstBinaryWriterTypedef.start();
try {
+ var typeParameters = _enterTypeParameters(node.typeParameters);
+
+ _resolutionBuilder = _ResolutionBuilder();
+
var builder = LinkedNodeBuilder.functionTypeAlias(
- functionTypeAlias_formalParameters: node.parameters.accept(this),
- functionTypeAlias_returnType: node.returnType?.accept(this),
functionTypeAlias_typeParameters: node.typeParameters?.accept(this),
+ functionTypeAlias_returnType: node.returnType?.accept(this),
+ functionTypeAlias_formalParameters: node.parameters.accept(this),
typeAlias_hasSelfReference:
LazyFunctionTypeAlias.getHasSelfReference(node),
);
_storeTypeAlias(builder, node);
_writeActualReturnType(builder, node);
_storeIsSimpleBounded(builder, node);
+
+ _storeResolution(builder);
+
+ _linkingContext.typeParameterIndexer.exit(typeParameters);
return builder;
} finally {
timerAstBinaryWriterTypedef.stop();
@@ -728,14 +794,16 @@
@override
LinkedNodeBuilder visitFunctionTypedFormalParameter(
FunctionTypedFormalParameter node) {
+ var typeParameters = _enterTypeParameters(node.typeParameters);
var builder = LinkedNodeBuilder.functionTypedFormalParameter(
- functionTypedFormalParameter_formalParameters:
- node.parameters.accept(this),
- functionTypedFormalParameter_returnType: node.returnType?.accept(this),
functionTypedFormalParameter_typeParameters:
node.typeParameters?.accept(this),
+ functionTypedFormalParameter_returnType: node.returnType?.accept(this),
+ functionTypedFormalParameter_formalParameters:
+ node.parameters.accept(this),
);
_storeNormalFormalParameter(builder, node, null);
+ _linkingContext.typeParameterIndexer.exit(typeParameters);
return builder;
}
@@ -744,18 +812,22 @@
var id = LazyAst.getGenericFunctionTypeId(node);
assert(id != null);
+ var typeParameters = _enterTypeParameters(node.typeParameters);
+
var builder = LinkedNodeBuilder.genericFunctionType(
genericFunctionType_id: id,
- genericFunctionType_returnType: node.returnType?.accept(this),
genericFunctionType_typeParameters: node.typeParameters?.accept(this),
+ genericFunctionType_returnType: node.returnType?.accept(this),
genericFunctionType_formalParameters: node.parameters.accept(this),
- genericFunctionType_type: _writeType(node.type),
+ genericFunctionType_type: _writeType('type', node.type),
);
builder.flags = AstBinaryFlags.encode(
hasQuestion: node.question != null,
);
_writeActualReturnType(builder, node);
+ _linkingContext.typeParameterIndexer.exit(typeParameters);
+
return builder;
}
@@ -763,6 +835,10 @@
LinkedNodeBuilder visitGenericTypeAlias(GenericTypeAlias node) {
timerAstBinaryWriterTypedef.start();
try {
+ var typeParameters = _enterTypeParameters(node.typeParameters);
+
+ _resolutionBuilder = _ResolutionBuilder();
+
var builder = LinkedNodeBuilder.genericTypeAlias(
genericTypeAlias_typeParameters: node.typeParameters?.accept(this),
genericTypeAlias_functionType: node.functionType?.accept(this),
@@ -771,6 +847,10 @@
);
_storeTypeAlias(builder, node);
_storeIsSimpleBounded(builder, node);
+
+ _storeResolution(builder);
+
+ _linkingContext.typeParameterIndexer.exit(typeParameters);
return builder;
} finally {
timerAstBinaryWriterTypedef.stop();
@@ -790,8 +870,8 @@
LinkedNodeBuilder visitIfElement(IfElement node) {
var builder = LinkedNodeBuilder.ifElement(
ifMixin_condition: node.condition.accept(this),
- ifElement_elseElement: node.elseElement?.accept(this),
ifElement_thenElement: node.thenElement.accept(this),
+ ifElement_elseElement: node.elseElement?.accept(this),
);
return builder;
}
@@ -817,6 +897,7 @@
LinkedNodeBuilder visitImportDirective(ImportDirective node) {
timerAstBinaryWriterDirective.start();
try {
+ _resolutionBuilder = _ResolutionBuilder();
var builder = LinkedNodeBuilder.importDirective(
importDirective_prefix: node.prefix?.name,
);
@@ -824,6 +905,7 @@
isDeferred: node.deferredKeyword != null,
);
_storeNamespaceDirective(builder, node);
+ _storeResolution(builder);
return builder;
} finally {
timerAstBinaryWriterDirective.stop();
@@ -832,14 +914,12 @@
@override
LinkedNodeBuilder visitIndexExpression(IndexExpression node) {
- var elementComponents = _componentsOfElement(node.staticElement);
var builder = LinkedNodeBuilder.indexExpression(
- indexExpression_element: elementComponents.rawElement,
- indexExpression_substitution: elementComponents.substitution,
indexExpression_index: node.index.accept(this),
indexExpression_target: node.target?.accept(this),
- expression_type: _writeType(node.staticType),
+ expression_type: _writeType('staticType', node.staticType),
);
+ _componentsOfElement(node.staticElement);
builder.flags = AstBinaryFlags.encode(
hasPeriod: node.period != null,
hasQuestion: node.question != null,
@@ -852,14 +932,14 @@
InstanceCreationExpression node) {
InstanceCreationExpressionImpl nodeImpl = node;
var builder = LinkedNodeBuilder.instanceCreationExpression(
- instanceCreationExpression_arguments: _writeNodeList(
- node.argumentList.arguments,
- ),
instanceCreationExpression_constructorName:
node.constructorName.accept(this),
instanceCreationExpression_typeArguments:
nodeImpl.typeArguments?.accept(this),
- expression_type: _writeType(node.staticType),
+ instanceCreationExpression_arguments: _writeNodeList(
+ node.argumentList.arguments,
+ ),
+ expression_type: _writeType('staticType', node.staticType),
);
builder.flags = AstBinaryFlags.encode(
isConst: node.keyword?.type == Keyword.CONST,
@@ -871,7 +951,7 @@
@override
LinkedNodeBuilder visitIntegerLiteral(IntegerLiteral node) {
return LinkedNodeBuilder.integerLiteral(
- expression_type: _writeType(node.staticType),
+ expression_type: _writeType('staticType', node.staticType),
integerLiteral_value: node.value,
);
}
@@ -924,11 +1004,13 @@
LinkedNodeBuilder visitLibraryDirective(LibraryDirective node) {
timerAstBinaryWriterDirective.start();
try {
+ _resolutionBuilder = _ResolutionBuilder();
var builder = LinkedNodeBuilder.libraryDirective(
informativeId: getInformativeId(node),
libraryDirective_name: node.name.accept(this),
);
_storeDirective(builder, node);
+ _storeResolution(builder);
return builder;
} finally {
timerAstBinaryWriterDirective.stop();
@@ -961,9 +1043,13 @@
@override
LinkedNodeBuilder visitMethodDeclaration(MethodDeclaration node) {
+ var typeParameters = _enterTypeParameters(node.typeParameters);
+
+ _resolutionBuilder = _ResolutionBuilder();
+
var builder = LinkedNodeBuilder.methodDeclaration(
- methodDeclaration_returnType: node.returnType?.accept(this),
methodDeclaration_typeParameters: node.typeParameters?.accept(this),
+ methodDeclaration_returnType: node.returnType?.accept(this),
methodDeclaration_formalParameters: node.parameters?.accept(this),
methodDeclaration_hasOperatorEqualWithParameterTypeFromObject:
LazyAst.hasOperatorEqualParameterTypeFromObject(node),
@@ -980,18 +1066,22 @@
isSet: node.isSetter,
isStatic: node.isStatic,
);
- builder.topLevelTypeInferenceError = LazyAst.getTypeInferenceError(node);
+
_storeClassMember(builder, node);
+
+ builder.topLevelTypeInferenceError = LazyAst.getTypeInferenceError(node);
_storeInformativeId(builder, node);
_writeActualReturnType(builder, node);
+ _linkingContext.typeParameterIndexer.exit(typeParameters);
+ _storeResolution(builder);
return builder;
}
@override
LinkedNodeBuilder visitMethodInvocation(MethodInvocation node) {
var builder = LinkedNodeBuilder.methodInvocation(
- methodInvocation_methodName: node.methodName?.accept(this),
methodInvocation_target: node.target?.accept(this),
+ methodInvocation_methodName: node.methodName?.accept(this),
);
builder.flags = AstBinaryFlags.encode(
hasPeriod: node.operator?.type == TokenType.PERIOD,
@@ -1005,10 +1095,26 @@
LinkedNodeBuilder visitMixinDeclaration(MixinDeclaration node) {
timerAstBinaryWriterMixin.start();
try {
+ var typeParameters = _enterTypeParameters(node.typeParameters);
+
+ _resolutionBuilder = _ResolutionBuilder();
+
var builder = LinkedNodeBuilder.mixinDeclaration(
+ classOrMixinDeclaration_typeParameters:
+ node.typeParameters?.accept(this),
mixinDeclaration_onClause: node.onClause?.accept(this),
+ classOrMixinDeclaration_implementsClause:
+ node.implementsClause?.accept(this),
);
+
_storeClassOrMixinDeclaration(builder, node);
+
+ _storeResolution(builder);
+
+ builder.classOrMixinDeclaration_members = _writeNodeList(node.members);
+
+ _linkingContext.typeParameterIndexer.exit(typeParameters);
+
LazyMixinDeclaration.get(node).put(builder);
return builder;
} finally {
@@ -1019,8 +1125,8 @@
@override
LinkedNodeBuilder visitNamedExpression(NamedExpression node) {
return LinkedNodeBuilder.namedExpression(
- namedExpression_expression: node.expression.accept(this),
namedExpression_name: node.name.accept(this),
+ namedExpression_expression: node.expression.accept(this),
);
}
@@ -1064,8 +1170,10 @@
LinkedNodeBuilder visitPartDirective(PartDirective node) {
timerAstBinaryWriterDirective.start();
try {
+ _resolutionBuilder = _ResolutionBuilder();
var builder = LinkedNodeBuilder.partDirective();
_storeUriBasedDirective(builder, node);
+ _storeResolution(builder);
return builder;
} finally {
timerAstBinaryWriterDirective.stop();
@@ -1076,11 +1184,13 @@
LinkedNodeBuilder visitPartOfDirective(PartOfDirective node) {
timerAstBinaryWriterDirective.start();
try {
+ _resolutionBuilder = _ResolutionBuilder();
var builder = LinkedNodeBuilder.partOfDirective(
partOfDirective_libraryName: node.libraryName?.accept(this),
partOfDirective_uri: node.uri?.accept(this),
);
_storeDirective(builder, node);
+ _storeResolution(builder);
return builder;
} finally {
timerAstBinaryWriterDirective.stop();
@@ -1089,49 +1199,53 @@
@override
LinkedNodeBuilder visitPostfixExpression(PostfixExpression node) {
- var elementComponents = _componentsOfElement(node.staticElement);
- return LinkedNodeBuilder.postfixExpression(
- expression_type: _writeType(node.staticType),
- postfixExpression_element: elementComponents.rawElement,
- postfixExpression_substitution: elementComponents.substitution,
+ var builder = LinkedNodeBuilder.postfixExpression(
postfixExpression_operand: node.operand.accept(this),
postfixExpression_operator: TokensWriter.astToBinaryTokenType(
node.operator.type,
),
);
+
+ _componentsOfElement(node.staticElement);
+
+ _storeExpression(builder, node);
+
+ return builder;
}
@override
LinkedNodeBuilder visitPrefixedIdentifier(PrefixedIdentifier node) {
return LinkedNodeBuilder.prefixedIdentifier(
- prefixedIdentifier_identifier: node.identifier.accept(this),
prefixedIdentifier_prefix: node.prefix.accept(this),
- expression_type: _writeType(node.staticType),
+ prefixedIdentifier_identifier: node.identifier.accept(this),
+ expression_type: _writeType('staticType', node.staticType),
);
}
@override
LinkedNodeBuilder visitPrefixExpression(PrefixExpression node) {
- var elementComponents = _componentsOfElement(node.staticElement);
- return LinkedNodeBuilder.prefixExpression(
- expression_type: _writeType(node.staticType),
- prefixExpression_element: elementComponents.rawElement,
- prefixExpression_substitution: elementComponents.substitution,
+ var builder = LinkedNodeBuilder.prefixExpression(
prefixExpression_operand: node.operand.accept(this),
prefixExpression_operator: TokensWriter.astToBinaryTokenType(
node.operator.type,
),
);
+
+ _componentsOfElement(node.staticElement);
+
+ _storeExpression(builder, node);
+
+ return builder;
}
@override
LinkedNodeBuilder visitPropertyAccess(PropertyAccess node) {
var builder = LinkedNodeBuilder.propertyAccess(
+ propertyAccess_target: node.target?.accept(this),
propertyAccess_operator: TokensWriter.astToBinaryTokenType(
node.operator.type,
),
propertyAccess_propertyName: node.propertyName.accept(this),
- propertyAccess_target: node.target?.accept(this),
);
_storeExpression(builder, node);
return builder;
@@ -1140,19 +1254,18 @@
@override
LinkedNodeBuilder visitRedirectingConstructorInvocation(
RedirectingConstructorInvocation node) {
- var elementComponents = _componentsOfElement(node.staticElement);
var builder = LinkedNodeBuilder.redirectingConstructorInvocation(
- redirectingConstructorInvocation_arguments:
- node.argumentList.accept(this),
redirectingConstructorInvocation_constructorName:
node.constructorName?.accept(this),
- redirectingConstructorInvocation_element: elementComponents.rawElement,
- redirectingConstructorInvocation_substitution:
- elementComponents.substitution,
+ redirectingConstructorInvocation_arguments:
+ node.argumentList.accept(this),
);
builder.flags = AstBinaryFlags.encode(
hasThis: node.thisKeyword != null,
);
+
+ _componentsOfElement(node.staticElement);
+
_storeConstructorInitializer(builder, node);
return builder;
}
@@ -1160,7 +1273,7 @@
@override
LinkedNodeBuilder visitRethrowExpression(RethrowExpression node) {
return LinkedNodeBuilder.rethrowExpression(
- expression_type: _writeType(node.staticType),
+ expression_type: _writeType('staticType', node.staticType),
);
}
@@ -1215,16 +1328,22 @@
}
}
- var elementComponents = _componentsOfElement(element);
var builder = LinkedNodeBuilder.simpleIdentifier(
- simpleIdentifier_element: elementComponents.rawElement,
- simpleIdentifier_substitution: elementComponents.substitution,
- expression_type: _writeType(node.staticType),
+ name: node.name,
);
+
+ var hasType = node.staticType != null;
builder.flags = AstBinaryFlags.encode(
isDeclaration: node is DeclaredSimpleIdentifier,
+ hasType: hasType,
);
- builder.name = node.name;
+
+ _componentsOfElement(element);
+
+ if (hasType) {
+ _writeType('staticType', node.staticType);
+ }
+
return builder;
}
@@ -1256,14 +1375,14 @@
@override
LinkedNodeBuilder visitSuperConstructorInvocation(
SuperConstructorInvocation node) {
- var elementComponents = _componentsOfElement(node.staticElement);
var builder = LinkedNodeBuilder.superConstructorInvocation(
- superConstructorInvocation_arguments: node.argumentList.accept(this),
superConstructorInvocation_constructorName:
node.constructorName?.accept(this),
- superConstructorInvocation_element: elementComponents.rawElement,
- superConstructorInvocation_substitution: elementComponents.substitution,
+ superConstructorInvocation_arguments: node.argumentList.accept(this),
);
+
+ _componentsOfElement(node.staticElement);
+
_storeConstructorInitializer(builder, node);
return builder;
}
@@ -1319,7 +1438,7 @@
LinkedNodeBuilder visitThrowExpression(ThrowExpression node) {
return LinkedNodeBuilder.throwExpression(
throwExpression_expression: node.expression.accept(this),
- expression_type: _writeType(node.staticType),
+ expression_type: _writeType('staticType', node.staticType),
);
}
@@ -1328,6 +1447,7 @@
TopLevelVariableDeclaration node) {
timerAstBinaryWriterTopVar.start();
try {
+ _resolutionBuilder = _ResolutionBuilder();
var builder = LinkedNodeBuilder.topLevelVariableDeclaration(
informativeId: getInformativeId(node),
topLevelVariableDeclaration_variableList: node.variables?.accept(this),
@@ -1337,6 +1457,8 @@
);
_storeCompilationUnitMember(builder, node);
+ _storeResolution(builder);
+
return builder;
} finally {
timerAstBinaryWriterTopVar.stop();
@@ -1361,23 +1483,26 @@
@override
LinkedNodeBuilder visitTypeName(TypeName node) {
- return LinkedNodeBuilder.typeName(
+ var builder = LinkedNodeBuilder.typeName(
typeName_name: node.name.accept(this),
- typeName_type: _writeType(node.type),
typeName_typeArguments: _writeNodeList(
node.typeArguments?.arguments,
),
+ typeName_type: _writeType('type', node.type),
)..flags = AstBinaryFlags.encode(
hasQuestion: node.question != null,
hasTypeArguments: node.typeArguments != null,
);
+
+ return builder;
}
@override
LinkedNodeBuilder visitTypeParameter(TypeParameter node) {
var builder = LinkedNodeBuilder.typeParameter(
typeParameter_bound: node.bound?.accept(this),
- typeParameter_defaultType: _writeType(LazyAst.getDefaultType(node)),
+ typeParameter_defaultType:
+ _writeType('defaultType', LazyAst.getDefaultType(node)),
typeParameter_variance: _encodeVariance(LazyAst.getVariance(node)),
informativeId: getInformativeId(node),
);
@@ -1489,24 +1614,54 @@
}
}
- _ElementComponents _componentsOfElement(Element element) {
+ void _componentsOfElement(Element element) {
if (element is ParameterMember) {
element = element.declaration;
}
if (element is Member) {
- var elementIndex = _indexOfElement(element.declaration);
- var substitution = element.substitution.map;
+ var declaration = element.declaration;
+ var elementIndex = _indexOfElement(declaration);
+
+ var typeArguments = _enclosingClassTypeArguments(
+ declaration,
+ element.substitution.map,
+ );
var substitutionBuilder = LinkedNodeTypeSubstitutionBuilder(
isLegacy: element.isLegacy,
- typeParameters: substitution.keys.map(_indexOfElement).toList(),
- typeArguments: substitution.values.map(_writeType).toList(),
+ typeArguments: typeArguments
+ .map((type) => _linkingContext.writeType(type))
+ .toList(),
);
- return _ElementComponents(elementIndex, substitutionBuilder);
+
+ if (_resolutionBuilder != null) {
+ _resolutionBuilder.elements.add(elementIndex);
+ _resolutionBuilder.substitutions.add(substitutionBuilder);
+ }
+ } else {
+ var elementIndex = _indexOfElement(element);
+
+ if (_resolutionBuilder != null) {
+ _resolutionBuilder.elements.add(elementIndex);
+ _resolutionBuilder.substitutions
+ .add(LinkedNodeTypeSubstitutionBuilder());
+ }
+ }
+ }
+
+ List<TypeParameterElement> _enterTypeParameters(TypeParameterList node) {
+ if (node == null) {
+ return const [];
}
- var elementIndex = _indexOfElement(element);
- return _ElementComponents(elementIndex, null);
+ var typeParameterElements = <TypeParameterElement>[];
+ for (var typeParameter in node.typeParameters) {
+ typeParameterElements.add(typeParameter.declaredElement);
+ }
+
+ _linkingContext.typeParameterIndexer.enter(typeParameterElements);
+
+ return typeParameterElements;
}
int _indexOfElement(Element element) {
@@ -1522,13 +1677,9 @@
}
void _storeClassOrMixinDeclaration(
- LinkedNodeBuilder builder, ClassOrMixinDeclaration node) {
- builder
- ..classOrMixinDeclaration_implementsClause =
- node.implementsClause?.accept(this)
- ..classOrMixinDeclaration_members = _writeNodeList(node.members)
- ..classOrMixinDeclaration_typeParameters =
- node.typeParameters?.accept(this);
+ LinkedNodeBuilder builder,
+ ClassOrMixinDeclaration node,
+ ) {
_storeNamedCompilationUnitMember(builder, node);
_storeIsSimpleBounded(builder, node);
}
@@ -1551,7 +1702,7 @@
}
void _storeExpression(LinkedNodeBuilder builder, Expression node) {
- builder.expression_type = _writeType(node.staticType);
+ builder.expression_type = _writeType('staticType', node.staticType);
}
void _storeForEachParts(LinkedNodeBuilder builder, ForEachParts node) {
@@ -1595,7 +1746,8 @@
_storeExpression(builder, node);
builder
..invocationExpression_arguments = node.argumentList.accept(this)
- ..invocationExpression_invokeType = _writeType(node.staticInvokeType)
+ ..invocationExpression_invokeType =
+ _writeType('invokeType', node.staticInvokeType)
..invocationExpression_typeArguments = node.typeArguments?.accept(this);
}
@@ -1637,6 +1789,15 @@
..normalFormalParameter_metadata = _writeNodeList(node.metadata);
}
+ void _storeResolution(LinkedNodeBuilder builder) {
+ builder.resolution = LinkedNodeResolutionBuilder(
+ elements: _resolutionBuilder.elements,
+ substitutions: _resolutionBuilder.substitutions,
+ types: _resolutionBuilder.types,
+ );
+ _resolutionBuilder = null;
+ }
+
void _storeStatement(LinkedNodeBuilder builder, Statement node) {}
void _storeSwitchMember(LinkedNodeBuilder builder, SwitchMember node) {
@@ -1668,20 +1829,19 @@
_storeDirective(builder, node);
builder
..uriBasedDirective_uri = node.uri.accept(this)
- ..uriBasedDirective_uriContent = node.uriContent
- ..uriBasedDirective_uriElement = _indexOfElement(node.uriElement);
+ ..uriBasedDirective_uriContent = node.uriContent;
}
void _writeActualReturnType(LinkedNodeBuilder builder, AstNode node) {
var type = LazyAst.getReturnType(node);
// TODO(scheglov) Check for `null` when writing resolved AST.
- builder.actualReturnType = _writeType(type);
+ builder.actualReturnType = _writeType('actualReturnType', type);
}
void _writeActualType(LinkedNodeBuilder builder, AstNode node) {
var type = LazyAst.getType(node);
// TODO(scheglov) Check for `null` when writing resolved AST.
- builder.actualType = _writeType(type);
+ builder.actualType = _writeType('actualType', type);
}
List<LinkedNodeBuilder> _writeNodeList(List<AstNode> nodeList) {
@@ -1700,8 +1860,38 @@
return result;
}
- LinkedNodeTypeBuilder _writeType(DartType type) {
- return _linkingContext.writeType(type);
+ LinkedNodeTypeBuilder _writeType(String name, DartType type) {
+ var typeBuilder = _linkingContext.writeType(type);
+
+ if (_resolutionBuilder != null) {
+ _resolutionBuilder.addType(name, typeBuilder);
+ return null;
+ }
+
+ return typeBuilder;
+ }
+
+ static List<DartType> _enclosingClassTypeArguments(
+ Element declaration,
+ Map<TypeParameterElement, DartType> substitution,
+ ) {
+ var enclosing = declaration.enclosingElement;
+ if (enclosing is TypeParameterizedElement) {
+ if (enclosing is! ClassElement && enclosing is! ExtensionElement) {
+ return const <DartType>[];
+ }
+
+ var typeParameters = enclosing.typeParameters;
+ if (typeParameters.isEmpty) {
+ return const <DartType>[];
+ }
+
+ return typeParameters
+ .map((typeParameter) => substitution[typeParameter])
+ .toList(growable: false);
+ }
+
+ return const <DartType>[];
}
static int _encodeVariance(Variance variance) {
@@ -1749,14 +1939,6 @@
}
}
-/// Components of a [Member] - the raw element, and the substitution.
-class _ElementComponents {
- final int rawElement;
- final LinkedNodeTypeSubstitutionBuilder substitution;
-
- _ElementComponents(this.rawElement, this.substitution);
-}
-
class _IsSerializableExpressionVisitor extends RecursiveAstVisitor<void> {
bool result = true;
@@ -1765,3 +1947,13 @@
result = false;
}
}
+
+class _ResolutionBuilder {
+ final List<int> elements = [];
+ final List<LinkedNodeTypeSubstitutionBuilder> substitutions = [];
+ final List<LinkedNodeTypeBuilder> types = [];
+
+ void addType(String name, LinkedNodeTypeBuilder type) {
+ types.add(type);
+ }
+}
diff --git a/pkg/analyzer/lib/src/summary2/default_types_builder.dart b/pkg/analyzer/lib/src/summary2/default_types_builder.dart
index 4a8d0c5..3eac814 100644
--- a/pkg/analyzer/lib/src/summary2/default_types_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/default_types_builder.dart
@@ -235,7 +235,7 @@
void recurseParameters(List<TypeParameterElement> parameters) {
for (TypeParameterElementImpl parameter in parameters) {
TypeParameter parameterNode = parameter.linkedNode;
- var bound = parameterNode.bound;
+ var bound = parameterNode?.bound;
if (bound != null) {
var tails = _findRawTypePathsToDeclaration(
parameterNode,
diff --git a/pkg/analyzer/lib/src/summary2/lazy_ast.dart b/pkg/analyzer/lib/src/summary2/lazy_ast.dart
index dea4fa9..25f5416 100644
--- a/pkg/analyzer/lib/src/summary2/lazy_ast.dart
+++ b/pkg/analyzer/lib/src/summary2/lazy_ast.dart
@@ -9,6 +9,7 @@
import 'package:analyzer/src/dart/resolver/variance.dart';
import 'package:analyzer/src/summary/format.dart';
import 'package:analyzer/src/summary/idl.dart';
+import 'package:analyzer/src/summary2/apply_resolution.dart';
import 'package:analyzer/src/summary2/ast_binary_flags.dart';
import 'package:analyzer/src/summary2/ast_binary_reader.dart';
import 'package:analyzer/src/summary2/linked_unit_context.dart';
@@ -30,10 +31,78 @@
static const _typeKey = 'lazyAst_type';
static const _varianceKey = 'lazyAst_variance';
+ static final Expando<LinkedNode> _dataExpando = Expando();
+
final LinkedNode data;
LazyAst(this.data);
+ static void applyResolution(AstNode node) {
+ if (node is ClassDeclaration) {
+ var lazy = LazyClassDeclaration.get(node);
+ lazy?.applyResolution();
+ } else if (node is ClassTypeAlias) {
+ var lazy = LazyClassTypeAlias.get(node);
+ lazy?.applyResolution();
+ } else if (node is CompilationUnit) {
+ // TODO(scheglov)
+ } else if (node is ConstructorDeclaration) {
+ var lazy = LazyConstructorDeclaration.get(node);
+ lazy?.applyResolution();
+ } else if (node is Directive) {
+ var lazy = LazyDirective.get(node);
+ lazy?.applyResolution();
+ } else if (node is EnumDeclaration) {
+ var lazy = LazyEnumDeclaration.get(node);
+ lazy?.applyResolution();
+ } else if (node is ExtensionDeclaration) {
+ var lazy = LazyExtensionDeclaration.get(node);
+ if (lazy?.data != null) {
+ lazy?.applyResolution();
+ }
+ } else if (node is FieldFormalParameter) {
+ // TODO(scheglov)
+ } else if (node is FunctionDeclaration) {
+ var lazy = LazyFunctionDeclaration.get(node);
+ lazy?.applyResolution();
+ } else if (node is FunctionTypeAlias) {
+ var lazy = LazyFunctionTypeAlias.get(node);
+ lazy?.applyResolution();
+ } else if (node is GenericFunctionType) {
+ // TODO(scheglov)
+ } else if (node is GenericTypeAlias) {
+ var lazy = LazyGenericTypeAlias.get(node);
+ lazy?.applyResolution();
+ } else if (node is ImportDirective) {
+ // TODO(scheglov)
+ } else if (node is MethodDeclaration) {
+ var lazy = LazyMethodDeclaration.get(node);
+ lazy?.applyResolution();
+ } else if (node is MixinDeclaration) {
+ var lazy = LazyMixinDeclaration.get(node);
+ if (lazy?.data != null) {
+ lazy?.applyResolution();
+ }
+ } else if (node is SimpleFormalParameter) {
+ // TODO(scheglov)
+ } else if (node is VariableDeclaration) {
+ var parent2 = node.parent.parent;
+ if (parent2 is FieldDeclaration) {
+ var lazy = LazyFieldDeclaration.get(parent2);
+ lazy?.applyResolution();
+ } else if (parent2 is TopLevelVariableDeclaration) {
+ var lazy = LazyTopLevelVariableDeclaration.get(parent2);
+ lazy?.applyResolution();
+ } else {
+ throw UnimplementedError('${parent2.runtimeType}');
+ }
+ }
+ }
+
+ static LinkedNode getData(AstNode node) {
+ return _dataExpando[node];
+ }
+
static DartType getDefaultType(TypeParameter node) {
return node.getProperty(_defaultTypeKey);
}
@@ -79,6 +148,10 @@
return node.getProperty(_isSimplyBoundedKey);
}
+ static void setData(AstNode node, LinkedNode data) {
+ _dataExpando[node] = data;
+ }
+
static void setDefaultType(TypeParameter node, DartType type) {
node.setProperty(_defaultTypeKey, type);
}
@@ -128,16 +201,29 @@
class LazyClassDeclaration {
static const _key = 'lazyAst';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final ClassDeclaration node;
bool _hasDocumentationComment = false;
- bool _hasExtendsClause = false;
- bool _hasImplementsClause = false;
bool _hasMembers = false;
- bool _hasMetadata = false;
- bool _hasWithClause = false;
+ bool _hasResolutionApplied = false;
- LazyClassDeclaration(this.data);
+ LazyClassDeclaration(this.unitContext, this.data, this.node);
+
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+ _hasResolutionApplied = true;
+
+ unitContext.pushTypeParameterStack();
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ node.accept(visitor);
+
+ unitContext.popTypeParameterStack();
+ }
static LazyClassDeclaration get(ClassDeclaration node) {
return node.getProperty(_key);
@@ -176,32 +262,6 @@
}
}
- static void readExtendsClause(
- AstBinaryReader reader,
- ClassDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasExtendsClause) {
- node.extendsClause = reader.readNode(
- lazy.data.classDeclaration_extendsClause,
- );
- lazy._hasExtendsClause = true;
- }
- }
-
- static void readImplementsClause(
- AstBinaryReader reader,
- ClassDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasImplementsClause) {
- node.implementsClause = reader.readNode(
- lazy.data.classOrMixinDeclaration_implementsClause,
- );
- lazy._hasImplementsClause = true;
- }
- }
-
static void readMembers(
AstBinaryReader reader,
ClassDeclaration node,
@@ -217,36 +277,12 @@
}
}
- static void readMetadata(
- AstBinaryReader reader,
+ static void setData(
+ LinkedUnitContext unitContext,
+ LinkedNode data,
ClassDeclaration node,
) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void readWithClause(
- AstBinaryReader reader,
- ClassDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasWithClause) {
- node.withClause = reader.readNode(
- lazy.data.classDeclaration_withClause,
- );
- lazy._hasWithClause = true;
- }
- }
-
- static void setData(ClassDeclaration node, LinkedNode data) {
- node.setProperty(_key, LazyClassDeclaration(data));
+ node.setProperty(_key, LazyClassDeclaration(unitContext, data, node));
LazyAst.setSimplyBounded(node, data.simplyBoundable_isSimplyBounded);
}
}
@@ -254,15 +290,28 @@
class LazyClassTypeAlias {
static const _key = 'lazyAst';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final ClassTypeAlias node;
bool _hasDocumentationComment = false;
- bool _hasImplementsClause = false;
- bool _hasMetadata = false;
- bool _hasSuperclass = false;
- bool _hasWithClause = false;
+ bool _hasResolutionApplied = false;
- LazyClassTypeAlias(this.data);
+ LazyClassTypeAlias(this.unitContext, this.data, this.node);
+
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+ _hasResolutionApplied = true;
+
+ unitContext.pushTypeParameterStack();
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ node.accept(visitor);
+
+ unitContext.popTypeParameterStack();
+ }
static LazyClassTypeAlias get(ClassTypeAlias node) {
return node.getProperty(_key);
@@ -301,62 +350,12 @@
}
}
- static void readImplementsClause(
- AstBinaryReader reader,
+ static void setData(
+ LinkedUnitContext unitContext,
+ LinkedNode data,
ClassTypeAlias node,
) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasImplementsClause) {
- node.implementsClause = reader.readNode(
- lazy.data.classTypeAlias_implementsClause,
- );
- lazy._hasImplementsClause = true;
- }
- }
-
- static void readMetadata(
- AstBinaryReader reader,
- ClassTypeAlias node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void readSuperclass(
- AstBinaryReader reader,
- ClassTypeAlias node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasSuperclass) {
- node.superclass = reader.readNode(
- lazy.data.classTypeAlias_superclass,
- );
- lazy._hasSuperclass = true;
- }
- }
-
- static void readWithClause(
- AstBinaryReader reader,
- ClassTypeAlias node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasWithClause) {
- node.withClause = reader.readNode(
- lazy.data.classTypeAlias_withClause,
- );
- lazy._hasWithClause = true;
- }
- }
-
- static void setData(ClassTypeAlias node, LinkedNode data) {
- node.setProperty(_key, LazyClassTypeAlias(data));
+ node.setProperty(_key, LazyClassTypeAlias(unitContext, data, node));
LazyAst.setSimplyBounded(node, data.simplyBoundable_isSimplyBounded);
}
}
@@ -419,16 +418,29 @@
class LazyConstructorDeclaration {
static const _key = 'lazyAst';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final ConstructorDeclaration node;
- bool _hasBody = false;
bool _hasDocumentationComment = false;
- bool _hasFormalParameters = false;
- bool _hasInitializers = false;
- bool _hasMetadata = false;
- bool _hasRedirectedConstructor = false;
+ bool _hasResolutionApplied = false;
- LazyConstructorDeclaration(this.data);
+ LazyConstructorDeclaration(this.unitContext, this.data, this.node);
+
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+ _hasResolutionApplied = true;
+
+ unitContext.pushTypeParameterStack();
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ visitor.addParentTypeParameters(node);
+ node.accept(visitor);
+
+ unitContext.popTypeParameterStack();
+ }
static LazyConstructorDeclaration get(ConstructorDeclaration node) {
return node.getProperty(_key);
@@ -456,19 +468,6 @@
return node.offset;
}
- static void readBody(
- AstBinaryReader reader,
- ConstructorDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasBody) {
- node.body = reader.readNode(
- lazy.data.constructorDeclaration_body,
- );
- lazy._hasBody = true;
- }
- }
-
static void readDocumentationComment(
LinkedUnitContext context,
ConstructorDeclaration node,
@@ -480,64 +479,12 @@
}
}
- static void readFormalParameters(
- AstBinaryReader reader,
+ static void setData(
+ LinkedUnitContext unitContext,
+ LinkedNode data,
ConstructorDeclaration node,
) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasFormalParameters) {
- node.parameters = reader.readNode(
- lazy.data.constructorDeclaration_parameters,
- );
- lazy._hasFormalParameters = true;
- }
- }
-
- static void readInitializers(
- AstBinaryReader reader,
- ConstructorDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasInitializers) {
- var dataList = lazy.data.constructorDeclaration_initializers;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.initializers[i] = reader.readNode(data);
- }
- lazy._hasInitializers = true;
- }
- }
-
- static void readMetadata(
- AstBinaryReader reader,
- ConstructorDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void readRedirectedConstructor(
- AstBinaryReader reader,
- ConstructorDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasRedirectedConstructor) {
- node.redirectedConstructor = reader.readNode(
- lazy.data.constructorDeclaration_redirectedConstructor,
- );
- lazy._hasRedirectedConstructor = true;
- }
- }
-
- static void setData(ConstructorDeclaration node, LinkedNode data) {
- node.setProperty(_key, LazyConstructorDeclaration(data));
+ node.setProperty(_key, LazyConstructorDeclaration(unitContext, data, node));
}
}
@@ -545,11 +492,24 @@
static const _key = 'lazyAst';
static const _uriKey = 'lazyAst_selectedUri';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final Directive node;
- bool _hasMetadata = false;
+ bool _hasResolutionApplied = false;
- LazyDirective(this.data);
+ LazyDirective(this.unitContext, this.data, this.node);
+
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ node.accept(visitor);
+
+ _hasResolutionApplied = true;
+ }
static LazyDirective get(Directive node) {
return node.getProperty(_key);
@@ -559,20 +519,12 @@
return node.getProperty(_uriKey);
}
- static void readMetadata(AstBinaryReader reader, Directive node) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void setData(Directive node, LinkedNode data) {
- node.setProperty(_key, LazyDirective(data));
+ static void setData(
+ LinkedUnitContext unitContext,
+ LinkedNode data,
+ Directive node,
+ ) {
+ node.setProperty(_key, LazyDirective(unitContext, data, node));
if (node is NamespaceDirective) {
node.setProperty(_uriKey, data.namespaceDirective_selectedUri);
}
@@ -589,7 +541,6 @@
final LinkedNode data;
bool _hasDocumentationComment = false;
- bool _hasMetadata = false;
LazyEnumConstantDeclaration(this.data);
@@ -630,21 +581,6 @@
}
}
- static void readMetadata(
- AstBinaryReader reader,
- EnumConstantDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
static void setData(EnumConstantDeclaration node, LinkedNode data) {
node.setProperty(_key, LazyEnumConstantDeclaration(data));
}
@@ -653,13 +589,28 @@
class LazyEnumDeclaration {
static const _key = 'lazyAst';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final EnumDeclaration node;
- bool _hasConstants = false;
bool _hasDocumentationComment = false;
- bool _hasMetadata = false;
+ bool _hasResolutionApplied = false;
- LazyEnumDeclaration(this.data);
+ LazyEnumDeclaration(this.unitContext, this.data, this.node);
+
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+ _hasResolutionApplied = true;
+
+ unitContext.pushTypeParameterStack();
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ node.accept(visitor);
+
+ unitContext.popTypeParameterStack();
+ }
static LazyEnumDeclaration get(EnumDeclaration node) {
return node.getProperty(_key);
@@ -687,21 +638,6 @@
return node.offset;
}
- static void readConstants(
- AstBinaryReader reader,
- EnumDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasConstants) {
- var dataList = lazy.data.enumDeclaration_constants;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.constants[i] = reader.readNode(data);
- }
- lazy._hasConstants = true;
- }
- }
-
static void readDocumentationComment(
LinkedUnitContext context,
EnumDeclaration node,
@@ -713,41 +649,31 @@
}
}
- static void readMetadata(
- AstBinaryReader reader,
+ static void setData(
+ LinkedUnitContext unitContext,
+ LinkedNode data,
EnumDeclaration node,
) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void setData(EnumDeclaration node, LinkedNode data) {
- node.setProperty(_key, LazyEnumDeclaration(data));
+ node.setProperty(_key, LazyEnumDeclaration(unitContext, data, node));
}
}
class LazyExtensionDeclaration {
static const _key = 'lazyAst';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final ExtensionDeclaration node;
bool _hasDocumentationComment = false;
- bool _hasExtendedType = false;
bool _hasMembers = false;
- bool _hasMetadata = false;
+ bool _hasResolutionApplied = false;
/// The name for use in `Reference`. If the extension is named, the name
/// of the extension. If the extension is unnamed, a synthetic name.
String _refName;
- LazyExtensionDeclaration(ExtensionDeclaration node, this.data) {
+ LazyExtensionDeclaration(this.unitContext, this.data, this.node) {
node.setProperty(_key, this);
if (data != null) {
_refName = data.extensionDeclaration_refName;
@@ -756,6 +682,16 @@
String get refName => _refName;
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+ _hasResolutionApplied = true;
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ node.accept(visitor);
+ }
+
void put(LinkedNodeBuilder builder) {
assert(_refName != null);
builder.extensionDeclaration_refName = _refName;
@@ -768,7 +704,7 @@
static LazyExtensionDeclaration get(ExtensionDeclaration node) {
LazyExtensionDeclaration lazy = node.getProperty(_key);
if (lazy == null) {
- return LazyExtensionDeclaration(node, null);
+ return LazyExtensionDeclaration(null, null, node);
}
return lazy;
}
@@ -806,19 +742,6 @@
}
}
- static void readExtendedType(
- AstBinaryReader reader,
- ExtensionDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy?.data != null && !lazy._hasExtendedType) {
- (node as ExtensionDeclarationImpl).extendedType = reader.readNode(
- lazy.data.extensionDeclaration_extendedType,
- );
- lazy._hasExtendedType = true;
- }
- }
-
static void readMembers(
AstBinaryReader reader,
ExtensionDeclaration node,
@@ -833,32 +756,34 @@
lazy._hasMembers = true;
}
}
-
- static void readMetadata(
- AstBinaryReader reader,
- ExtensionDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy?.data != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
}
class LazyFieldDeclaration {
static const _key = 'lazyAst';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final FieldDeclaration node;
bool _hasDocumentationComment = false;
- bool _hasMetadata = false;
+ bool _hasResolutionApplied = false;
- LazyFieldDeclaration(this.data);
+ LazyFieldDeclaration(this.unitContext, this.data, this.node);
+
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+ _hasResolutionApplied = true;
+
+ unitContext.pushTypeParameterStack();
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ visitor.addParentTypeParameters(node);
+ node.accept(visitor);
+
+ unitContext.popTypeParameterStack();
+ }
static LazyFieldDeclaration get(FieldDeclaration node) {
return node.getProperty(_key);
@@ -875,23 +800,12 @@
}
}
- static void readMetadata(
- AstBinaryReader reader,
+ static void setData(
+ LinkedUnitContext unitContext,
+ LinkedNode data,
FieldDeclaration node,
) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void setData(FieldDeclaration node, LinkedNode data) {
- node.setProperty(_key, LazyFieldDeclaration(data));
+ node.setProperty(_key, LazyFieldDeclaration(unitContext, data, node));
}
}
@@ -900,12 +814,7 @@
final LinkedNode data;
- bool _hasDefaultValue = false;
- bool _hasFormalParameters = false;
- bool _hasMetadata = false;
- bool _hasType = false;
bool _hasTypeInferenceError = false;
- bool _hasTypeNode = false;
LazyFormalParameter(this.data);
@@ -950,19 +859,6 @@
}
}
- static DartType getType(
- AstBinaryReader reader,
- FormalParameter node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasType) {
- var type = reader.readType(lazy.data.actualType);
- LazyAst.setType(node, type);
- lazy._hasType = true;
- }
- return LazyAst.getType(node);
- }
-
static TopLevelInferenceError getTypeInferenceError(FormalParameter node) {
var lazy = get(node);
if (lazy != null && !lazy._hasTypeInferenceError) {
@@ -982,68 +878,6 @@
}
}
- static void readDefaultValue(
- AstBinaryReader reader,
- DefaultFormalParameter node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasDefaultValue) {
- node.defaultValue = reader.readNode(
- lazy.data.defaultFormalParameter_defaultValue,
- );
- lazy._hasDefaultValue = true;
- }
- }
-
- static void readFormalParameters(
- AstBinaryReader reader,
- FormalParameter node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasFormalParameters) {
- if (node is FunctionTypedFormalParameter) {
- node.parameters = reader.readNode(
- lazy.data.functionTypedFormalParameter_formalParameters,
- );
- } else if (node is FieldFormalParameter) {
- node.parameters = reader.readNode(
- lazy.data.fieldFormalParameter_formalParameters,
- );
- }
- lazy._hasFormalParameters = true;
- }
- }
-
- static void readMetadata(
- AstBinaryReader reader,
- FormalParameter node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.normalFormalParameter_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void readTypeNode(
- AstBinaryReader reader,
- FormalParameter node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasTypeNode) {
- if (node is SimpleFormalParameter) {
- node.type = reader.readNode(
- lazy.data.simpleFormalParameter_type,
- );
- }
- lazy._hasTypeNode = true;
- }
- }
-
static void setData(FormalParameter node, LinkedNode data) {
node.setProperty(_key, LazyFormalParameter(data));
}
@@ -1052,14 +886,28 @@
class LazyFunctionDeclaration {
static const _key = 'lazyAst';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final FunctionDeclaration node;
bool _hasDocumentationComment = false;
- bool _hasMetadata = false;
- bool _hasReturnType = false;
- bool _hasReturnTypeNode = false;
+ bool _hasResolutionApplied = false;
- LazyFunctionDeclaration(this.data);
+ LazyFunctionDeclaration(this.unitContext, this.data, this.node);
+
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+ _hasResolutionApplied = true;
+
+ unitContext.pushTypeParameterStack();
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ node.accept(visitor);
+
+ unitContext.popTypeParameterStack();
+ }
static LazyFunctionDeclaration get(FunctionDeclaration node) {
return node.getProperty(_key);
@@ -1087,22 +935,6 @@
return node.offset;
}
- static DartType getReturnType(
- AstBinaryReader reader,
- FunctionDeclaration node,
- ) {
- readFunctionExpression(reader, node);
-
- var lazy = get(node);
- if (lazy != null && !lazy._hasReturnType) {
- var type = reader.readType(lazy.data.actualReturnType);
- LazyAst.setReturnType(node, type);
- lazy._hasReturnType = true;
- }
-
- return LazyAst.getReturnType(node);
- }
-
static void readDocumentationComment(
LinkedUnitContext context,
FunctionDeclaration node,
@@ -1114,48 +946,12 @@
}
}
- static void readFunctionExpression(
- AstBinaryReader reader,
+ static void setData(
+ LinkedUnitContext unitContext,
+ LinkedNode data,
FunctionDeclaration node,
) {
- if (node.functionExpression == null) {
- var lazy = get(node);
- node.functionExpression = reader.readNode(
- lazy.data.functionDeclaration_functionExpression,
- );
- }
- }
-
- static void readMetadata(
- AstBinaryReader reader,
- FunctionDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void readReturnTypeNode(
- AstBinaryReader reader,
- FunctionDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasReturnTypeNode) {
- node.returnType = reader.readNode(
- lazy.data.functionDeclaration_returnType,
- );
- lazy._hasReturnTypeNode = true;
- }
- }
-
- static void setData(FunctionDeclaration node, LinkedNode data) {
- node.setProperty(_key, LazyFunctionDeclaration(data));
+ node.setProperty(_key, LazyFunctionDeclaration(unitContext, data, node));
}
}
@@ -1165,7 +961,6 @@
final LinkedNode data;
bool _hasBody = false;
- bool _hasFormalParameters = false;
LazyFunctionExpression(this.data);
@@ -1204,19 +999,6 @@
}
}
- static void readFormalParameters(
- AstBinaryReader reader,
- FunctionExpression node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasFormalParameters) {
- node.parameters = reader.readNode(
- lazy.data.functionExpression_formalParameters,
- );
- lazy._hasFormalParameters = true;
- }
- }
-
static void setData(FunctionExpression node, LinkedNode data) {
node.setProperty(_key, LazyFunctionExpression(data));
}
@@ -1226,15 +1008,25 @@
static const _key = 'lazyAst';
static const _hasSelfReferenceKey = 'lazyAst_hasSelfReferenceKey';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final FunctionTypeAlias node;
bool _hasDocumentationComment = false;
- bool _hasFormalParameters = false;
- bool _hasMetadata = false;
- bool _hasReturnType = false;
- bool _hasReturnTypeNode = false;
+ bool _hasResolutionApplied = false;
- LazyFunctionTypeAlias(this.data);
+ LazyFunctionTypeAlias(this.unitContext, this.data, this.node);
+
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ node.accept(visitor);
+
+ _hasResolutionApplied = true;
+ }
static LazyFunctionTypeAlias get(FunctionTypeAlias node) {
return node.getProperty(_key);
@@ -1266,19 +1058,6 @@
return node.getProperty(_hasSelfReferenceKey);
}
- static DartType getReturnType(
- AstBinaryReader reader,
- FunctionTypeAlias node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasReturnType) {
- var type = reader.readType(lazy.data.actualReturnType);
- LazyAst.setReturnType(node, type);
- lazy._hasReturnType = true;
- }
- return LazyAst.getReturnType(node);
- }
-
static void readDocumentationComment(
LinkedUnitContext context,
FunctionTypeAlias node,
@@ -1290,49 +1069,12 @@
}
}
- static void readFormalParameters(
- AstBinaryReader reader,
+ static void setData(
+ LinkedUnitContext unitContext,
+ LinkedNode data,
FunctionTypeAlias node,
) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasFormalParameters) {
- node.parameters = reader.readNode(
- lazy.data.functionTypeAlias_formalParameters,
- );
- lazy._hasFormalParameters = true;
- }
- }
-
- static void readMetadata(
- AstBinaryReader reader,
- FunctionTypeAlias node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void readReturnTypeNode(
- AstBinaryReader reader,
- FunctionTypeAlias node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasReturnTypeNode) {
- node.returnType = reader.readNode(
- lazy.data.functionTypeAlias_returnType,
- );
- lazy._hasReturnTypeNode = true;
- }
- }
-
- static void setData(FunctionTypeAlias node, LinkedNode data) {
- node.setProperty(_key, LazyFunctionTypeAlias(data));
+ node.setProperty(_key, LazyFunctionTypeAlias(unitContext, data, node));
LazyAst.setSimplyBounded(node, data.simplyBoundable_isSimplyBounded);
}
@@ -1345,13 +1087,25 @@
static const _key = 'lazyAst';
static const _hasSelfReferenceKey = 'lazyAst_hasSelfReferenceKey';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final GenericTypeAlias node;
bool _hasDocumentationComment = false;
- bool _hasFunction = false;
- bool _hasMetadata = false;
+ bool _hasResolutionApplied = false;
- LazyGenericTypeAlias(this.data);
+ LazyGenericTypeAlias(this.unitContext, this.data, this.node);
+
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ node.accept(visitor);
+
+ _hasResolutionApplied = true;
+ }
static LazyGenericTypeAlias get(GenericTypeAlias node) {
return node.getProperty(_key);
@@ -1394,36 +1148,12 @@
}
}
- static void readFunctionType(
- AstBinaryReader reader,
+ static void setData(
+ LinkedUnitContext unitContext,
+ LinkedNode data,
GenericTypeAlias node,
) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasFunction) {
- node.functionType = reader.readNode(
- lazy.data.genericTypeAlias_functionType,
- );
- lazy._hasFunction = true;
- }
- }
-
- static void readMetadata(
- AstBinaryReader reader,
- GenericTypeAlias node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void setData(GenericTypeAlias node, LinkedNode data) {
- node.setProperty(_key, LazyGenericTypeAlias(data));
+ node.setProperty(_key, LazyGenericTypeAlias(unitContext, data, node));
LazyAst.setSimplyBounded(node, data.simplyBoundable_isSimplyBounded);
}
@@ -1435,17 +1165,30 @@
class LazyMethodDeclaration {
static const _key = 'lazyAst';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final MethodDeclaration node;
- bool _hasBody = false;
bool _hasDocumentationComment = false;
- bool _hasFormalParameters = false;
- bool _hasMetadata = false;
- bool _hasReturnType = false;
- bool _hasReturnTypeNode = false;
bool _hasTypeInferenceError = false;
+ bool _hasResolutionApplied = false;
- LazyMethodDeclaration(this.data);
+ LazyMethodDeclaration(this.unitContext, this.data, this.node);
+
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+ _hasResolutionApplied = true;
+
+ unitContext.pushTypeParameterStack();
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ visitor.addParentTypeParameters(node);
+ node.accept(visitor);
+
+ unitContext.popTypeParameterStack();
+ }
static LazyMethodDeclaration get(MethodDeclaration node) {
return node.getProperty(_key);
@@ -1473,19 +1216,6 @@
return node.offset;
}
- static DartType getReturnType(
- AstBinaryReader reader,
- MethodDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasReturnType) {
- var type = reader.readType(lazy.data.actualReturnType);
- LazyAst.setReturnType(node, type);
- lazy._hasReturnType = true;
- }
- return LazyAst.getReturnType(node);
- }
-
static TopLevelInferenceError getTypeInferenceError(MethodDeclaration node) {
var lazy = get(node);
if (lazy != null && !lazy._hasTypeInferenceError) {
@@ -1523,19 +1253,6 @@
}
}
- static void readBody(
- AstBinaryReader reader,
- MethodDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasBody) {
- node.body = reader.readNode(
- lazy.data.methodDeclaration_body,
- );
- lazy._hasBody = true;
- }
- }
-
static void readDocumentationComment(
LinkedUnitContext context,
MethodDeclaration node,
@@ -1547,72 +1264,49 @@
}
}
- static void readFormalParameters(
- AstBinaryReader reader,
+ static void setData(
+ LinkedUnitContext unitContext,
+ LinkedNode data,
MethodDeclaration node,
) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasFormalParameters) {
- node.parameters = reader.readNode(
- lazy.data.methodDeclaration_formalParameters,
- );
- lazy._hasFormalParameters = true;
- }
- }
-
- static void readMetadata(
- AstBinaryReader reader,
- MethodDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void readReturnTypeNode(
- AstBinaryReader reader,
- MethodDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasReturnTypeNode) {
- node.returnType = reader.readNode(
- lazy.data.methodDeclaration_returnType,
- );
- lazy._hasReturnTypeNode = true;
- }
- }
-
- static void setData(MethodDeclaration node, LinkedNode data) {
- node.setProperty(_key, LazyMethodDeclaration(data));
+ node.setProperty(_key, LazyMethodDeclaration(unitContext, data, node));
}
}
class LazyMixinDeclaration {
static const _key = 'lazyAst';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final MixinDeclaration node;
bool _hasDocumentationComment = false;
- bool _hasOnClause = false;
- bool _hasImplementsClause = false;
bool _hasMembers = false;
- bool _hasMetadata = false;
+ bool _hasResolutionApplied = false;
List<String> _superInvokedNames;
- LazyMixinDeclaration(MixinDeclaration node, this.data) {
+ LazyMixinDeclaration(this.unitContext, this.data, this.node) {
node.setProperty(_key, this);
if (data != null) {
LazyAst.setSimplyBounded(node, data.simplyBoundable_isSimplyBounded);
}
}
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+ _hasResolutionApplied = true;
+
+ unitContext.pushTypeParameterStack();
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ node.accept(visitor);
+
+ unitContext.popTypeParameterStack();
+ }
+
List<String> getSuperInvokedNames() {
return _superInvokedNames ??= data.mixinDeclaration_superInvokedNames;
}
@@ -1628,7 +1322,7 @@
static LazyMixinDeclaration get(MixinDeclaration node) {
LazyMixinDeclaration lazy = node.getProperty(_key);
if (lazy == null) {
- return LazyMixinDeclaration(node, null);
+ return LazyMixinDeclaration(null, null, node);
}
return lazy;
}
@@ -1666,19 +1360,6 @@
}
}
- static void readImplementsClause(
- AstBinaryReader reader,
- MixinDeclarationImpl node,
- ) {
- var lazy = get(node);
- if (lazy.data != null && !lazy._hasImplementsClause) {
- node.implementsClause = reader.readNode(
- lazy.data.classOrMixinDeclaration_implementsClause,
- );
- lazy._hasImplementsClause = true;
- }
- }
-
static void readMembers(
AstBinaryReader reader,
MixinDeclaration node,
@@ -1693,45 +1374,33 @@
lazy._hasMembers = true;
}
}
-
- static void readMetadata(
- AstBinaryReader reader,
- MixinDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy.data != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void readOnClause(
- AstBinaryReader reader,
- MixinDeclarationImpl node,
- ) {
- var lazy = get(node);
- if (lazy.data != null && !lazy._hasOnClause) {
- node.onClause = reader.readNode(
- lazy.data.mixinDeclaration_onClause,
- );
- lazy._hasOnClause = true;
- }
- }
}
class LazyTopLevelVariableDeclaration {
static const _key = 'lazyAst';
+ final LinkedUnitContext unitContext;
final LinkedNode data;
+ final TopLevelVariableDeclaration node;
bool _hasDocumentationComment = false;
- bool _hasMetadata = false;
+ bool _hasResolutionApplied = false;
- LazyTopLevelVariableDeclaration(this.data);
+ LazyTopLevelVariableDeclaration(this.unitContext, this.data, this.node);
+
+ void applyResolution() {
+ if (_hasResolutionApplied) {
+ return;
+ }
+ _hasResolutionApplied = true;
+
+ unitContext.pushTypeParameterStack();
+
+ var visitor = ApplyResolutionVisitor(unitContext, data.resolution);
+ node.accept(visitor);
+
+ unitContext.popTypeParameterStack();
+ }
static LazyTopLevelVariableDeclaration get(TopLevelVariableDeclaration node) {
return node.getProperty(_key);
@@ -1748,35 +1417,24 @@
}
}
- static void readMetadata(
- AstBinaryReader reader,
+ static void setData(
+ LinkedUnitContext unitContext,
+ LinkedNode data,
TopLevelVariableDeclaration node,
) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
- static void setData(TopLevelVariableDeclaration node, LinkedNode data) {
- node.setProperty(_key, LazyTopLevelVariableDeclaration(data));
+ node.setProperty(
+ _key,
+ LazyTopLevelVariableDeclaration(unitContext, data, node),
+ );
}
}
+/// TODO(scheglov) remove completely?
class LazyTypeParameter {
static const _key = 'lazyAst';
final LinkedNode data;
- bool _hasBound = false;
- bool _hasDefaultType = false;
- bool _hasMetadata = false;
-
LazyTypeParameter(this.data);
static LazyTypeParameter get(TypeParameter node) {
@@ -1805,52 +1463,17 @@
return node.offset;
}
- static DartType getDefaultType(AstBinaryReader reader, TypeParameter node) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasDefaultType) {
- lazy._hasDefaultType = true;
- var type = reader.readType(lazy.data.typeParameter_defaultType);
- LazyAst.setDefaultType(node, type);
- return type;
- }
- return LazyAst.getDefaultType(node);
- }
-
- static void readBound(AstBinaryReader reader, TypeParameter node) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasBound) {
- node.bound = reader.readNode(lazy.data.typeParameter_bound);
- lazy._hasBound = true;
- }
- }
-
- static void readMetadata(
- AstBinaryReader reader,
- TypeParameter node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasMetadata) {
- var dataList = lazy.data.annotatedNode_metadata;
- for (var i = 0; i < dataList.length; ++i) {
- var data = dataList[i];
- node.metadata[i] = reader.readNode(data);
- }
- lazy._hasMetadata = true;
- }
- }
-
static void setData(TypeParameter node, LinkedNode data) {
node.setProperty(_key, LazyTypeParameter(data));
}
}
+/// TODO(scheglov) remove completely?
class LazyVariableDeclaration {
static const _key = 'lazyAst';
final LinkedNode data;
- bool _hasInitializer = false;
- bool _hasType = false;
bool _hasTypeInferenceError = false;
LazyVariableDeclaration(this.data);
@@ -1891,19 +1514,6 @@
}
}
- static DartType getType(
- AstBinaryReader reader,
- VariableDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasType) {
- var type = reader.readType(lazy.data.actualType);
- LazyAst.setType(node, type);
- lazy._hasType = true;
- }
- return LazyAst.getType(node);
- }
-
static TopLevelInferenceError getTypeInferenceError(
VariableDeclaration node) {
var lazy = get(node);
@@ -1924,19 +1534,6 @@
}
}
- static void readInitializer(
- AstBinaryReader reader,
- VariableDeclaration node,
- ) {
- var lazy = get(node);
- if (lazy != null && !lazy._hasInitializer) {
- node.initializer = reader.readNode(
- lazy.data.variableDeclaration_initializer,
- );
- lazy._hasInitializer = true;
- }
- }
-
static void setData(VariableDeclaration node, LinkedNode data) {
node.setProperty(_key, LazyVariableDeclaration(data));
}
diff --git a/pkg/analyzer/lib/src/summary2/linked_bundle_context.dart b/pkg/analyzer/lib/src/summary2/linked_bundle_context.dart
index 7047fb0..8b8269b 100644
--- a/pkg/analyzer/lib/src/summary2/linked_bundle_context.dart
+++ b/pkg/analyzer/lib/src/summary2/linked_bundle_context.dart
@@ -93,7 +93,7 @@
}
T elementOfIndex<T extends Element>(int index) {
- var reference = referenceOfIndex(index);
+ var reference = referenceOfIndex(index >> 1);
return elementFactory.elementOfReference(reference);
}
diff --git a/pkg/analyzer/lib/src/summary2/linked_unit_context.dart b/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
index ff54b07..13ceb21 100644
--- a/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
+++ b/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
@@ -41,13 +41,8 @@
CompilationUnit _unit;
bool _hasDirectivesRead = false;
- /// Mapping from identifiers to synthetic type parameters.
- ///
- /// Synthetic type parameters are added when [readType] begins reading a
- /// [FunctionType], and removed when reading is done.
- final Map<int, TypeParameterElementImpl> _typeParameters = {};
-
- int _nextSyntheticTypeParameterId = 0x10000;
+ final List<List<TypeParameterElement>> _typeParameterStack = [];
+ List<TypeParameterElement> typeParameterStack = [];
LinkedUnitContext(
this.bundleContext,
@@ -117,17 +112,6 @@
return astFactory.documentationComment(tokens);
}
- void createGenericFunctionTypeElement(int id, GenericFunctionTypeImpl node) {
- var containerRef = this.reference.getChild('@genericFunctionType');
- var reference = containerRef.getChild('$id');
- var element = GenericFunctionTypeElementImpl.forLinkedNode(
- this.reference.element,
- reference,
- node,
- );
- node.declaredElement = element;
- }
-
/// Return the [LibraryElement] referenced in the [node].
LibraryElement directiveLibrary(UriBasedDirective node) {
var uriStr = LazyDirective.getSelectedUri(node);
@@ -135,6 +119,13 @@
return bundleContext.elementFactory.libraryOfUri(uriStr);
}
+ T elementOfIndex<T extends Element>(int index) {
+ if ((index & 0x1) == 0x1) {
+ return typeParameterStack[index >> 1] as T;
+ }
+ return bundleContext.elementOfIndex(index);
+ }
+
int getCodeLength(AstNode node) {
if (node is ClassDeclaration) {
return LazyClassDeclaration.getCodeLength(this, node);
@@ -213,18 +204,6 @@
return LazyCombinator.getEnd(this, node);
}
- List<ConstructorInitializer> getConstructorInitializers(
- ConstructorDeclaration node,
- ) {
- LazyConstructorDeclaration.readInitializers(_astReader, node);
- return node.initializers;
- }
-
- ConstructorName getConstructorRedirected(ConstructorDeclaration node) {
- LazyConstructorDeclaration.readRedirectedConstructor(_astReader, node);
- return node.redirectedConstructor;
- }
-
Iterable<ConstructorDeclaration> getConstructors(AstNode node) sync* {
if (node is ClassOrMixinDeclaration) {
var members = _getClassOrExtensionOrMixinMembers(node);
@@ -237,7 +216,7 @@
}
DartType getDefaultType(TypeParameter node) {
- var type = LazyTypeParameter.getDefaultType(_astReader, node);
+ var type = LazyAst.getDefaultType(node);
if (type is TypeBuilder) {
type = (type as TypeBuilder).build();
LazyAst.setDefaultType(node, type);
@@ -314,16 +293,6 @@
}
}
- List<EnumConstantDeclaration> getEnumConstants(EnumDeclaration node) {
- LazyEnumDeclaration.readConstants(_astReader, node);
- return node.constants;
- }
-
- TypeAnnotation getExtendedType(ExtensionDeclaration node) {
- LazyExtensionDeclaration.readExtendedType(_astReader, node);
- return node.extendedType;
- }
-
String getExtensionRefName(ExtensionDeclaration node) {
return LazyExtensionDeclaration.get(node).refName;
}
@@ -351,33 +320,33 @@
List<FormalParameter> getFormalParameters(AstNode node) {
if (node is ConstructorDeclaration) {
- LazyConstructorDeclaration.readFormalParameters(_astReader, node);
+ // LazyConstructorDeclaration.readFormalParameters(_astReader, node);
return node.parameters.parameters;
} else if (node is FunctionDeclaration) {
- LazyFunctionDeclaration.readFunctionExpression(_astReader, node);
+ // LazyFunctionDeclaration.readFunctionExpression(_astReader, node);
return getFormalParameters(node.functionExpression);
} else if (node is FunctionExpression) {
- LazyFunctionExpression.readFormalParameters(_astReader, node);
+ // LazyFunctionExpression.readFormalParameters(_astReader, node);
return node.parameters?.parameters;
} else if (node is FormalParameter) {
if (node is DefaultFormalParameter) {
return getFormalParameters(node.parameter);
} else if (node is FieldFormalParameter) {
- LazyFormalParameter.readFormalParameters(_astReader, node);
+ // LazyFormalParameter.readFormalParameters(_astReader, node);
return node.parameters?.parameters;
} else if (node is FunctionTypedFormalParameter) {
- LazyFormalParameter.readFormalParameters(_astReader, node);
+ // LazyFormalParameter.readFormalParameters(_astReader, node);
return node.parameters.parameters;
} else {
return null;
}
} else if (node is FunctionTypeAlias) {
- LazyFunctionTypeAlias.readFormalParameters(_astReader, node);
+ // LazyFunctionTypeAlias.readFormalParameters(_astReader, node);
return node.parameters.parameters;
} else if (node is GenericFunctionType) {
return node.parameters.parameters;
} else if (node is MethodDeclaration) {
- LazyMethodDeclaration.readFormalParameters(_astReader, node);
+ // LazyMethodDeclaration.readFormalParameters(_astReader, node);
return node.parameters?.parameters;
} else {
throw UnimplementedError('${node.runtimeType}');
@@ -391,7 +360,7 @@
}
GenericFunctionType getGeneticTypeAliasFunction(GenericTypeAlias node) {
- LazyGenericTypeAlias.readFunctionType(_astReader, node);
+ // LazyGenericTypeAlias.readFunctionType(_astReader, node);
return node.functionType;
}
@@ -406,13 +375,13 @@
ImplementsClause getImplementsClause(AstNode node) {
if (node is ClassDeclaration) {
- LazyClassDeclaration.readImplementsClause(_astReader, node);
+ // LazyClassDeclaration.readImplementsClause(_astReader, node);
return node.implementsClause;
} else if (node is ClassTypeAlias) {
- LazyClassTypeAlias.readImplementsClause(_astReader, node);
+ // LazyClassTypeAlias.readImplementsClause(_astReader, node);
return node.implementsClause;
} else if (node is MixinDeclaration) {
- LazyMixinDeclaration.readImplementsClause(_astReader, node);
+ // LazyMixinDeclaration.readImplementsClause(_astReader, node);
return node.implementsClause;
} else {
throw UnimplementedError('${node.runtimeType}');
@@ -456,6 +425,7 @@
List<Annotation> getLibraryMetadata(CompilationUnit unit) {
for (var directive in unit.directives) {
if (directive is LibraryDirective) {
+ LazyAst.applyResolution(directive);
return getMetadata(directive);
}
}
@@ -464,10 +434,10 @@
List<Annotation> getMetadata(AstNode node) {
if (node is ClassDeclaration) {
- LazyClassDeclaration.readMetadata(_astReader, node);
+ // LazyClassDeclaration.readMetadata(_astReader, node);
return node.metadata;
} else if (node is ClassTypeAlias) {
- LazyClassTypeAlias.readMetadata(_astReader, node);
+ // LazyClassTypeAlias.readMetadata(_astReader, node);
return node.metadata;
} else if (node is CompilationUnit) {
assert(node == _unit);
@@ -477,50 +447,50 @@
return const <Annotation>[];
}
} else if (node is ConstructorDeclaration) {
- LazyConstructorDeclaration.readMetadata(_astReader, node);
+ // LazyConstructorDeclaration.readMetadata(_astReader, node);
return node.metadata;
} else if (node is DefaultFormalParameter) {
return getMetadata(node.parameter);
} else if (node is Directive) {
- LazyDirective.readMetadata(_astReader, node);
+ // LazyDirective.readMetadata(_astReader, node);
return node.metadata;
} else if (node is EnumConstantDeclaration) {
- LazyEnumConstantDeclaration.readMetadata(_astReader, node);
+ // LazyEnumConstantDeclaration.readMetadata(_astReader, node);
return node.metadata;
} else if (node is EnumDeclaration) {
- LazyEnumDeclaration.readMetadata(_astReader, node);
+ // LazyEnumDeclaration.readMetadata(_astReader, node);
return node.metadata;
} else if (node is ExtensionDeclaration) {
- LazyExtensionDeclaration.readMetadata(_astReader, node);
+ // LazyExtensionDeclaration.readMetadata(_astReader, node);
return node.metadata;
} else if (node is FormalParameter) {
- LazyFormalParameter.readMetadata(_astReader, node);
+ // LazyFormalParameter.readMetadata(_astReader, node);
return node.metadata;
} else if (node is FunctionDeclaration) {
- LazyFunctionDeclaration.readMetadata(_astReader, node);
+ // LazyFunctionDeclaration.readMetadata(_astReader, node);
return node.metadata;
} else if (node is FunctionTypeAlias) {
- LazyFunctionTypeAlias.readMetadata(_astReader, node);
+ // LazyFunctionTypeAlias.readMetadata(_astReader, node);
return node.metadata;
} else if (node is GenericTypeAlias) {
- LazyGenericTypeAlias.readMetadata(_astReader, node);
+ // LazyGenericTypeAlias.readMetadata(_astReader, node);
return node.metadata;
} else if (node is MethodDeclaration) {
- LazyMethodDeclaration.readMetadata(_astReader, node);
+ // LazyMethodDeclaration.readMetadata(_astReader, node);
return node.metadata;
} else if (node is MixinDeclaration) {
- LazyMixinDeclaration.readMetadata(_astReader, node);
+ // LazyMixinDeclaration.readMetadata(_astReader, node);
return node.metadata;
} else if (node is TypeParameter) {
- LazyTypeParameter.readMetadata(_astReader, node);
+ // LazyTypeParameter.readMetadata(_astReader, node);
return node.metadata;
} else if (node is VariableDeclaration) {
var parent2 = node.parent.parent;
if (parent2 is FieldDeclaration) {
- LazyFieldDeclaration.readMetadata(_astReader, parent2);
+ // LazyFieldDeclaration.readMetadata(_astReader, parent2);
return parent2.metadata;
} else if (parent2 is TopLevelVariableDeclaration) {
- LazyTopLevelVariableDeclaration.readMetadata(_astReader, parent2);
+ // LazyTopLevelVariableDeclaration.readMetadata(_astReader, parent2);
return parent2.metadata;
}
}
@@ -565,21 +535,19 @@
throw UnimplementedError('${node.runtimeType}');
}
- OnClause getOnClause(MixinDeclaration node) {
- LazyMixinDeclaration.readOnClause(_astReader, node);
- return node.onClause;
- }
-
/// Return the actual return type for the [node] - explicit or inferred.
DartType getReturnType(AstNode node) {
if (node is FunctionDeclaration) {
- return LazyFunctionDeclaration.getReturnType(_astReader, node);
+ return LazyAst.getReturnType(node);
+ // return LazyFunctionDeclaration.getReturnType(_astReader, node);
} else if (node is FunctionTypeAlias) {
- return LazyFunctionTypeAlias.getReturnType(_astReader, node);
+ return LazyAst.getReturnType(node);
+ // return LazyFunctionTypeAlias.getReturnType(_astReader, node);
} else if (node is GenericFunctionType) {
return node.returnType?.type ?? DynamicTypeImpl.instance;
} else if (node is MethodDeclaration) {
- return LazyMethodDeclaration.getReturnType(_astReader, node);
+ return LazyAst.getReturnType(node);
+ // return LazyMethodDeclaration.getReturnType(_astReader, node);
} else {
throw UnimplementedError('${node.runtimeType}');
}
@@ -587,15 +555,12 @@
TypeAnnotation getReturnTypeNode(AstNode node) {
if (node is FunctionTypeAlias) {
- LazyFunctionTypeAlias.readReturnTypeNode(_astReader, node);
return node.returnType;
} else if (node is GenericFunctionType) {
return node.returnType;
} else if (node is FunctionDeclaration) {
- LazyFunctionDeclaration.readReturnTypeNode(_astReader, node);
return node.returnType;
} else if (node is MethodDeclaration) {
- LazyMethodDeclaration.readReturnTypeNode(_astReader, node);
return node.returnType;
} else {
throw UnimplementedError('${node.runtimeType}');
@@ -608,10 +573,10 @@
TypeName getSuperclass(AstNode node) {
if (node is ClassDeclaration) {
- LazyClassDeclaration.readExtendsClause(_astReader, node);
+ // LazyClassDeclaration.readExtendsClause(_astReader, node);
return node.extendsClause?.superclass;
} else if (node is ClassTypeAlias) {
- LazyClassTypeAlias.readSuperclass(_astReader, node);
+ // LazyClassTypeAlias.readSuperclass(_astReader, node);
return node.superclass;
} else {
throw StateError('${node.runtimeType}');
@@ -623,9 +588,11 @@
if (node is DefaultFormalParameter) {
return getType(node.parameter);
} else if (node is FormalParameter) {
- return LazyFormalParameter.getType(_astReader, node);
+ return LazyAst.getType(node);
+ // return LazyFormalParameter.getType(_astReader, node);
} else if (node is VariableDeclaration) {
- return LazyVariableDeclaration.getType(_astReader, node);
+ return LazyAst.getType(node);
+ // return LazyVariableDeclaration.getType(_astReader, node);
} else {
throw UnimplementedError('${node.runtimeType}');
}
@@ -642,7 +609,7 @@
}
TypeAnnotation getTypeParameterBound(TypeParameter node) {
- LazyTypeParameter.readBound(_astReader, node);
+ // LazyTypeParameter.readBound(_astReader, node);
return node.bound;
}
@@ -660,7 +627,7 @@
} else if (node is FieldFormalParameter) {
return node.typeParameters;
} else if (node is FunctionDeclaration) {
- LazyFunctionDeclaration.readFunctionExpression(_astReader, node);
+ // LazyFunctionDeclaration.readFunctionExpression(_astReader, node);
return getTypeParameters2(node.functionExpression);
} else if (node is FunctionExpression) {
return node.typeParameters;
@@ -689,10 +656,10 @@
WithClause getWithClause(AstNode node) {
if (node is ClassDeclaration) {
- LazyClassDeclaration.readWithClause(_astReader, node);
+ // LazyClassDeclaration.readWithClause(_astReader, node);
return node.withClause;
} else if (node is ClassTypeAlias) {
- LazyClassTypeAlias.readWithClause(_astReader, node);
+ // LazyClassTypeAlias.readWithClause(_astReader, node);
return node.withClause;
} else {
throw UnimplementedError('${node.runtimeType}');
@@ -708,11 +675,9 @@
bool hasImplicitReturnType(AstNode node) {
if (node is FunctionDeclaration) {
- LazyFunctionDeclaration.readReturnTypeNode(_astReader, node);
return node.returnType == null;
}
if (node is MethodDeclaration) {
- LazyMethodDeclaration.readReturnTypeNode(_astReader, node);
return node.returnType == null;
}
return false;
@@ -779,7 +744,7 @@
if (node is ConstructorDeclaration) {
return false;
} else if (node is FunctionDeclaration) {
- LazyFunctionDeclaration.readFunctionExpression(_astReader, node);
+ // LazyFunctionDeclaration.readFunctionExpression(_astReader, node);
return isAsynchronous(node.functionExpression);
} else if (node is FunctionExpression) {
return LazyFunctionExpression.isAsynchronous(node);
@@ -859,7 +824,7 @@
if (node is ConstructorDeclaration) {
return false;
} else if (node is FunctionDeclaration) {
- LazyFunctionDeclaration.readFunctionExpression(_astReader, node);
+ // LazyFunctionDeclaration.readFunctionExpression(_astReader, node);
return isGenerator(node.functionExpression);
} else if (node is FunctionExpression) {
return LazyFunctionExpression.isGenerator(node);
@@ -924,12 +889,27 @@
throw UnimplementedError('${node.runtimeType}');
}
+ /// Restore the stack previously saved by [pushTypeParameterStack].
+ void popTypeParameterStack() {
+ typeParameterStack = _typeParameterStack.removeLast();
+ }
+
+ /// We are about to start applying resolution to a declaration. But this
+ /// might be a recursive process, and so we might still be applying
+ /// resolution to some other declaration. These have their own indexes for
+ /// type parameters, so we want to push the current stack, and start with
+ /// a new one. Later we will restore it with [popTypeParameterStack].
+ void pushTypeParameterStack() {
+ _typeParameterStack.add(typeParameterStack);
+ typeParameterStack = [];
+ }
+
Expression readInitializer(AstNode node) {
if (node is DefaultFormalParameter) {
- LazyFormalParameter.readDefaultValue(_astReader, node);
+ // LazyFormalParameter.readDefaultValue(_astReader, node);
return node.defaultValue;
} else if (node is VariableDeclaration) {
- LazyVariableDeclaration.readInitializer(_astReader, node);
+ // LazyVariableDeclaration.readInitializer(_astReader, node);
return node.initializer;
} else {
throw StateError('${node.runtimeType}');
@@ -940,7 +920,9 @@
if (linkedType == null) return null;
var kind = linkedType.kind;
- if (kind == LinkedNodeTypeKind.dynamic_) {
+ if (kind == LinkedNodeTypeKind.null_) {
+ return null;
+ } else if (kind == LinkedNodeTypeKind.dynamic_) {
return DynamicTypeImpl.instance;
} else if (kind == LinkedNodeTypeKind.function) {
var typeParameterDataList = linkedType.functionTypeParameters;
@@ -951,9 +933,11 @@
var typeParameterData = typeParameterDataList[i];
var element = TypeParameterElementImpl(typeParameterData.name, -1);
typeParameters[i] = element;
- _typeParameters[_nextSyntheticTypeParameterId++] = element;
}
+ var typeParameterStackHeight = typeParameterStack.length;
+ typeParameterStack.addAll(typeParameters);
+
// Type parameters might use each other in bounds, including forward
// references. So, we read bounds after reading all type parameters.
for (var i = 0; i < typeParametersLength; ++i) {
@@ -969,9 +953,7 @@
return ParameterElementImpl.synthetic(p.name, type, kind);
}).toList();
- for (var i = 0; i < typeParametersLength; ++i) {
- _typeParameters.remove(--_nextSyntheticTypeParameterId);
- }
+ typeParameterStack.length = typeParameterStackHeight;
FunctionTypeAliasElement typedefElement;
List<DartType> typedefTypeArguments = const <DartType>[];
@@ -1004,15 +986,7 @@
var nullabilitySuffix = _nullabilitySuffix(linkedType.nullabilitySuffix);
return NeverTypeImpl.instance.withNullability(nullabilitySuffix);
} else if (kind == LinkedNodeTypeKind.typeParameter) {
- TypeParameterElement element;
- var id = linkedType.typeParameterId;
- if (id != 0) {
- element = _typeParameters[id];
- assert(element != null);
- } else {
- var index = linkedType.typeParameterElement;
- element = bundleContext.elementOfIndex(index);
- }
+ var element = elementOfIndex(linkedType.typeParameterId);
var nullabilitySuffix = _nullabilitySuffix(linkedType.nullabilitySuffix);
return TypeParameterTypeImpl(
element: element,
@@ -1143,7 +1117,8 @@
if (directive is PartDirective) {
partDirectiveIndex++;
if (partDirectiveIndex == indexInLibrary) {
- LazyDirective.readMetadata(definingContext._astReader, directive);
+ LazyAst.applyResolution(directive);
+ // LazyDirective.readMetadata(definingContext._astReader, directive);
return directive.metadata;
}
}
diff --git a/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart b/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart
index 81cf9c2b..8c3b810 100644
--- a/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart
+++ b/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart
@@ -29,8 +29,7 @@
name: [''],
);
- final Map<TypeParameterElement, int> _typeParameters = Map.identity();
- int _nextSyntheticTypeParameterId = 0x10000;
+ final _TypeParameterIndexer typeParameterIndexer = _TypeParameterIndexer();
LinkingBundleContext(this.dynamicReference);
@@ -44,21 +43,21 @@
}
}
- int idOfTypeParameter(TypeParameterElement element) {
- return _typeParameters[element];
- }
-
int indexOfElement(Element element) {
if (element == null) return 0;
if (element is MultiplyDefinedElement) return 0;
assert(element is! Member);
+ if (element is TypeParameterElement) {
+ return typeParameterIndexer[element] << 1 | 0x1;
+ }
+
if (identical(element, DynamicElementImpl.instance)) {
- return indexOfReference(dynamicReference);
+ return indexOfReference(dynamicReference) << 1;
}
var reference = (element as ElementImpl).reference;
- return indexOfReference(reference);
+ return indexOfReference(reference) << 1;
}
int indexOfReference(Reference reference) {
@@ -76,9 +75,11 @@
}
LinkedNodeTypeBuilder writeType(DartType type) {
- if (type == null) return null;
-
- if (type.isDynamic) {
+ if (type == null) {
+ return LinkedNodeTypeBuilder(
+ kind: LinkedNodeTypeKind.null_,
+ );
+ } else if (type.isDynamic) {
return LinkedNodeTypeBuilder(
kind: LinkedNodeTypeKind.dynamic_,
);
@@ -97,22 +98,11 @@
nullabilitySuffix: _nullabilitySuffix(type),
);
} else if (type is TypeParameterType) {
- TypeParameterElementImpl element = type.element;
- var id = _typeParameters[element];
- if (id != null) {
- return LinkedNodeTypeBuilder(
- kind: LinkedNodeTypeKind.typeParameter,
- nullabilitySuffix: _nullabilitySuffix(type),
- typeParameterId: id,
- );
- } else {
- var index = indexOfElement(element);
- return LinkedNodeTypeBuilder(
- kind: LinkedNodeTypeKind.typeParameter,
- nullabilitySuffix: _nullabilitySuffix(type),
- typeParameterElement: index,
- );
- }
+ return LinkedNodeTypeBuilder(
+ kind: LinkedNodeTypeKind.typeParameter,
+ nullabilitySuffix: _nullabilitySuffix(type),
+ typeParameterId: indexOfElement(type.element),
+ );
} else if (type is VoidType) {
return LinkedNodeTypeBuilder(
kind: LinkedNodeTypeKind.void_,
@@ -156,17 +146,16 @@
var typeParameterBuilders = <LinkedNodeTypeTypeParameterBuilder>[];
var typeParameters = type.typeFormals;
- for (var i = 0; i < typeParameters.length; ++i) {
- var typeParameter = typeParameters[i];
- _typeParameters[typeParameter] = _nextSyntheticTypeParameterId++;
- typeParameterBuilders.add(
- LinkedNodeTypeTypeParameterBuilder(name: typeParameter.name),
- );
- }
+ typeParameterIndexer.enter(typeParameters);
for (var i = 0; i < typeParameters.length; ++i) {
var typeParameter = typeParameters[i];
- typeParameterBuilders[i].bound = writeType(typeParameter.bound);
+ typeParameterBuilders.add(
+ LinkedNodeTypeTypeParameterBuilder(
+ name: typeParameter.name,
+ bound: writeType(typeParameter.bound),
+ ),
+ );
}
Element typedefElement;
@@ -199,10 +188,7 @@
nullabilitySuffix: _nullabilitySuffix(type),
);
- for (var typeParameter in typeParameters) {
- _typeParameters.remove(typeParameter);
- --_nextSyntheticTypeParameterId;
- }
+ typeParameterIndexer.exit(typeParameters);
return result;
}
@@ -221,3 +207,27 @@
}
}
}
+
+class _TypeParameterIndexer {
+ final Map<TypeParameterElement, int> _index = Map.identity();
+ int _stackHeight = 0;
+
+ int operator [](TypeParameterElement parameter) {
+ return _index[parameter] ??
+ (throw ArgumentError('Type parameter $parameter is not indexed'));
+ }
+
+ void enter(List<TypeParameterElement> typeParameters) {
+ for (var i = 0; i < typeParameters.length; i++) {
+ var parameter = typeParameters[i];
+ _index[parameter] = _stackHeight++;
+ }
+ }
+
+ void exit(List<TypeParameterElement> typeParameters) {
+ _stackHeight -= typeParameters.length;
+ for (var i = 0; i < typeParameters.length; i++) {
+ _index.remove(typeParameters[i]);
+ }
+ }
+}
diff --git a/pkg/analyzer/lib/src/task/strong_mode.dart b/pkg/analyzer/lib/src/task/strong_mode.dart
index 2f72a64..e6a5f7c 100644
--- a/pkg/analyzer/lib/src/task/strong_mode.dart
+++ b/pkg/analyzer/lib/src/task/strong_mode.dart
@@ -153,8 +153,11 @@
name: setterName,
);
if (combinedSetter != null) {
- var type = combinedSetter.parameters[0].type;
- return typeSystem.nonNullifyLegacy(type);
+ var parameters = combinedSetter.parameters;
+ if (parameters.isNotEmpty) {
+ var type = parameters[0].type;
+ return typeSystem.nonNullifyLegacy(type);
+ }
}
return DynamicTypeImpl.instance;
}
diff --git a/pkg/analyzer/test/generated/invalid_code_test.dart b/pkg/analyzer/test/generated/invalid_code_test.dart
index a116216..fefa0f8 100644
--- a/pkg/analyzer/test/generated/invalid_code_test.dart
+++ b/pkg/analyzer/test/generated/invalid_code_test.dart
@@ -196,11 +196,10 @@
''');
}
- @failingTest
test_fuzz_12() async {
- // This code crashed with summary2 because usually AST reader is lazy,
- // so we did not read metadata `@b` for `c`. But default values must be
- // read fully.
+ // This code used to crash because we were reading AST lazily, so we did
+ // not read metadata `@b` for `c`. But now we read AST of each declaration
+ // (`f` here) fully, and apply resolution. So, it works now.
await _assertCanBeAnalyzed(r'''
void f({a = [for (@b c = 0;;)]}) {}
''');
diff --git a/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart b/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart
index ac4be3b..ad8a1e9 100644
--- a/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart
@@ -869,6 +869,19 @@
_assertSetterTypeDynamic(foo);
}
+ test_setter_single_setter_withoutParameter() async {
+ await resolveTestCode('''
+class A {
+ set foo() {}
+}
+class B implements A {
+ set foo(x) {}
+}
+''');
+ var foo = findElement.setter('foo', of: 'B');
+ _assertSetterType(foo, 'dynamic');
+ }
+
void _assertFieldType(
FieldElement field,
String type, {
diff --git a/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_test.dart b/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_test.dart
index 8e28cd4..6277909 100644
--- a/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_test.dart
@@ -16,6 +16,20 @@
@reflectiveTest
class ConstInitializedWithNonConstantValueTest
extends PubPackageResolutionTest {
+ test_cascade() async {
+ await assertErrorsInCode(r'''
+class A {
+ const A();
+ void foo() {}
+}
+
+const a = const A()..foo();
+''', [
+ error(CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, 52,
+ 16),
+ ]);
+ }
+
test_dynamic() async {
await assertErrorsInCode(r'''
f(p) {
diff --git a/pkg/analyzer_cli/lib/src/build_mode.dart b/pkg/analyzer_cli/lib/src/build_mode.dart
index 3098758..636e11d 100644
--- a/pkg/analyzer_cli/lib/src/build_mode.dart
+++ b/pkg/analyzer_cli/lib/src/build_mode.dart
@@ -557,7 +557,9 @@
Iterable<String> get dependencies => _dependencies;
- void record(String path) => _dependencies.add(path);
+ void record(String path) {
+ _dependencies.add(path);
+ }
}
/// [PackageBundleProvider] that always reads from the [ResourceProvider].
diff --git a/pkg/analyzer_cli/test/driver_test.dart b/pkg/analyzer_cli/test/driver_test.dart
index 126856d..ffd85a2 100644
--- a/pkg/analyzer_cli/test/driver_test.dart
+++ b/pkg/analyzer_cli/test/driver_test.dart
@@ -253,34 +253,19 @@
class B extends A {}
''');
- // We don't invoke anything on class `B`, so don't ask its supertype.
- // So, no dependency on "a".
+ // When we get resolved class `B`, we apply its full resolution.
+ // So, we ask for `A`, so dependency on "a".
await _assertDependencies('c', [a, b], '''
import 'package:b/b.dart';
B x;
-''', [b]);
+''', [a, b]);
- // We infer the type of `x` to `B`.
- // But we don't ask `B` for its supertype.
- // So, no dependency on "a".
+ // When we get resolved class `B`, we apply its full resolution.
+ // So, we ask for `A`, so dependency on "a".
await _assertDependencies('c', [a, b], '''
import 'package:b/b.dart';
var x = B();
-''', [b]);
-
- // We perform full analysis, and check that `new B()` is assignable
- // to `B x`. This is trivially true, we don't need the supertype of `B`.
- // So, no dependency on "a".
- await _assertDependencies(
- 'c',
- [a, b],
- '''
-import 'package:b/b.dart';
-var x = B();
-''',
- [b],
- summaryOnly: false,
- );
+''', [a, b]);
});
}
diff --git a/pkg/nnbd_migration/lib/src/front_end/resources/migration.css b/pkg/nnbd_migration/lib/src/front_end/resources/migration.css
index 4c121b8..d847c0d 100644
--- a/pkg/nnbd_migration/lib/src/front_end/resources/migration.css
+++ b/pkg/nnbd_migration/lib/src/front_end/resources/migration.css
@@ -229,6 +229,7 @@
.nav-inner li {
list-style-type: none;
+ white-space: nowrap;
}
.nav-inner li:not(.dir) {
diff --git a/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart b/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart
index e3a70a4..3e20299 100644
--- a/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart
@@ -7487,7 +7487,7 @@
''';
String _migration_css;
-// migration_css md5 is 'aa4c1eeef41fd9f06779ba7bac691ac2'
+// migration_css md5 is 'd04b15b458b599db0c03c6cb93023a10'
String _migration_css_base64 = '''
LyogQ29weXJpZ2h0IChjKSAyMDE5LCB0aGUgRGFydCBwcm9qZWN0IGF1dGhvcnMuIFBsZWFzZSBzZWUg
dGhlIEFVVEhPUlMgZmlsZSAgKi8KLyogZm9yIGRldGFpbHMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVz
@@ -7551,139 +7551,139 @@
dDogNnB4Owp9CgoubmF2LXRyZWUgLm1hdGVyaWFsLWljb25zIHsKICBmb250LXNpemU6IDIwcHg7CiAg
cG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogNXB4OwogIG1hcmdpbi1yaWdodDogOHB4OwogIGNvbG9y
OiAjNjc2NzY3Owp9CgoubmF2LWlubmVyIHVsIHsKICBwYWRkaW5nLWxlZnQ6IDEycHg7CiAgbWFyZ2lu
-OiAwOwp9CgoubmF2LWlubmVyIGxpIHsKICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7Cn0KCi5uYXYtaW5u
-ZXIgbGk6bm90KC5kaXIpIHsKICBtYXJnaW4tbGVmdDogMjBweDsKICBtYXJnaW4tYm90dG9tOiAzcHg7
-Cn0KCi5uYXYtaW5uZXIgbGkuZGlyIC5hcnJvdyB7CiAgY3Vyc29yOiBwb2ludGVyOwogIGRpc3BsYXk6
-IGlubGluZS1ibG9jazsKICBmb250LXNpemU6IDEwcHg7CiAgbWFyZ2luLXJpZ2h0OiA0cHg7CiAgdHJh
-bnNpdGlvbjogdHJhbnNmb3JtIDAuNXMgZWFzZS1vdXQ7Cn0KCi5uYXYtaW5uZXIgbGkuZGlyIC5hcnJv
-dy5jb2xsYXBzZWQgewogIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7Cn0KCi5uYXYtaW5uZXIgdWwg
-ewogIG1heC1oZWlnaHQ6IDIwMDBweDsKICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuNXMgZWFzZS1v
-dXQ7Cn0KCi5uYXYtaW5uZXIgdWwuY29sbGFwc2VkIHsKICBtYXgtaGVpZ2h0OiAwICFpbXBvcnRhbnQ7
-CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLm5hdi1pbm5lciAuc2VsZWN0ZWQtZmlsZSB7CiAgY29sb3I6
-IHdoaXRlOwogIGN1cnNvcjogaW5oZXJpdDsKICBmb250LXdlaWdodDogNjAwOwogIHRleHQtZGVjb3Jh
-dGlvbjogbm9uZTsKfQoKLmVkaXQtY291bnQgewogIGJhY2tncm91bmQtY29sb3I6ICM2NzY3Njc7CiAg
-Ym9yZGVyLXJhZGl1czogMTBweDsKICBjb2xvcjogI2ZmZjsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
-CiAgZm9udC1zaXplOiAxMXB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbWFyZ2luLWxlZnQ6IDVweDsK
-ICBtaW4td2lkdGg6IDI1cHg7CiAgcGFkZGluZzogNHB4IDAgMnB4IDA7CiAgdGV4dC1hbGlnbjogY2Vu
-dGVyOwogIGxpbmUtaGVpZ2h0OiAxZW07Cn0KCi5jb250ZW50IHsKICBmbGV4OiA0IDMwMHB4OwogIGJh
-Y2tncm91bmQ6ICMxMjIwMmY7CiAgZm9udC1mYW1pbHk6ICJSb2JvdG8gTW9ubyIsIG1vbm9zcGFjZTsK
-ICBtYXJnaW46IDAgNnB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB3aGl0ZS1zcGFjZTogcHJlOwog
-IG92ZXJmbG93OiBzY3JvbGw7Cn0KCi5jb2RlIHsKICBwYWRkaW5nOiAwLjVlbTsKICBwb3NpdGlvbjog
-YWJzb2x1dGU7CiAgbGVmdDogMDsKICB0b3A6IDA7CiAgbWFyZ2luLWxlZnQ6IDU2cHg7Cn0KCi5jb2Rl
-IC53ZWxjb21lIHsKICBmb250LWZhbWlseTogIkdvb2dsZSBTYW5zIiwiUm9ib3RvIixzYW5zLXNlcmlm
-OwogIGZvbnQtc2l6ZTogMThweDsKICBtYXJnaW4tcmlnaHQ6IDYycHg7CiAgY29sb3I6ICM3Nzc7Cn0K
-Ci5jb2RlIC5uYXYtbGluayB7CiAgY29sb3I6ICMxNmFkY2E7CiAgdGV4dC1kZWNvcmF0aW9uLWxpbmU6
-IG5vbmU7Cn0KCi5jb2RlIC5uYXYtbGluazp2aXNpdGVkIHsKICBjb2xvcjogIzEzOWJiNTsgLyogIzE2
-YWRjYSBkYXJrZW5lZCAxMCUgKi8KICB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsKfQoKLmNvZGUg
-Lm5hdi1saW5rOmhvdmVyIHsKICB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lOwogIGZvbnQt
-d2VpZ2h0OiA2MDA7Cn0KCi5yZWdpb25zIHsKICBwYWRkaW5nOiAwLjVlbTsKICBwb3NpdGlvbjogYWJz
-b2x1dGU7CiAgbGVmdDogMDsKICB0b3A6IDA7Cn0KCi5yZWdpb25zIHRhYmxlIHsKICBib3JkZXItc3Bh
-Y2luZzogMDsKICBmb250LXNpemU6IGluaGVyaXQ7Cn0KCi5yZWdpb25zIHRkIHsKICBib3JkZXI6IG5v
-bmU7CiAgLyogVGhlIGNvbnRlbnQgb2YgdGhlIHJlZ2lvbnMgaXMgbm90IHZpc2libGU7IHRoZSB1c2Vy
-IGluc3RlYWQgd2lsbCBzZWUgdGhlCiAgICogaGlnaGxpZ2h0ZWQgY29weSBvZiB0aGUgY29udGVudC4g
-Ki8KICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTsKICBwYWRkaW5nOiAwOwogIHdoaXRlLXNw
-YWNlOiBwcmU7Cn0KCi5yZWdpb25zIHRkOmVtcHR5OmFmdGVyIHsKICBjb250ZW50OiAiXDAwYTAiOwp9
-CgoucmVnaW9ucyB0ci5oaWdobGlnaHQgdGQ6bGFzdC1jaGlsZCB7CiAgYmFja2dyb3VuZC1jb2xvcjog
-IzQ0NDQ0NDsKICBjb2xvcjogd2hpdGU7Cn0KCi5yZWdpb25zIHRkLmxpbmUtbm8gewogIGJvcmRlci1y
-aWdodDogc29saWQgIzEyMjAyZiAycHg7CiAgY29sb3I6ICM5OTk5OTk7CiAgcGFkZGluZy1yaWdodDog
-NHB4OwogIHRleHQtYWxpZ246IHJpZ2h0OwogIHZpc2liaWxpdHk6IHZpc2libGU7CiAgd2lkdGg6IDUw
-cHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgoucmVnaW9ucyB0ci5oaWdobGlnaHQgdGQubGlu
-ZS1ubyB7CiAgYm9yZGVyLXJpZ2h0OiBzb2xpZCAjY2NjIDJweDsKfQoKLnJlZ2lvbiB7CiAgZGlzcGxh
-eTogaW5saW5lLWJsb2NrOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB2aXNpYmlsaXR5OiB2aXNpYmxl
-OwogIHotaW5kZXg6IDIwMDsKfQoKLnJlZ2lvbi5hZGRlZC1yZWdpb24gewogIGJhY2tncm91bmQtY29s
-b3I6ICMxNzhhZmQ7CiAgY29sb3I6ICNmZmY7Cn0KCi5yZWdpb24ucmVtb3ZlZC1yZWdpb24gewogIGJh
-Y2tncm91bmQtY29sb3I6ICNGQTU1N2Q7IC8qICRkYXJrLXBpbmsgKi8KICBjb2xvcjogI2ZmZjsKfQoK
-LnJlZ2lvbi5pbmZvcm1hdGl2ZS1yZWdpb24gewogIGJhY2tncm91bmQtY29sb3I6ICMyNjM5NTI7CiAg
-Y29sb3I6ICNmZmY7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGhlaWdodDogMTVweDsKICBwb3Np
-dGlvbjogcmVsYXRpdmU7CiAgdG9wOiAycHg7Cn0KCi50YXJnZXQgewogIGJhY2tncm91bmQtY29sb3I6
-ICM0NDQ7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHZpc2liaWxpdHk6IHZpc2libGU7CiAgZm9udC13
-ZWlnaHQ6IDYwMDsKfQoKLmluZm8tcGFuZWwgewogIGZsZXg6IDEgMjAwcHg7CiAgbWFyZ2luOiAwOwog
-IGhlaWdodDogMTAwJTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0K
-Ci5pbmZvLXBhbmVsIC5lZGl0LXBhbmVsIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTIyMDJmOwogIG92
-ZXJmbG93OiBhdXRvOwp9CgouaW5mby1wYW5lbCAucGFuZWwtY29udGVudCB7CiAgcGFkZGluZzogN3B4
-Owp9CgouaW5mby1wYW5lbCAucGFuZWwtY29udGVudD4gOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tdG9w
-OiAwOwp9CgouaW5mby1wYW5lbCAubm93cmFwIHsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgouaW5m
-by1wYW5lbCB1bCwKLmluZm8tcGFuZWwgb2wgewogIHBhZGRpbmctbGVmdDogMjBweDsKfQoKLmluZm8t
-cGFuZWwgbGkgewogIG1hcmdpbjogMCAwIDVweCAwOwp9CgouaW5mby1wYW5lbCBhIHsKICBjb2xvcjog
-IzEzOWJiNTsKfQoKLmluZm8tcGFuZWwgYTpob3ZlciB7CiAgY29sb3I6ICMxZWM3ZTc7IC8qICMxMzli
-YjUgbGlnaHRlbmVkIDIwJSAqLwp9CgouaW5mby1wYW5lbCAuZWRpdC1saXN0IHsKICBiYWNrZ3JvdW5k
-LWNvbG9yOiAjMTIyMDJmOwogIG92ZXJmbG93OiBhdXRvOwp9CgouZWRpdC1wYW5lbCB7CiAgbWFyZ2lu
-LXRvcDogNnB4OwogIGZsZXg6IDEgMTAwcHg7Cn0KCi5lZGl0LWxpc3QgewogIGZsZXg6IDIgMTAwcHg7
-Cn0KCi5lZGl0LWxpc3QgLmVkaXQgewogIG1hcmdpbjogM3B4IDA7Cn0KCi5lZGl0LWxpc3QgLmVkaXQt
-bGluayB7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgoucG9wdXAtcGFuZSB7CiAgZGlzcGxheTogbm9uZTsK
-ICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAxNTBweDsKICBsZWZ0OiAxNTBweDsKICByaWdodDogMTUw
-cHg7CiAgYm90dG9tOiAxNTBweDsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICBib3JkZXItdG9w
-OiAycHggc29saWQgYmxhY2s7CiAgYm9yZGVyLXJhZGl1czogN3B4OwogIGJveC1zaGFkb3c6IDBweCAw
-cHggMjBweCAycHggI2I0YmZjYjIyOwogIHotaW5kZXg6IDQwMDsKICBiYWNrZ3JvdW5kOiAjMmIzMDM2
-OwogIHBhZGRpbmc6IDIwcHg7Cn0KCi5wb3B1cC1wYW5lIC5jbG9zZSB7CiAgcG9zaXRpb246IGFic29s
-dXRlOwogIHJpZ2h0OiAxMHB4OwogIHRvcDogMTBweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdGV4dC1z
-aGFkb3c6IDFweCAxcHggMnB4ICM4ODg7CiAgYm94LXNoYWRvdzogMXB4IDFweCAycHggIzExMTsKfQoK
-LnBvcHVwLXBhbmUgaDIgewogIHBhZGRpbmc6IDIxcHg7CiAgaGVpZ2h0OiAxMCU7CiAgbWFyZ2luOiAw
-cHg7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLnBvcHVwLXBhbmUgcCB7CiAgaGVpZ2h0OiAx
-MCU7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBwYWRkaW5nOiAwcHggMjBweDsKfQoKLnBvcHVw
-LXBhbmUgcHJlIHsKICBiYWNrZ3JvdW5kOiAjMTIyMDJmOwogIHBhZGRpbmc6IDIwcHg7CiAgYm90dG9t
-OiAwcHg7CiAgb3ZlcmZsb3c6IGF1dG8gc2Nyb2xsOwogIGhlaWdodDogNjUlOwogIG1hcmdpbjogMHB4
-OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5wb3B1cC1wYW5lIC5idXR0b24uYm90dG9tIHsK
-ICBtYXJnaW46IDIwcHggMHB4OwogIGRpc3BsYXk6IGJsb2NrOwogIHRleHQtYWxpZ246IGNlbnRlcjsK
-fQoKLnJlcnVubmluZy1wYW5lIHsKICBkaXNwbGF5OiBub25lOwp9Cgpib2R5LnJlcnVubmluZyAucmVy
-dW5uaW5nLXBhbmUgewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDBw
-eDsKICBib3R0b206IDBweDsKICBsZWZ0OiAwcHg7CiAgcmlnaHQ6IDBweDsKICBiYWNrZ3JvdW5kLWNv
-bG9yOiAjMDAwMDAwQUE7IC8qIHRyYW5zbHVjZW50IGJsYWNrICovCiAgei1pbmRleDogNDAwOwp9Cgou
-cmVydW5uaW5nLXBhbmUgaDEgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDUwJTsKICBsZWZ0
-OiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7Cn0KCi5lZGl0LXBhbmVsIC50
-eXBlLWRlc2NyaXB0aW9uIHsKICAvKiBGcm9tIERhcnRQYWQgJGRhcmstb3JhbmdlICovCiAgY29sb3I6
-ICNmZjkxNmU7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKfQoKdWwudHJhY2UgewogIGZvbnQtc2l6
-ZTogMTNweDsKICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgcGFkZGluZy1sZWZ0OiAwcHg7Cn0KCnVs
-LnRyYWNlIGxpIHsKICBjb2xvcjogd2hpdGU7Cn0KCnVsLnRyYWNlIGxpIC5mdW5jdGlvbiB7CiAgLyog
-ZnJvbSAuaGxqcy12YXJpYWJsZSAqLwogIGNvbG9yOiAjMTZhZGNhOwogIGZvbnQtZmFtaWx5OiBtb25v
-c3BhY2U7CiAgZm9udC13ZWlnaHQ6IDYwMDsKfQoKdWwudHJhY2UgbGkgcC5kcmF3ZXIgewogIG1hcmdp
-bjogM3B4IDBweDsKICBwYWRkaW5nOiAwcHggMHB4IDBweCAxNHB4Owp9Cgp1bC50cmFjZSBsaSBwLmRy
-YXdlciBidXR0b24gewogIG1hcmdpbi1yaWdodDogM3B4Owp9CgouZWxldmF0aW9uLXo0IHsKICBib3gt
-c2hhZG93OiAwcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwKICAgICAgMHB4IDRweCA1
-cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgIDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAw
-LCAwLCAuMTIpOwp9CgphIHsKICBjb2xvcjogI2NjYzsKICBmaWxsOiAjY2NjOwogIHRleHQtZGVjb3Jh
-dGlvbjogbm9uZTsKfQoKYTpob3ZlciB7CiAgY29sb3I6ICNkYmRiZGI7IC8qICNjY2MgbGlnaHRlbnRl
-ZCAzMCUqLwogIGZpbGw6ICNmZmY7Cn0KCi5hZGQtaGludC1saW5rIHsKICBkaXNwbGF5OiBpbmxpbmUt
-YmxvY2s7CiAgbWFyZ2luOiAzcHg7Cn0KCi5hZGQtaGludC1saW5rOmhvdmVyIHsKICBjb2xvcjogI2Zm
-ZjsKfQoKaGVhZGVyIGJ1dHRvbiB7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKaGVhZGVy
-IGEgewogIG1hcmdpbjogMDsKfQoKLyogQ2FyZWZ1bCBoZXJlLiBgYS5idXR0b25gIGlzIHJlcGV0aXRp
-dmUgYnV0IHJlcXVpcmVkIHRvIGdldCBjb3JyZWN0CiAqIHNwZWNpZmljaXR5ICovCmJ1dHRvbiwgLmJ1
-dHRvbiwgYS5idXR0b24gewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjIsIDEzOCwgMjUzLCAwLjE1
-KTsKICBib3JkZXI6IG5vbmU7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIHBhZGRpbmc6IDNweCAxMHB4
-OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1mb250OiBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgY29s
-b3I6ICNmZmY7Cn0KCmJ1dHRvbjpob3ZlciwgLmJ1dHRvbjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xv
-cjogcmdiYSgyMiwgMTM4LCAyNTMsIDAuMjkpOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKYnV0dG9uW2Rp
-c2FibGVkXSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuMTIpOwogIGNvbG9y
-OiByZ2JhKDI1NSwyNTUsMjU1LC4zNyk7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoKLyogQ2hhbmdl
-IGVkaXQgcGFuZWwgYnV0dG9uIGNvbG9ycyAqLwouZWRpdC1wYW5lbCAuYnV0dG9uLCAuZWRpdC1wYW5l
-bCBidXR0b24gewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNjMsIDEwNCwgMTQ4LCAwLjYpOwogIGNv
-bG9yOiB3aGl0ZTsKfQouZWRpdC1wYW5lbCAuYnV0dG9uOmhvdmVyLCAuZWRpdC1wYW5lbCBidXR0b246
-aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAxLCAxNTMsIDIwOCwgMC42KTsKICBjb2xv
-cjogd2hpdGU7Cn0KCi8qCiAqIEFkanVzdG1lbnRzIHRvIGFsaWduIG1hdGVyaWFsIGljb25zIGluIHRo
-ZSB0b29sYmFyIGJ1dHRvbnMuCiovCi5hY3Rpb24tYnV0dG9uID4gc3BhbiB7CiAgcG9zaXRpb246cmVs
-YXRpdmU7CiAgdG9wOiAtM3B4Owp9CgouYWN0aW9uLWJ1dHRvbiAubWF0ZXJpYWwtaWNvbnMgewogIHRv
-cDogNHB4Owp9CgovKiBEb24ndCBzaGlmdCB0aGUgaWNvbiB3aGVuIGl0J3MgYSBkaXJlY3QgY2hpbGQg
-b2YgdGhlIGJ1dHRvbiAqLwouYWN0aW9uLWJ1dHRvbiA+IC5tYXRlcmlhbC1pY29ucyB7CiAgdG9wOiAx
-cHg7Cn0KCi8qIFNoaWZ0IHRoZSB0ZXh0IHRvIGNlbnRlciB3aXRoIHRoZSBpY29uLiAqLwouYWN0aW9u
-LWJ1dHRvbiA+IHNwYW4ubGFiZWwgewogIHBvc2l0aW9uOnJlbGF0aXZlOwogIHRvcDogLTRweDsKfQoK
-LmFjdGlvbi1idXR0b24gLm1hdGVyaWFsLWljb25zIHsKICBmb250LXNpemU6IDIwcHg7CiAgcG9zaXRp
-b246IHJlbGF0aXZlOwp9CgoucGxhY2Vob2xkZXIgewogIGNvbG9yOiAjNzc3OwogIHRleHQtYWxpZ246
-IGNlbnRlcjsKICBtYXJnaW4tdG9wOiAzZW0gIWltcG9ydGFudDsKfQoKLyoqCiAqIEhMSlMgT3ZlcnJp
-ZGVzCiAqLwouaGxqcyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzEyMjAyZjsgLyogJGRhcmstY29kZS1i
-YWNrZ3JvdW5kLWNvbG9yICovCiAgY29sb3I6ICNjMGMyYzU7IC8qICRkYXJrLWVkaXRvci10ZXh0ICov
-CiAgZGlzcGxheTogYmxvY2s7CiAgb3ZlcmZsb3cteDogYXV0bzsKICBwYWRkaW5nOiAwLjVlbTsKICAv
-KioKICAgKiBUaGlzIGFsbG93cyB0aGUgcGVyLWxpbmUgaGlnaGxpZ2h0cyB0byBzaG93LgogICAqLwog
-IGJhY2tncm91bmQ6IG5vbmU7Cn0KCi5obGpzLWtleXdvcmQsCi5obGpzLXNlbGVjdG9yLXRhZywKLmhs
-anMtZGVsZXRpb24gewogIGNvbG9yOiAjNTFjNjg2OyAvKiBjbS1rZXl3b3JkICovCn0KCi5obGpzLW51
-bWJlciB7CiAgY29sb3I6ICM2Mjc5Nzg7IC8qIGNtLW51bWJlciAqLwp9CgouaGxqcy1jb21tZW50IHsK
-ICBjb2xvcjogIzkxOThiNDsgLyogY20tY29tbWVudCAqLwp9CgouaGxqcy1saXRlcmFsIHsKICBjb2xv
-cjogI2VlODY2NjsgLyogY20tYXRvbSAqLwp9CgouaGxqcy1zdHJpbmcgewogIGNvbG9yOiAjZTU1MDc0
-OyAvKiBjbS1zdHJpbmcgKi8KfQoKLmhsanMtdmFyaWFibGUgewogIGNvbG9yOiAjMTZhZGNhOyAvKiBj
-bS12YXJpYWJsZSAqLwp9CgouaGxqcy1saW5rIHsKICBjb2xvcjogI2U1NTA3NDsgLyogY20tc3RyaW5n
-ICovCn0KLmhsanMtc2VjdGlvbiwKLmhsanMtdHlwZSwKLmhsanMtYnVpbHRfaW4sCi5obGpzLXRpdGxl
-IHsKICBjb2xvcjogI2VlODY2NjsgLyogY20tdmFyaWFibGUtMiAqLwp9CgouaGxqcy1hZGRpdGlvbiB7
-CiAgY29sb3I6ICMyNjM5NTI7IC8qICRkYXJrLXNlbGVjdGlvbi1jb2xvciAqLwp9CgouaGxqcy1tZXRh
-IHsKICBjb2xvcjogIzYyNzk3ODsKfQo=
+OiAwOwp9CgoubmF2LWlubmVyIGxpIHsKICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgd2hpdGUtc3Bh
+Y2U6IG5vd3JhcDsKfQoKLm5hdi1pbm5lciBsaTpub3QoLmRpcikgewogIG1hcmdpbi1sZWZ0OiAyMHB4
+OwogIG1hcmdpbi1ib3R0b206IDNweDsKfQoKLm5hdi1pbm5lciBsaS5kaXIgLmFycm93IHsKICBjdXJz
+b3I6IHBvaW50ZXI7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogMTBweDsKICBt
+YXJnaW4tcmlnaHQ6IDRweDsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBlYXNlLW91dDsKfQoK
+Lm5hdi1pbm5lciBsaS5kaXIgLmFycm93LmNvbGxhcHNlZCB7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTkw
+ZGVnKTsKfQoKLm5hdi1pbm5lciB1bCB7CiAgbWF4LWhlaWdodDogMjAwMHB4OwogIHRyYW5zaXRpb246
+IG1heC1oZWlnaHQgMC41cyBlYXNlLW91dDsKfQoKLm5hdi1pbm5lciB1bC5jb2xsYXBzZWQgewogIG1h
+eC1oZWlnaHQ6IDAgIWltcG9ydGFudDsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgoubmF2LWlubmVyIC5z
+ZWxlY3RlZC1maWxlIHsKICBjb2xvcjogd2hpdGU7CiAgY3Vyc29yOiBpbmhlcml0OwogIGZvbnQtd2Vp
+Z2h0OiA2MDA7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouZWRpdC1jb3VudCB7CiAgYmFja2dy
+b3VuZC1jb2xvcjogIzY3Njc2NzsKICBib3JkZXItcmFkaXVzOiAxMHB4OwogIGNvbG9yOiAjZmZmOwog
+IGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IDYw
+MDsKICBtYXJnaW4tbGVmdDogNXB4OwogIG1pbi13aWR0aDogMjVweDsKICBwYWRkaW5nOiA0cHggMCAy
+cHggMDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbGluZS1oZWlnaHQ6IDFlbTsKfQoKLmNvbnRlbnQg
+ewogIGZsZXg6IDQgMzAwcHg7CiAgYmFja2dyb3VuZDogIzEyMjAyZjsKICBmb250LWZhbWlseTogIlJv
+Ym90byBNb25vIiwgbW9ub3NwYWNlOwogIG1hcmdpbjogMCA2cHg7CiAgcG9zaXRpb246IHJlbGF0aXZl
+OwogIHdoaXRlLXNwYWNlOiBwcmU7CiAgb3ZlcmZsb3c6IHNjcm9sbDsKfQoKLmNvZGUgewogIHBhZGRp
+bmc6IDAuNWVtOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIHRvcDogMDsKICBtYXJn
+aW4tbGVmdDogNTZweDsKfQoKLmNvZGUgLndlbGNvbWUgewogIGZvbnQtZmFtaWx5OiAiR29vZ2xlIFNh
+bnMiLCJSb2JvdG8iLHNhbnMtc2VyaWY7CiAgZm9udC1zaXplOiAxOHB4OwogIG1hcmdpbi1yaWdodDog
+NjJweDsKICBjb2xvcjogIzc3NzsKfQoKLmNvZGUgLm5hdi1saW5rIHsKICBjb2xvcjogIzE2YWRjYTsK
+ICB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsKfQoKLmNvZGUgLm5hdi1saW5rOnZpc2l0ZWQgewog
+IGNvbG9yOiAjMTM5YmI1OyAvKiAjMTZhZGNhIGRhcmtlbmVkIDEwJSAqLwogIHRleHQtZGVjb3JhdGlv
+bi1saW5lOiBub25lOwp9CgouY29kZSAubmF2LWxpbms6aG92ZXIgewogIHRleHQtZGVjb3JhdGlvbi1s
+aW5lOiB1bmRlcmxpbmU7CiAgZm9udC13ZWlnaHQ6IDYwMDsKfQoKLnJlZ2lvbnMgewogIHBhZGRpbmc6
+IDAuNWVtOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIHRvcDogMDsKfQoKLnJlZ2lv
+bnMgdGFibGUgewogIGJvcmRlci1zcGFjaW5nOiAwOwogIGZvbnQtc2l6ZTogaW5oZXJpdDsKfQoKLnJl
+Z2lvbnMgdGQgewogIGJvcmRlcjogbm9uZTsKICAvKiBUaGUgY29udGVudCBvZiB0aGUgcmVnaW9ucyBp
+cyBub3QgdmlzaWJsZTsgdGhlIHVzZXIgaW5zdGVhZCB3aWxsIHNlZSB0aGUKICAgKiBoaWdobGlnaHRl
+ZCBjb3B5IG9mIHRoZSBjb250ZW50LiAqLwogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDApOwog
+IHBhZGRpbmc6IDA7CiAgd2hpdGUtc3BhY2U6IHByZTsKfQoKLnJlZ2lvbnMgdGQ6ZW1wdHk6YWZ0ZXIg
+ewogIGNvbnRlbnQ6ICJcMDBhMCI7Cn0KCi5yZWdpb25zIHRyLmhpZ2hsaWdodCB0ZDpsYXN0LWNoaWxk
+IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ0NDQ0OwogIGNvbG9yOiB3aGl0ZTsKfQoKLnJlZ2lvbnMg
+dGQubGluZS1ubyB7CiAgYm9yZGVyLXJpZ2h0OiBzb2xpZCAjMTIyMDJmIDJweDsKICBjb2xvcjogIzk5
+OTk5OTsKICBwYWRkaW5nLXJpZ2h0OiA0cHg7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgdmlzaWJpbGl0
+eTogdmlzaWJsZTsKICB3aWR0aDogNTBweDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5yZWdp
+b25zIHRyLmhpZ2hsaWdodCB0ZC5saW5lLW5vIHsKICBib3JkZXItcmlnaHQ6IHNvbGlkICNjY2MgMnB4
+Owp9CgoucmVnaW9uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcG9zaXRpb246IHJlbGF0aXZl
+OwogIHZpc2liaWxpdHk6IHZpc2libGU7CiAgei1pbmRleDogMjAwOwp9CgoucmVnaW9uLmFkZGVkLXJl
+Z2lvbiB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3OGFmZDsKICBjb2xvcjogI2ZmZjsKfQoKLnJlZ2lv
+bi5yZW1vdmVkLXJlZ2lvbiB7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZBNTU3ZDsgLyogJGRhcmstcGlu
+ayAqLwogIGNvbG9yOiAjZmZmOwp9CgoucmVnaW9uLmluZm9ybWF0aXZlLXJlZ2lvbiB7CiAgYmFja2dy
+b3VuZC1jb2xvcjogIzI2Mzk1MjsKICBjb2xvcjogI2ZmZjsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
+CiAgaGVpZ2h0OiAxNXB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IDJweDsKfQoKLnRhcmdl
+dCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzQ0NDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmlzaWJp
+bGl0eTogdmlzaWJsZTsKICBmb250LXdlaWdodDogNjAwOwp9CgouaW5mby1wYW5lbCB7CiAgZmxleDog
+MSAyMDBweDsKICBtYXJnaW46IDA7CiAgaGVpZ2h0OiAxMDAlOwogIGRpc3BsYXk6IGZsZXg7CiAgZmxl
+eC1kaXJlY3Rpb246IGNvbHVtbjsKfQoKLmluZm8tcGFuZWwgLmVkaXQtcGFuZWwgewogIGJhY2tncm91
+bmQtY29sb3I6ICMxMjIwMmY7CiAgb3ZlcmZsb3c6IGF1dG87Cn0KCi5pbmZvLXBhbmVsIC5wYW5lbC1j
+b250ZW50IHsKICBwYWRkaW5nOiA3cHg7Cn0KCi5pbmZvLXBhbmVsIC5wYW5lbC1jb250ZW50PiA6Zmly
+c3QtY2hpbGQgewogIG1hcmdpbi10b3A6IDA7Cn0KCi5pbmZvLXBhbmVsIC5ub3dyYXAgewogIHdoaXRl
+LXNwYWNlOiBub3dyYXA7Cn0KCi5pbmZvLXBhbmVsIHVsLAouaW5mby1wYW5lbCBvbCB7CiAgcGFkZGlu
+Zy1sZWZ0OiAyMHB4Owp9CgouaW5mby1wYW5lbCBsaSB7CiAgbWFyZ2luOiAwIDAgNXB4IDA7Cn0KCi5p
+bmZvLXBhbmVsIGEgewogIGNvbG9yOiAjMTM5YmI1Owp9CgouaW5mby1wYW5lbCBhOmhvdmVyIHsKICBj
+b2xvcjogIzFlYzdlNzsgLyogIzEzOWJiNSBsaWdodGVuZWQgMjAlICovCn0KCi5pbmZvLXBhbmVsIC5l
+ZGl0LWxpc3QgewogIGJhY2tncm91bmQtY29sb3I6ICMxMjIwMmY7CiAgb3ZlcmZsb3c6IGF1dG87Cn0K
+Ci5lZGl0LXBhbmVsIHsKICBtYXJnaW4tdG9wOiA2cHg7CiAgZmxleDogMSAxMDBweDsKfQoKLmVkaXQt
+bGlzdCB7CiAgZmxleDogMiAxMDBweDsKfQoKLmVkaXQtbGlzdCAuZWRpdCB7CiAgbWFyZ2luOiAzcHgg
+MDsKfQoKLmVkaXQtbGlzdCAuZWRpdC1saW5rIHsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5wb3B1cC1w
+YW5lIHsKICBkaXNwbGF5OiBub25lOwogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDE1MHB4OwogIGxl
+ZnQ6IDE1MHB4OwogIHJpZ2h0OiAxNTBweDsKICBib3R0b206IDE1MHB4OwogIGJvcmRlcjogMXB4IHNv
+bGlkIGJsYWNrOwogIGJvcmRlci10b3A6IDJweCBzb2xpZCBibGFjazsKICBib3JkZXItcmFkaXVzOiA3
+cHg7CiAgYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IDJweCAjYjRiZmNiMjI7CiAgei1pbmRleDogNDAw
+OwogIGJhY2tncm91bmQ6ICMyYjMwMzY7CiAgcGFkZGluZzogMjBweDsKfQoKLnBvcHVwLXBhbmUgLmNs
+b3NlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDEwcHg7CiAgdG9wOiAxMHB4OwogIGN1
+cnNvcjogcG9pbnRlcjsKICB0ZXh0LXNoYWRvdzogMXB4IDFweCAycHggIzg4ODsKICBib3gtc2hhZG93
+OiAxcHggMXB4IDJweCAjMTExOwp9CgoucG9wdXAtcGFuZSBoMiB7CiAgcGFkZGluZzogMjFweDsKICBo
+ZWlnaHQ6IDEwJTsKICBtYXJnaW46IDBweDsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CgoucG9w
+dXAtcGFuZSBwIHsKICBoZWlnaHQ6IDEwJTsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIHBhZGRp
+bmc6IDBweCAyMHB4Owp9CgoucG9wdXAtcGFuZSBwcmUgewogIGJhY2tncm91bmQ6ICMxMjIwMmY7CiAg
+cGFkZGluZzogMjBweDsKICBib3R0b206IDBweDsKICBvdmVyZmxvdzogYXV0byBzY3JvbGw7CiAgaGVp
+Z2h0OiA2NSU7CiAgbWFyZ2luOiAwcHg7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLnBvcHVw
+LXBhbmUgLmJ1dHRvbi5ib3R0b20gewogIG1hcmdpbjogMjBweCAwcHg7CiAgZGlzcGxheTogYmxvY2s7
+CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgoucmVydW5uaW5nLXBhbmUgewogIGRpc3BsYXk6IG5vbmU7
+Cn0KCmJvZHkucmVydW5uaW5nIC5yZXJ1bm5pbmctcGFuZSB7CiAgZGlzcGxheTogYmxvY2s7CiAgcG9z
+aXRpb246IGZpeGVkOwogIHRvcDogMHB4OwogIGJvdHRvbTogMHB4OwogIGxlZnQ6IDBweDsKICByaWdo
+dDogMHB4OwogIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDBBQTsgLyogdHJhbnNsdWNlbnQgYmxhY2sg
+Ki8KICB6LWluZGV4OiA0MDA7Cn0KCi5yZXJ1bm5pbmctcGFuZSBoMSB7CiAgcG9zaXRpb246IGFic29s
+dXRlOwogIHRvcDogNTAlOwogIGxlZnQ6IDUwJTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAt
+NTAlKTsKfQoKLmVkaXQtcGFuZWwgLnR5cGUtZGVzY3JpcHRpb24gewogIC8qIEZyb20gRGFydFBhZCAk
+ZGFyay1vcmFuZ2UgKi8KICBjb2xvcjogI2ZmOTE2ZTsKICBmb250LWZhbWlseTogbW9ub3NwYWNlOwp9
+Cgp1bC50cmFjZSB7CiAgZm9udC1zaXplOiAxM3B4OwogIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICBw
+YWRkaW5nLWxlZnQ6IDBweDsKfQoKdWwudHJhY2UgbGkgewogIGNvbG9yOiB3aGl0ZTsKfQoKdWwudHJh
+Y2UgbGkgLmZ1bmN0aW9uIHsKICAvKiBmcm9tIC5obGpzLXZhcmlhYmxlICovCiAgY29sb3I6ICMxNmFk
+Y2E7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXdlaWdodDogNjAwOwp9Cgp1bC50cmFj
+ZSBsaSBwLmRyYXdlciB7CiAgbWFyZ2luOiAzcHggMHB4OwogIHBhZGRpbmc6IDBweCAwcHggMHB4IDE0
+cHg7Cn0KCnVsLnRyYWNlIGxpIHAuZHJhd2VyIGJ1dHRvbiB7CiAgbWFyZ2luLXJpZ2h0OiAzcHg7Cn0K
+Ci5lbGV2YXRpb24tejQgewogIGJveC1zaGFkb3c6IDBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAw
+LCAwLjIpLAogICAgICAwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgMHB4
+IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIC4xMik7Cn0KCmEgewogIGNvbG9yOiAjY2NjOwogIGZp
+bGw6ICNjY2M7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgphOmhvdmVyIHsKICBjb2xvcjogI2Ri
+ZGJkYjsgLyogI2NjYyBsaWdodGVudGVkIDMwJSovCiAgZmlsbDogI2ZmZjsKfQoKLmFkZC1oaW50LWxp
+bmsgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW46IDNweDsKfQoKLmFkZC1oaW50LWxp
+bms6aG92ZXIgewogIGNvbG9yOiAjZmZmOwp9CgpoZWFkZXIgYnV0dG9uIHsKICB0ZXh0LXRyYW5zZm9y
+bTogdXBwZXJjYXNlOwp9CgpoZWFkZXIgYSB7CiAgbWFyZ2luOiAwOwp9CgovKiBDYXJlZnVsIGhlcmUu
+IGBhLmJ1dHRvbmAgaXMgcmVwZXRpdGl2ZSBidXQgcmVxdWlyZWQgdG8gZ2V0IGNvcnJlY3QKICogc3Bl
+Y2lmaWNpdHkgKi8KYnV0dG9uLCAuYnV0dG9uLCBhLmJ1dHRvbiB7CiAgYmFja2dyb3VuZC1jb2xvcjog
+cmdiYSgyMiwgMTM4LCAyNTMsIDAuMTUpOwogIGJvcmRlcjogbm9uZTsKICBib3JkZXItcmFkaXVzOiAz
+cHg7CiAgcGFkZGluZzogM3B4IDEwcHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LWZvbnQ6IFJv
+Ym90bywgc2Fucy1zZXJpZjsKICBjb2xvcjogI2ZmZjsKfQoKYnV0dG9uOmhvdmVyLCAuYnV0dG9uOmhv
+dmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIyLCAxMzgsIDI1MywgMC4yOSk7CiAgY3Vyc29y
+OiBwb2ludGVyOwp9CgpidXR0b25bZGlzYWJsZWRdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1
+NSwyNTUsMjU1LC4xMik7CiAgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjM3KTsKICBjdXJzb3I6IG5v
+dC1hbGxvd2VkOwp9CgovKiBDaGFuZ2UgZWRpdCBwYW5lbCBidXR0b24gY29sb3JzICovCi5lZGl0LXBh
+bmVsIC5idXR0b24sIC5lZGl0LXBhbmVsIGJ1dHRvbiB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2
+MywgMTA0LCAxNDgsIDAuNik7CiAgY29sb3I6IHdoaXRlOwp9Ci5lZGl0LXBhbmVsIC5idXR0b246aG92
+ZXIsIC5lZGl0LXBhbmVsIGJ1dHRvbjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDEs
+IDE1MywgMjA4LCAwLjYpOwogIGNvbG9yOiB3aGl0ZTsKfQoKLyoKICogQWRqdXN0bWVudHMgdG8gYWxp
+Z24gbWF0ZXJpYWwgaWNvbnMgaW4gdGhlIHRvb2xiYXIgYnV0dG9ucy4KKi8KLmFjdGlvbi1idXR0b24g
+PiBzcGFuIHsKICBwb3NpdGlvbjpyZWxhdGl2ZTsKICB0b3A6IC0zcHg7Cn0KCi5hY3Rpb24tYnV0dG9u
+IC5tYXRlcmlhbC1pY29ucyB7CiAgdG9wOiA0cHg7Cn0KCi8qIERvbid0IHNoaWZ0IHRoZSBpY29uIHdo
+ZW4gaXQncyBhIGRpcmVjdCBjaGlsZCBvZiB0aGUgYnV0dG9uICovCi5hY3Rpb24tYnV0dG9uID4gLm1h
+dGVyaWFsLWljb25zIHsKICB0b3A6IDFweDsKfQoKLyogU2hpZnQgdGhlIHRleHQgdG8gY2VudGVyIHdp
+dGggdGhlIGljb24uICovCi5hY3Rpb24tYnV0dG9uID4gc3Bhbi5sYWJlbCB7CiAgcG9zaXRpb246cmVs
+YXRpdmU7CiAgdG9wOiAtNHB4Owp9CgouYWN0aW9uLWJ1dHRvbiAubWF0ZXJpYWwtaWNvbnMgewogIGZv
+bnQtc2l6ZTogMjBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5wbGFjZWhvbGRlciB7CiAgY29s
+b3I6ICM3Nzc7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG1hcmdpbi10b3A6IDNlbSAhaW1wb3J0YW50
+Owp9CgovKioKICogSExKUyBPdmVycmlkZXMKICovCi5obGpzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAj
+MTIyMDJmOyAvKiAkZGFyay1jb2RlLWJhY2tncm91bmQtY29sb3IgKi8KICBjb2xvcjogI2MwYzJjNTsg
+LyogJGRhcmstZWRpdG9yLXRleHQgKi8KICBkaXNwbGF5OiBibG9jazsKICBvdmVyZmxvdy14OiBhdXRv
+OwogIHBhZGRpbmc6IDAuNWVtOwogIC8qKgogICAqIFRoaXMgYWxsb3dzIHRoZSBwZXItbGluZSBoaWdo
+bGlnaHRzIHRvIHNob3cuCiAgICovCiAgYmFja2dyb3VuZDogbm9uZTsKfQoKLmhsanMta2V5d29yZCwK
+LmhsanMtc2VsZWN0b3ItdGFnLAouaGxqcy1kZWxldGlvbiB7CiAgY29sb3I6ICM1MWM2ODY7IC8qIGNt
+LWtleXdvcmQgKi8KfQoKLmhsanMtbnVtYmVyIHsKICBjb2xvcjogIzYyNzk3ODsgLyogY20tbnVtYmVy
+ICovCn0KCi5obGpzLWNvbW1lbnQgewogIGNvbG9yOiAjOTE5OGI0OyAvKiBjbS1jb21tZW50ICovCn0K
+Ci5obGpzLWxpdGVyYWwgewogIGNvbG9yOiAjZWU4NjY2OyAvKiBjbS1hdG9tICovCn0KCi5obGpzLXN0
+cmluZyB7CiAgY29sb3I6ICNlNTUwNzQ7IC8qIGNtLXN0cmluZyAqLwp9CgouaGxqcy12YXJpYWJsZSB7
+CiAgY29sb3I6ICMxNmFkY2E7IC8qIGNtLXZhcmlhYmxlICovCn0KCi5obGpzLWxpbmsgewogIGNvbG9y
+OiAjZTU1MDc0OyAvKiBjbS1zdHJpbmcgKi8KfQouaGxqcy1zZWN0aW9uLAouaGxqcy10eXBlLAouaGxq
+cy1idWlsdF9pbiwKLmhsanMtdGl0bGUgewogIGNvbG9yOiAjZWU4NjY2OyAvKiBjbS12YXJpYWJsZS0y
+ICovCn0KCi5obGpzLWFkZGl0aW9uIHsKICBjb2xvcjogIzI2Mzk1MjsgLyogJGRhcmstc2VsZWN0aW9u
+LWNvbG9yICovCn0KCi5obGpzLW1ldGEgewogIGNvbG9yOiAjNjI3OTc4Owp9Cg==
''';
String _migration_js;
diff --git a/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart b/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart
index 2bbf22f..414de09 100644
--- a/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart
@@ -38,7 +38,7 @@
}
List events = result['traceEvents'];
- expect(events.length, greaterThan(10), reason: "Should have many samples");
+ expect(events.length, greaterThan(0), reason: "Should have samples");
for (Map event in events) {
expect(event['ph'], equals('P'));
expect(event['pid'], isInt);
diff --git a/runtime/observatory_2/tests/service_2/get_cpu_profile_timeline_rpc_test.dart b/runtime/observatory_2/tests/service_2/get_cpu_profile_timeline_rpc_test.dart
index 40db79e..e5d578b 100644
--- a/runtime/observatory_2/tests/service_2/get_cpu_profile_timeline_rpc_test.dart
+++ b/runtime/observatory_2/tests/service_2/get_cpu_profile_timeline_rpc_test.dart
@@ -38,7 +38,7 @@
}
List events = result['traceEvents'];
- expect(events.length, greaterThan(10), reason: "Should have many samples");
+ expect(events.length, greaterThan(0), reason: "Should have samples");
for (Map event in events) {
expect(event['ph'], equals('P'));
expect(event['pid'], isInt);
diff --git a/runtime/tests/vm/dart/regress_43810_test.dart b/runtime/tests/vm/dart/regress_43810_test.dart
new file mode 100644
index 0000000..49691f1
--- /dev/null
+++ b/runtime/tests/vm/dart/regress_43810_test.dart
@@ -0,0 +1,22 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Verifies that intrinsic Float64List.[]= works even if parameters are
+// unboxed.
+// Regression test for https://github.com/dart-lang/sdk/issues/43810.
+
+import 'dart:typed_data';
+import 'package:expect/expect.dart';
+
+main() {
+ final list1 = <double>[
+ 1, 2, 3, 4,
+ ];
+ var list = new Float64List(list1.length);
+ list.setRange(0, list1.length, list1);
+ Expect.equals(1.0, list[0]);
+ Expect.equals(2.0, list[1]);
+ Expect.equals(3.0, list[2]);
+ Expect.equals(4.0, list[3]);
+}
diff --git a/runtime/vm/compiler/graph_intrinsifier.cc b/runtime/vm/compiler/graph_intrinsifier.cc
index 3f77aa2..45595ce 100644
--- a/runtime/vm/compiler/graph_intrinsifier.cc
+++ b/runtime/vm/compiler/graph_intrinsifier.cc
@@ -180,6 +180,19 @@
return safe_index;
}
+static Definition* CreateBoxedParameterIfNeeded(BlockBuilder* builder,
+ Definition* value,
+ Representation representation,
+ intptr_t arg_index) {
+ const auto& function = builder->function();
+ if (function.is_unboxed_parameter_at(arg_index)) {
+ return builder->AddDefinition(
+ BoxInstr::Create(representation, new Value(value)));
+ } else {
+ return value;
+ }
+}
+
static Definition* CreateBoxedResultIfNeeded(BlockBuilder* builder,
Definition* value,
Representation representation) {
@@ -212,6 +225,7 @@
Definition* array = builder.AddParameter(0, /*with_frame=*/false);
Definition* index = builder.AddParameter(1, /*with_frame=*/false);
+ index = CreateBoxedParameterIfNeeded(&builder, index, kUnboxedInt64, 1);
index = PrepareIndexedOp(flow_graph, &builder, array, index,
Slot::GetLengthFieldForArrayCid(array_cid));
@@ -314,6 +328,7 @@
Definition* index = builder.AddParameter(1, /*with_frame=*/false);
Definition* value = builder.AddParameter(2, /*with_frame=*/false);
+ index = CreateBoxedParameterIfNeeded(&builder, index, kUnboxedInt64, 1);
index = PrepareIndexedOp(flow_graph, &builder, array, index,
Slot::GetLengthFieldForArrayCid(array_cid));
diff --git a/tools/VERSION b/tools/VERSION
index 354a040..d349282 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 11
PATCH 0
-PRERELEASE 229
+PRERELEASE 230
PRERELEASE_PATCH 0
\ No newline at end of file