Skip to content

Commit a135929

Browse files
scheglovCommit Queue
authored andcommitted
DeCo. Stop using isSynthetic in analysis_server/, analyzer_plugin/, linter/.
Change-Id: I0764ad0bde41d97a98d9eb5b088b50b4eb69155f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/465982 Reviewed-by: Samuel Rawlins <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 4b9a6a0 commit a135929

File tree

18 files changed

+165
-89
lines changed

18 files changed

+165
-89
lines changed

pkg/analysis_server/lib/src/computer/computer_call_hierarchy.dart

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class CallHierarchyItem {
121121
static SourceRange _codeRangeForElement(Element element) {
122122
// For synthetic items (like implicit constructors), use the nonSynthetic
123123
// element for the location.
124-
element = _nonSynthetic(element);
124+
element = element.nonSynthetic;
125125
var fragment = element.firstFragment as FragmentImpl;
126126

127127
// Non-synthetic elements should always have code locations.
@@ -134,7 +134,7 @@ class CallHierarchyItem {
134134
static SourceRange _nameRangeForElement(Element element) {
135135
// For synthetic items (like implicit constructors), use the nonSynthetic
136136
// element for the location.
137-
element = _nonSynthetic(element);
137+
element = element.nonSynthetic;
138138
var fragment = element.firstFragment as FragmentImpl;
139139

140140
var nameOffset = fragment.nameOffset;
@@ -154,14 +154,6 @@ class CallHierarchyItem {
154154

155155
return SourceRange(0, 0);
156156
}
157-
158-
static Element _nonSynthetic(Element element) {
159-
element = element.nonSynthetic;
160-
if (element.isSynthetic) {
161-
element = element.enclosingElement ?? element;
162-
}
163-
return element;
164-
}
165157
}
166158

167159
/// Kinds of [CallHierarchyItem] that can make calls to other

pkg/analysis_server/lib/src/domains/analysis/implemented_dart.dart

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class ImplementedComputer {
5353
}
5454

5555
void _addMemberIfImplemented(Element element) {
56-
if (element.isSynthetic || _isStatic(element)) {
56+
if (_isStatic(element)) {
5757
return;
5858
}
5959
if (_hasOverride(element)) {
@@ -76,9 +76,15 @@ class ImplementedComputer {
7676
subtypeMembers = await searchEngine.membersOfSubtypes(element);
7777
if (subtypeMembers != null) {
7878
_addImplementedClass(element);
79-
element.getters.forEach(_addMemberIfImplemented);
80-
element.setters.forEach(_addMemberIfImplemented);
81-
element.fields.forEach(_addMemberIfImplemented);
79+
element.getters
80+
.where((e) => e.isOriginDeclaration)
81+
.forEach(_addMemberIfImplemented);
82+
element.setters
83+
.where((e) => e.isOriginDeclaration)
84+
.forEach(_addMemberIfImplemented);
85+
element.fields
86+
.where((e) => e.isOriginDeclaration)
87+
.forEach(_addMemberIfImplemented);
8288
element.methods.forEach(_addMemberIfImplemented);
8389
}
8490
}

pkg/analysis_server/lib/src/lsp/handlers/custom/handler_summary.dart

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,20 @@ class SummaryWriter {
8080
// Write a summary of the declarations in the export namespace.
8181
var definedNames = libraryElement.exportNamespace.definedNames2;
8282
var needsSeparator = false;
83+
var uniqueElements = <Element>{};
8384
for (var element in definedNames.values) {
84-
if (element.isSynthetic) {
85-
if (element is GetterElement) {
86-
element = element.variable;
87-
} else if (element is SetterElement &&
88-
element.correspondingGetter == null) {
89-
element = element.variable;
90-
} else {
91-
continue;
92-
}
85+
switch (element) {
86+
case PropertyAccessorElement():
87+
if (element.isOriginVariable) {
88+
element = element.variable;
89+
}
90+
case PropertyInducingElement():
91+
if (element.isOriginGetterSetter) {
92+
continue;
93+
}
94+
}
95+
if (!uniqueElements.add(element)) {
96+
continue;
9397
}
9498
if (needsSeparator) {
9599
buffer.writeln();

pkg/analysis_server/lib/src/lsp/mapping.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -523,8 +523,8 @@ lsp.Location? fragmentToLocation(
523523
int? nameOffset;
524524
int? nameLength;
525525
if (fragment case PropertyAccessorFragmentImpl(
526-
:var isSynthetic,
527-
) when isSynthetic) {
526+
:var isOriginDeclaration,
527+
) when !isOriginDeclaration) {
528528
var element = fragment.element.nonSynthetic;
529529
nameOffset = element.firstFragment.nameOffset;
530530
nameLength = element.firstFragment.name?.length;

pkg/analysis_server/lib/src/services/correction/executable_parameters.dart

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,25 @@ class ExecutableParameters {
8686
} else if (invocation is ConstructorReferenceNode) {
8787
element = invocation.element;
8888
}
89-
var firstFragment = element?.firstFragment;
90-
if (element is ExecutableElement &&
91-
!element.isSynthetic &&
92-
firstFragment is ExecutableFragment) {
93-
return ExecutableParameters._(sessionHelper, element, firstFragment);
94-
} else {
89+
90+
// Must be executable to have formal parameters.
91+
if (element is! ExecutableElement) {
9592
return null;
9693
}
94+
95+
// Must be from a declaration.
96+
switch (element) {
97+
case ConstructorElement():
98+
if (!element.isOriginDeclaration) {
99+
return null;
100+
}
101+
case PropertyAccessorElement():
102+
if (!element.isOriginDeclaration) {
103+
return null;
104+
}
105+
}
106+
107+
var firstFragment = element.firstFragment;
108+
return ExecutableParameters._(sessionHelper, element, firstFragment);
97109
}
98110
}

pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ class InlineMethodRefactoringImpl extends RefactoringImpl
497497
if (element is! ExecutableElement) {
498498
return fatalStatus;
499499
}
500-
if (element.isSynthetic) {
500+
if (element is PropertyAccessorElement && !element.isOriginDeclaration) {
501501
return fatalStatus;
502502
}
503503
// maybe operator
@@ -578,7 +578,7 @@ class InlineMethodRefactoringImpl extends RefactoringImpl
578578
if (element is! ExecutableElement) {
579579
return fatalStatus;
580580
}
581-
if (element.isSynthetic) {
581+
if (element is PropertyAccessorElement && !element.isOriginDeclaration) {
582582
return fatalStatus;
583583
}
584584
_methodElement = element;

pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class RenameClassMemberRefactoringImpl extends RenameRefactoringImpl {
9898
var processor = RenameProcessor(workspace, sessionHelper, change, newName);
9999
// update declarations
100100
for (var renameElement in _validator.elements) {
101-
if (renameElement.isSynthetic && renameElement is FieldElement) {
101+
if (renameElement is FieldElement && renameElement.isOriginGetterSetter) {
102102
processor.addDeclarationEdit(renameElement.getter);
103103
processor.addDeclarationEdit(renameElement.setter);
104104
} else {

pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class RenameExtensionMemberRefactoringImpl extends RenameRefactoringImpl {
8080

8181
// Update the declaration.
8282
var renameElement = element;
83-
if (renameElement.isSynthetic && renameElement is FieldElement) {
83+
if (renameElement is FieldElement && renameElement.isOriginGetterSetter) {
8484
processor.addDeclarationEdit(renameElement.getter);
8585
processor.addDeclarationEdit(renameElement.setter);
8686
} else {

pkg/analysis_server/lib/src/services/refactoring/legacy/rename_unit_member.dart

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,18 +129,22 @@ class RenameUnitMemberRefactoringImpl extends RenameRefactoringImpl {
129129
Future<void> fillChange() async {
130130
// prepare elements
131131
var elements = <Element>[];
132-
if (element is PropertyInducingElement && element.isSynthetic) {
133-
var property = element as PropertyInducingElement;
134-
var getter = property.getter;
135-
var setter = property.setter;
136-
if (getter != null) {
137-
elements.add(getter);
138-
}
139-
if (setter != null) {
140-
elements.add(setter);
141-
}
142-
} else {
143-
elements.add(element);
132+
switch (element) {
133+
case PropertyInducingElement element:
134+
if (element.isOriginGetterSetter) {
135+
var getter = element.getter;
136+
var setter = element.setter;
137+
if (getter != null) {
138+
elements.add(getter);
139+
}
140+
if (setter != null) {
141+
elements.add(setter);
142+
}
143+
} else {
144+
elements.add(element);
145+
}
146+
default:
147+
elements.add(element);
144148
}
145149

146150
// Rename each element and references to it.

pkg/analysis_server/lib/src/services/search/hierarchy.dart

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -78,23 +78,14 @@ Future<Set<InterfaceElement>> getDirectSubClasses(
7878
/// Return the non-synthetic children of the given [extension]. This includes
7979
/// fields, accessors and methods, but excludes synthetic elements.
8080
List<Element> getExtensionMembers(ExtensionElement extension, [String? name]) {
81-
var members = <Element>[];
82-
visitChildren(extension, (element) {
83-
if (element.isSynthetic) {
84-
return false;
85-
}
86-
if (name != null && element.displayName != name) {
87-
return false;
88-
}
89-
if (element is ExecutableElement) {
90-
members.add(element);
91-
}
92-
if (element is FieldElement) {
93-
members.add(element);
94-
}
95-
return false;
96-
});
97-
return members;
81+
return [
82+
...extension.fields.where((e) => e.isOriginDeclaration),
83+
...extension.getters.where((e) => e.isOriginDeclaration),
84+
...extension.setters.where((e) => e.isOriginDeclaration),
85+
...extension.methods,
86+
].where((element) {
87+
return name == null || element.displayName == name;
88+
}).toList();
9889
}
9990

10091
/// Returns all implementations of the given [member], including in its

0 commit comments

Comments
 (0)