Skip to content

Commit 5ac8423

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Move aliasedType into TypeAliasElementImpl.
Change-Id: Ic4882ff7cf0960b09b68f6a062acacd0e9e7c061 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/440062 Reviewed-by: Samuel Rawlins <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent f8d6ad7 commit 5ac8423

File tree

7 files changed

+37
-37
lines changed

7 files changed

+37
-37
lines changed

pkg/analyzer/lib/src/dart/analysis/driver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ testFineAfterLibraryAnalyzerHook;
109109
// TODO(scheglov): Clean up the list of implicitly analyzed files.
110110
class AnalysisDriver {
111111
/// The version of data format, should be incremented on every format change.
112-
static const int DATA_VERSION = 504;
112+
static const int DATA_VERSION = 505;
113113

114114
/// The number of exception contexts allowed to write. Once this field is
115115
/// zero, we stop writing any new exception contexts in this process.

pkg/analyzer/lib/src/dart/element/display_string_builder.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ class ElementDisplayStringBuilder {
371371
if (aliasedElement != null) {
372372
aliasedElement.appendTo(this);
373373
} else {
374-
_writeType(element.aliasedType);
374+
_writeType(element.element.aliasedType);
375375
}
376376
}
377377

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9648,6 +9648,8 @@ class TypeAliasElementImpl extends TypeDefiningElementImpl
96489648
@override
96499649
final TypeAliasFragmentImpl firstFragment;
96509650

9651+
TypeImpl? _aliasedType;
9652+
96519653
TypeAliasElementImpl(this.reference, this.firstFragment) {
96529654
reference.element = this;
96539655
firstFragment.element = this;
@@ -9671,14 +9673,19 @@ class TypeAliasElementImpl extends TypeDefiningElementImpl
96719673
}
96729674

96739675
@override
9674-
TypeImpl get aliasedType => firstFragment.aliasedType;
9676+
TypeImpl get aliasedType {
9677+
_ensureReadResolution();
9678+
return _aliasedType!;
9679+
}
96759680

9676-
set aliasedType(TypeImpl value) {
9677-
firstFragment.aliasedType = value;
9681+
set aliasedType(DartType rawType) {
9682+
// TODO(paulberry): eliminate this cast by changing the type of the
9683+
// `rawType` parameter.
9684+
_aliasedType = rawType as TypeImpl;
96789685
}
96799686

96809687
/// The aliased type, might be `null` if not yet linked.
9681-
TypeImpl? get aliasedTypeRaw => firstFragment.aliasedTypeRaw;
9688+
TypeImpl? get aliasedTypeRaw => _aliasedType;
96829689

96839690
@override
96849691
TypeAliasElementImpl get baseElement => this;
@@ -9889,7 +9896,6 @@ class TypeAliasFragmentImpl extends _ExistingFragmentImpl
98899896
bool isFunctionTypeAliasBased = false;
98909897

98919898
FragmentImpl? _aliasedElement;
9892-
TypeImpl? _aliasedType;
98939899

98949900
@override
98959901
late TypeAliasElementImpl element;
@@ -9914,25 +9920,6 @@ class TypeAliasFragmentImpl extends _ExistingFragmentImpl
99149920
return _aliasedElement;
99159921
}
99169922

9917-
/// The aliased type.
9918-
///
9919-
/// If non-function type aliases feature is enabled for the enclosing library,
9920-
/// this type might be just anything. If the feature is disabled, return
9921-
/// a [FunctionType].
9922-
TypeImpl get aliasedType {
9923-
_ensureReadResolution();
9924-
return _aliasedType!;
9925-
}
9926-
9927-
set aliasedType(DartType rawType) {
9928-
// TODO(paulberry): eliminate this cast by changing the type of the
9929-
// `rawType` parameter.
9930-
_aliasedType = rawType as TypeImpl;
9931-
}
9932-
9933-
/// The aliased type, might be `null` if not yet linked.
9934-
TypeImpl? get aliasedTypeRaw => _aliasedType;
9935-
99369923
@override
99379924
List<Fragment> get children => const [];
99389925

pkg/analyzer/lib/src/summary2/bundle_reader.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1301,8 +1301,16 @@ class LibraryReader {
13011301
_libraryElement.typeAliases = _reader.readTypedList(() {
13021302
var reference = _readReference();
13031303
var fragments = _readFragmentsById<TypeAliasFragmentImpl>();
1304-
// TODO(scheglov): link fragments.
13051304
var element = TypeAliasElementImpl(reference, fragments.first);
1305+
1306+
element.deferReadResolution(
1307+
_createDeferredReadResolutionCallback((reader) {
1308+
// TODO(scheglov): remove cast
1309+
reader._addTypeParameters2(element.typeParameters.cast());
1310+
element.aliasedType = reader.readRequiredType();
1311+
}),
1312+
);
1313+
13061314
return element;
13071315
});
13081316
}
@@ -1331,7 +1339,6 @@ class LibraryReader {
13311339
);
13321340
_readFragmentMetadata(fragment, reader);
13331341
fragment.aliasedElement = reader._readAliasedElement(unitElement);
1334-
fragment.aliasedType = reader.readRequiredType();
13351342
},
13361343
);
13371344
});

pkg/analyzer/lib/src/summary2/bundle_writer.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -744,7 +744,12 @@ class BundleWriter {
744744
_sink.writeList(elements, (element) {
745745
_writeReference(element.reference);
746746
_sink.writeList(element.fragments, _writeFragmentId);
747-
// TODO(scheglov): resolution too?
747+
748+
_writeElementResolution(() {
749+
_resolutionSink.withTypeParameters(element.typeParameters.cast(), () {
750+
_resolutionSink.writeType(element.aliasedType);
751+
});
752+
});
748753
});
749754
}
750755

@@ -754,7 +759,6 @@ class BundleWriter {
754759
_writeTypeParameters(fragment.typeParameters, () {
755760
_resolutionSink._writeMetadata(fragment.metadata);
756761
_resolutionSink._writeAliasedElement(fragment.aliasedElement);
757-
_resolutionSink.writeType(fragment.aliasedType);
758762
});
759763
});
760764
}

pkg/analyzer/lib/src/summary2/types_builder.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ class TypesBuilder {
343343
var fragment = node.declaredFragment!;
344344
var function = fragment.aliasedElement as GenericFunctionTypeFragmentImpl;
345345
function.returnType = node.returnType?.type ?? _dynamicType;
346-
fragment.aliasedType = function.type;
346+
fragment.element.aliasedType = function.type;
347347
}
348348

349349
void _functionTypedFormalParameter(FunctionTypedFormalParameterImpl node) {
@@ -364,15 +364,16 @@ class TypesBuilder {
364364

365365
void _genericTypeAlias(GenericTypeAliasImpl node) {
366366
var fragment = node.declaredFragment!;
367-
var featureSet = fragment.library.featureSet;
367+
var element = fragment.element;
368+
var featureSet = element.library.featureSet;
368369

369370
var typeNode = node.type;
370371
if (featureSet.isEnabled(Feature.nonfunction_type_aliases)) {
371-
fragment.aliasedType = typeNode.typeOrThrow;
372+
element.aliasedType = typeNode.typeOrThrow;
372373
} else if (typeNode is GenericFunctionType) {
373-
fragment.aliasedType = typeNode.typeOrThrow;
374+
element.aliasedType = typeNode.typeOrThrow;
374375
} else {
375-
fragment.aliasedType = _errorFunctionType();
376+
element.aliasedType = _errorFunctionType();
376377
}
377378
}
378379

pkg/analyzer/test/generated/elements_types_mixin.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -659,9 +659,10 @@ mixin ElementsTypesMixin {
659659
var fragment = TypeAliasFragmentImpl(name: name, firstTokenOffset: null);
660660
fragment.enclosingElement = testLibrary.definingCompilationUnit;
661661
fragment.typeParameters = typeParameters.map((e) => e.asElement).toList();
662-
fragment.aliasedType = aliasedType;
663662

664-
return TypeAliasElementImpl(Reference.root(), fragment);
663+
var element = TypeAliasElementImpl(Reference.root(), fragment);
664+
element.aliasedType = aliasedType;
665+
return element;
665666
}
666667

667668
TypeImpl typeAliasTypeNone(

0 commit comments

Comments
 (0)