mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:31:57 +00:00
Handle Tag.MemberLegacyWithoutTypeArguments, don't write empty type arguments.
Change-Id: I838a046a4dfa7744528e85ceae90efe0403b1ef6 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/274261 Reviewed-by: Samuel Rawlins <srawlins@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
parent
66f1dee48c
commit
fe968d979e
|
@ -85,7 +85,7 @@ import 'package:analyzer/src/util/performance/operation_performance.dart';
|
|||
/// 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 = 251;
|
||||
static const int DATA_VERSION = 252;
|
||||
|
||||
/// The number of exception contexts allowed to write. Once this field is
|
||||
/// zero, we stop writing any new exception contexts in this process.
|
||||
|
|
|
@ -1634,19 +1634,16 @@ class ResolutionReader {
|
|||
|
||||
if (memberFlags == Tag.MemberLegacyWithTypeArguments ||
|
||||
memberFlags == Tag.MemberWithTypeArguments) {
|
||||
var arguments = _readTypeList();
|
||||
// TODO(scheglov) why to check for empty? If we have this flags.
|
||||
if (arguments.isNotEmpty) {
|
||||
var typeParameters =
|
||||
(element.enclosingElement as TypeParameterizedElement)
|
||||
.typeParameters;
|
||||
var substitution = Substitution.fromPairs(typeParameters, arguments);
|
||||
element =
|
||||
ExecutableMember.from2(element as ExecutableElement, substitution);
|
||||
}
|
||||
element as ExecutableElement;
|
||||
var enclosing = element.enclosingElement as TypeParameterizedElement;
|
||||
var typeParameters = enclosing.typeParameters;
|
||||
var typeArguments = _readTypeList();
|
||||
var substitution = Substitution.fromPairs(typeParameters, typeArguments);
|
||||
element = ExecutableMember.from2(element, substitution);
|
||||
}
|
||||
|
||||
if (memberFlags == Tag.MemberLegacyWithTypeArguments) {
|
||||
if (memberFlags == Tag.MemberLegacyWithoutTypeArguments ||
|
||||
memberFlags == Tag.MemberLegacyWithTypeArguments) {
|
||||
return Member.legacy(element);
|
||||
}
|
||||
|
||||
|
|
|
@ -598,14 +598,20 @@ class ResolutionSink extends _SummaryDataWriter {
|
|||
element.substitution.map,
|
||||
);
|
||||
|
||||
writeByte(
|
||||
isLegacy
|
||||
? Tag.MemberLegacyWithTypeArguments
|
||||
: Tag.MemberWithTypeArguments,
|
||||
);
|
||||
|
||||
_writeElement(declaration);
|
||||
_writeTypeList(typeArguments);
|
||||
if (isLegacy) {
|
||||
if (typeArguments.isEmpty) {
|
||||
writeByte(Tag.MemberLegacyWithoutTypeArguments);
|
||||
_writeElement(declaration);
|
||||
} else {
|
||||
writeByte(Tag.MemberLegacyWithTypeArguments);
|
||||
_writeElement(declaration);
|
||||
_writeTypeList(typeArguments);
|
||||
}
|
||||
} else {
|
||||
writeByte(Tag.MemberWithTypeArguments);
|
||||
_writeElement(declaration);
|
||||
_writeTypeList(typeArguments);
|
||||
}
|
||||
} else {
|
||||
writeByte(Tag.RawElement);
|
||||
_writeElement(element);
|
||||
|
|
Loading…
Reference in a new issue