Augment. Rename ExecutableFragmentImpl.isCompleteDeclaration to isComplete.

Change-Id: I47d70e93da6e16e4019d61cf62533aba7818b7c7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/509140
Reviewed-by: Paul Berry <paulberry@google.com>
This commit is contained in:
Konstantin Shcheglov
2026-06-03 18:05:12 -07:00
parent d54a54d976
commit 9c69609406
10 changed files with 65 additions and 76 deletions
@@ -51,7 +51,7 @@ class _UnitApiSignatureComputer {
declaration.beginToken,
functionExpression.parameters?.endToken ?? declaration.name,
);
signature.addBool(declaration.isCompleteDeclaration);
signature.addBool(declaration.isComplete);
_addFunctionBodyModifiers(functionExpression.body);
} else if (declaration is MixinDeclarationImpl) {
_addMixin(declaration);
@@ -93,7 +93,7 @@ class _UnitApiSignatureComputer {
_addTokens(node.beginToken, node.parameters.endToken);
_addNodeList(node.initializers);
_addNode(node.redirectedConstructor);
signature.addBool(node.isCompleteDeclaration);
signature.addBool(node.isComplete);
}
void _addEnum(EnumDeclarationImpl node) {
@@ -144,7 +144,7 @@ class _UnitApiSignatureComputer {
void _addMethodDeclaration(MethodDeclarationImpl node) {
signature.addInt(_kindMethodDeclaration);
_addTokens(node.beginToken, node.parameters?.endToken ?? node.name);
signature.addBool(node.isCompleteDeclaration);
signature.addBool(node.isComplete);
_addFunctionBodyModifiers(node.body);
signature.addBool(node.invokesSuperSelf);
}
+3 -3
View File
@@ -7087,7 +7087,7 @@ final class ConstructorDeclarationImpl extends ClassMemberImpl
return parameters.beginToken;
}
bool get isCompleteDeclaration {
bool get isComplete {
if (externalKeyword != null) return true;
if (body is! EmptyFunctionBody) return true;
if (redirectedConstructor != null || initializers.isNotEmpty) return true;
@@ -15317,7 +15317,7 @@ final class FunctionDeclarationImpl extends CompilationUnitMemberImpl
_functionExpression = _becomeParentOf(functionExpression);
}
bool get isCompleteDeclaration {
bool get isComplete {
return externalKeyword != null ||
functionExpression.body is! EmptyFunctionBody;
}
@@ -22073,7 +22073,7 @@ final class MethodDeclarationImpl extends ClassMemberImpl
(body is EmptyFunctionBodyImpl && !body.semicolon.isSynthetic);
}
bool get isCompleteDeclaration {
bool get isComplete {
return externalKeyword != null || body is! EmptyFunctionBody;
}
+9 -11
View File
@@ -4468,13 +4468,11 @@ abstract class FragmentImpl implements Fragment {
return current;
}
@generated
@visibleForTesting
@trackedInternal
Map<String, bool> get flagsForTesting {
return {
'isAugmentation': isAugmentation,
'isComplete': isCompleteDeclaration,
};
return {'isAugmentation': isAugmentation, 'isComplete': isComplete};
}
/// The fragments in the augmentation chain that follow this fragment,
@@ -4501,13 +4499,13 @@ abstract class FragmentImpl implements Fragment {
}
@generated
bool get isCompleteDeclaration {
return hasFlag(_FragmentStorageFlag.fragment_isCompleteDeclaration);
bool get isComplete {
return hasFlag(_FragmentStorageFlag.fragment_isComplete);
}
@generated
set isCompleteDeclaration(bool value) {
setFlag(_FragmentStorageFlag.fragment_isCompleteDeclaration, value);
set isComplete(bool value) {
setFlag(_FragmentStorageFlag.fragment_isComplete, value);
}
/// Whether the element is private.
@@ -4549,7 +4547,7 @@ abstract class FragmentImpl implements Fragment {
/// The nearest preceding fragment in the augmentation chain that is complete.
FragmentImpl? get nearestPrecedingCompleteFragment {
return precedingFragments.firstWhereOrNull((fragment) {
return fragment.isCompleteDeclaration;
return fragment.isComplete;
});
}
@@ -12070,7 +12068,7 @@ enum _FormalParameterElementFlags {
enum _FragmentFlags {
isAugmentation(fragment: true),
isCompleteDeclaration(fragment: true);
isComplete(fragment: true);
final bool fragment;
final _ElementFlagSource element;
@@ -12115,7 +12113,7 @@ enum _FragmentStorageFlag {
formalParameterFragment_isOriginMixinApplicationClassConstructor,
formalParameterFragment_isOriginOtherFragmentOfEnclosing,
fragment_isAugmentation,
fragment_isCompleteDeclaration,
fragment_isComplete,
libraryFragment_isOriginNotExistingFile,
methodFragment_isOriginDeclaration,
methodFragment_isOriginInterface,
@@ -340,7 +340,7 @@ class ElementBindingVisitor extends RecursiveAstVisitor<void> {
fragment.isExternal = true;
}
fragment.isCompleteDeclaration = node.isCompleteDeclaration;
fragment.isComplete = node.isComplete;
fragment.isAsynchronous = body.isAsynchronous;
fragment.isGenerator = body.isGenerator;
if (node.returnType == null) {
@@ -671,7 +671,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
_checkAugmentationWithoutDeclaration(node.augmentKeyword, fragment);
if (fragment.isAugmentation && fragment.isCompleteDeclaration) {
if (fragment.isAugmentation && fragment.isComplete) {
var precedingComplete = fragment.nearestPrecedingCompleteFragment;
if (precedingComplete != null) {
diagnosticReporter.report(
@@ -2748,7 +2748,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
required PropertyInducingFragmentImpl fragment,
}) {
if (fragment.inducedGetter case var inducedGetter?) {
if (inducedGetter.isCompleteDeclaration) {
if (inducedGetter.isComplete) {
var precedingComplete = inducedGetter.nearestPrecedingCompleteFragment;
if (precedingComplete != null) {
diagnosticReporter.report(
@@ -2765,7 +2765,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
}
if (fragment.inducedSetter case var inducedSetter?) {
if (inducedSetter.isCompleteDeclaration) {
if (inducedSetter.isComplete) {
var precedingComplete = inducedSetter.nearestPrecedingCompleteFragment;
if (precedingComplete != null) {
diagnosticReporter.report(
@@ -4704,7 +4704,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
}
var element = node.declaredFragment!.element;
if (element.fragments.any((f) => f.isCompleteDeclaration)) {
if (element.fragments.any((f) => f.isComplete)) {
return;
}
@@ -4851,7 +4851,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
required Token? augmentKeyword,
required FragmentImpl fragment,
}) {
if (augmentKeyword != null && fragment.isCompleteDeclaration) {
if (augmentKeyword != null && fragment.isComplete) {
var precedingComplete = fragment.nearestPrecedingCompleteFragment;
if (precedingComplete != null) {
diagnosticReporter.report(
@@ -4898,7 +4898,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
return;
}
if (element.fragments.any((f) => f.isCompleteDeclaration)) {
if (element.fragments.any((f) => f.isComplete)) {
return;
}
@@ -5045,7 +5045,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
(setter?.element.fragments.length ?? 0) > 1;
if (getter != null) {
if (getter.element.fragments.none((f) => f.isCompleteDeclaration)) {
if (getter.element.fragments.none((f) => f.isComplete)) {
var diagnostic = hasAugmentations
? diag.inducedGetterNotCompleteAfterAugmentations
: diag.inducedGetterWithoutBody;
@@ -5056,7 +5056,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
}
if (setter != null) {
if (setter.element.fragments.none((f) => f.isCompleteDeclaration)) {
if (setter.element.fragments.none((f) => f.isComplete)) {
var diagnostic = hasAugmentations
? diag.inducedSetterNotCompleteAfterAugmentations
: diag.inducedSetterWithoutBody;
@@ -461,7 +461,7 @@ class ElementBuilder {
..isOriginVariable = true
..isAbstract = fieldFragment.isAbstract
..isAugmentation = fieldFragment.isAugmentation
..isCompleteDeclaration = !fieldFragment.isAbstract
..isComplete = !fieldFragment.isAbstract
..isStatic = fieldFragment.isStatic;
fieldFragment.inducedGetter = getterFragment;
instanceFragment.addGetter(getterFragment);
@@ -491,7 +491,7 @@ class ElementBuilder {
..isOriginVariable = true
..isAbstract = fieldFragment.isAbstract
..isAugmentation = fieldFragment.isAugmentation
..isCompleteDeclaration = !fieldFragment.isAbstract
..isComplete = !fieldFragment.isAbstract
..isStatic = fieldFragment.isStatic;
fieldFragment.inducedSetter = setterFragment;
instanceFragment.addSetter(setterFragment);
@@ -918,7 +918,7 @@ class ElementBuilder {
..isOriginVariable = true
..isAbstract = variableFragment.isAbstract
..isAugmentation = variableFragment.isAugmentation
..isCompleteDeclaration =
..isComplete =
variableFragment.isExternal || !variableFragment.isAbstract
..isStatic = true;
variableFragment.inducedGetter = getterFragment;
@@ -948,7 +948,7 @@ class ElementBuilder {
..isOriginVariable = true
..isAbstract = variableFragment.isAbstract
..isAugmentation = variableFragment.isAugmentation
..isCompleteDeclaration =
..isComplete =
variableFragment.isExternal || !variableFragment.isAbstract
..isStatic = true;
variableFragment.inducedSetter = setterFragment;
@@ -1404,7 +1404,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
fragment.isConst = node.constKeyword != null;
fragment.isExternal = node.externalKeyword != null;
fragment.isFactory = node.factoryKeyword != null;
fragment.isCompleteDeclaration = node.isCompleteDeclaration;
fragment.isComplete = node.isComplete;
fragment.metadata = _buildMetadata(node.metadata);
fragment.typeName = node.typeName?.name;
@@ -1813,7 +1813,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
executableFragment.isAsynchronous = body.isAsynchronous;
executableFragment.isExternal = node.externalKeyword != null;
executableFragment.isGenerator = body.isGenerator;
executableFragment.isCompleteDeclaration = node.isCompleteDeclaration;
executableFragment.isComplete = node.isComplete;
executableFragment.metadata = _buildMetadata(node.metadata);
node.declaredFragment = executableFragment;
@@ -1955,7 +1955,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
executableFragment.isExternal =
node.externalKeyword != null || node.body is NativeFunctionBody;
executableFragment.isGenerator = node.body.isGenerator;
executableFragment.isCompleteDeclaration = node.isCompleteDeclaration;
executableFragment.isComplete = node.isComplete;
executableFragment.metadata = _buildMetadata(node.metadata);
node.declaredFragment = executableFragment;
@@ -2048,7 +2048,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
fragment.isConst =
node.constKeyword != null || parent is EnumDeclarationImpl;
fragment.isPrimary = true;
fragment.isCompleteDeclaration = true;
fragment.isComplete = true;
fragment.typeName = node.typeName.lexeme;
node.declaredFragment = fragment;
@@ -18674,7 +18674,7 @@ library
''');
}
test_constructor_secondary_augmentation_chain_isCompleteDeclaration_factory() async {
test_constructor_secondary_augmentation_chain_isComplete_factory() async {
var library = await buildLibrary(r'''
class A {
factory A();
@@ -18738,7 +18738,7 @@ library
''');
}
test_constructor_secondary_augmentation_chain_isCompleteDeclaration_generative() async {
test_constructor_secondary_augmentation_chain_isComplete_generative() async {
var library = await buildLibrary(r'''
class A {
A();
@@ -34646,7 +34646,7 @@ library
''');
}
test_getter_augmentation_chain_isCompleteDeclaration_instance() async {
test_getter_augmentation_chain_isComplete_instance() async {
var library = await buildLibrary(r'''
class A {
int get foo;
@@ -35867,7 +35867,7 @@ library
''');
}
test_getter_static_augmentation_chain_isCompleteDeclaration() async {
test_getter_static_augmentation_chain_isComplete() async {
var library = await buildLibrary(r'''
class A {
static int get foo;
@@ -36751,7 +36751,7 @@ library
''');
}
test_isCompleteDeclaration_constructor_complete() async {
test_isComplete_constructor_complete() async {
var library = await buildLibrary(r'''
class A {
A();
@@ -36761,10 +36761,10 @@ class A {
var classA = library.classes.singleWhere((e) => e.name == 'A');
var constructor = classA.constructors.single;
expect(constructor.firstFragment.isCompleteDeclaration, isFalse);
expect(constructor.firstFragment.isComplete, isFalse);
}
test_isCompleteDeclaration_method_complete() async {
test_isComplete_method_complete() async {
var library = await buildLibrary(r'''
class A {
static void foo() {}
@@ -36774,7 +36774,7 @@ class A {
var classA = library.classes.singleWhere((e) => e.name == 'A');
var method = classA.methods.singleWhere((e) => e.name == 'foo');
expect(method.firstFragment.isCompleteDeclaration, isTrue);
expect(method.firstFragment.isComplete, isTrue);
}
test_method_abstract() async {
@@ -40784,7 +40784,7 @@ library
''');
}
test_method_augmentation_chain_isCompleteDeclaration_instance() async {
test_method_augmentation_chain_isComplete_instance() async {
var library = await buildLibrary(r'''
class A {
void foo();
@@ -43235,7 +43235,7 @@ library
''');
}
test_method_static_augmentation_chain_isCompleteDeclaration() async {
test_method_static_augmentation_chain_isComplete() async {
var library = await buildLibrary(r'''
class A {
static void foo();
@@ -45289,7 +45289,7 @@ library
''');
}
test_setter_augmentation_chain_isCompleteDeclaration_instance() async {
test_setter_augmentation_chain_isComplete_instance() async {
var library = await buildLibrary(r'''
class A {
set foo(int _);
@@ -47289,7 +47289,7 @@ library
''');
}
test_setter_static_augmentation_chain_isCompleteDeclaration() async {
test_setter_static_augmentation_chain_isComplete() async {
var library = await buildLibrary(r'''
class A {
static set foo(int _);
@@ -7413,7 +7413,7 @@ library
''');
}
test_constructor_secondary_augmentation_chain_isCompleteDeclaration_factory() async {
test_constructor_secondary_augmentation_chain_isComplete_factory() async {
var library = await buildLibrary(r'''
enum A {
v;
@@ -5321,7 +5321,7 @@ library
''');
}
test_constructor_secondary_augmentation_chain_isCompleteDeclaration_factory() async {
test_constructor_secondary_augmentation_chain_isComplete_factory() async {
var library = await buildLibrary(r'''
extension type A(int it) {
factory A();
+19 -28
View File
@@ -155,35 +155,26 @@ class _ElementGenerator {
var existingGetters = <String, _ExistingGeneratedGetter>{};
var body = declaration.body as BlockClassBodyImpl;
var isFlagsForTestingGenerated = true;
for (var member in body.members) {
if (member is MethodDeclarationImpl) {
if (member.isGetter &&
member.name.lexeme == 'flagsForTesting' &&
!member.isGenerated) {
isFlagsForTestingGenerated = false;
}
if (member.isGenerated) {
replacements.add(
_Replacement(offset: member.offset, end: member.end, text: ''),
if (member is MethodDeclarationImpl && member.isGenerated) {
replacements.add(
_Replacement(offset: member.offset, end: member.end, text: ''),
);
if (member.isGetter) {
var getterElement = member.declaredFragment!.element;
var getterName = getterElement.name!;
existingGetters[getterName] = _ExistingGeneratedGetter(
documentationComment: getterElement.documentationComment,
annotations: member.metadata
.map((annotation) {
return unitResult.content.substring(
annotation.offset,
annotation.end,
);
})
.where((source) => source != '@generated')
.toList(),
);
if (member.isGetter) {
var getterElement = member.declaredFragment!.element;
var getterName = getterElement.name!;
existingGetters[getterName] = _ExistingGeneratedGetter(
documentationComment: getterElement.documentationComment,
annotations: member.metadata
.map((annotation) {
return unitResult.content.substring(
annotation.offset,
annotation.end,
);
})
.where((source) => source != '@generated')
.toList(),
);
}
}
}
}
@@ -257,7 +248,7 @@ class _ElementGenerator {
: flag.elementSource != _ElementFlagSource.none;
}).toList();
if (flagsForTesting.isNotEmpty && isFlagsForTestingGenerated) {
if (flagsForTesting.isNotEmpty) {
buffer.writeln();
buffer.writeln('@generated');
if (className != 'ElementImpl' && className != 'FragmentImpl') {