Skip to content

Commit e5b8a94

Browse files
scheglovCommit Queue
authored andcommitted
Fine. Support for isStatic in InstanceItemMemberItem.
Change-Id: I818a3f5aa27f6d447c6bc75092dd0996756cdd28 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/420162 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent 0815445 commit e5b8a94

File tree

2 files changed

+167
-1
lines changed

2 files changed

+167
-1
lines changed

pkg/analyzer/lib/src/fine/manifest_item.dart

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ class InstanceItemGetterItem extends InstanceItemMemberItem {
137137
InstanceItemGetterItem({
138138
required super.name,
139139
required super.id,
140+
required super.isStatic,
140141
required this.returnType,
141142
});
142143

@@ -149,6 +150,7 @@ class InstanceItemGetterItem extends InstanceItemMemberItem {
149150
return InstanceItemGetterItem(
150151
name: name,
151152
id: id,
153+
isStatic: element.isStatic,
152154
returnType: element.returnType.encode(context),
153155
);
154156
}
@@ -157,6 +159,7 @@ class InstanceItemGetterItem extends InstanceItemMemberItem {
157159
return InstanceItemGetterItem(
158160
name: LookupName.read(reader),
159161
id: ManifestItemId.read(reader),
162+
isStatic: reader.readBool(),
160163
returnType: ManifestType.read(reader),
161164
);
162165
}
@@ -166,6 +169,9 @@ class InstanceItemGetterItem extends InstanceItemMemberItem {
166169
GetterElement2OrMember element,
167170
) {
168171
var context = MatchContext(parent: instanceContext);
172+
if (element.isStatic != isStatic) {
173+
return null;
174+
}
169175
if (!returnType.match(context, element.returnType)) {
170176
return null;
171177
}
@@ -177,17 +183,20 @@ class InstanceItemGetterItem extends InstanceItemMemberItem {
177183
sink.writeEnum(_ManifestItemKind2.instanceGetter);
178184
name.write(sink);
179185
id.write(sink);
186+
sink.writeBool(isStatic);
180187
returnType.write(sink);
181188
}
182189
}
183190

184191
sealed class InstanceItemMemberItem extends ManifestItem {
185192
final LookupName name;
186193
final ManifestItemId id;
194+
final bool isStatic;
187195

188196
InstanceItemMemberItem({
189197
required this.name,
190198
required this.id,
199+
required this.isStatic,
191200
});
192201

193202
factory InstanceItemMemberItem.read(SummaryDataReader reader) {
@@ -209,6 +218,7 @@ class InstanceItemMethodItem extends InstanceItemMemberItem {
209218
InstanceItemMethodItem({
210219
required super.name,
211220
required super.id,
221+
required super.isStatic,
212222
required this.functionType,
213223
});
214224

@@ -221,6 +231,7 @@ class InstanceItemMethodItem extends InstanceItemMemberItem {
221231
return InstanceItemMethodItem(
222232
name: name,
223233
id: id,
234+
isStatic: element.isStatic,
224235
functionType: element.type.encode(context),
225236
);
226237
}
@@ -229,6 +240,7 @@ class InstanceItemMethodItem extends InstanceItemMemberItem {
229240
return InstanceItemMethodItem(
230241
name: LookupName.read(reader),
231242
id: ManifestItemId.read(reader),
243+
isStatic: reader.readBool(),
232244
functionType: ManifestFunctionType.read(reader),
233245
);
234246
}
@@ -238,6 +250,9 @@ class InstanceItemMethodItem extends InstanceItemMemberItem {
238250
MethodElement2OrMember element,
239251
) {
240252
var context = MatchContext(parent: instanceContext);
253+
if (element.isStatic != isStatic) {
254+
return null;
255+
}
241256
if (!functionType.match(context, element.type)) {
242257
return null;
243258
}
@@ -249,6 +264,7 @@ class InstanceItemMethodItem extends InstanceItemMemberItem {
249264
sink.writeEnum(_ManifestItemKind2.instanceMethod);
250265
name.write(sink);
251266
id.write(sink);
267+
sink.writeBool(isStatic);
252268
functionType.writeNoTag(sink);
253269
}
254270
}
@@ -301,7 +317,7 @@ class InterfaceItemConstructorItem extends InstanceItemMemberItem {
301317
required this.isConst,
302318
required this.isFactory,
303319
required this.functionType,
304-
});
320+
}) : super(isStatic: false);
305321

306322
factory InterfaceItemConstructorItem.fromElement({
307323
required LookupName name,

pkg/analyzer/test/src/dart/analysis/driver_test.dart

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8605,6 +8605,36 @@ class A {
86058605
);
86068606
}
86078607

8608+
test_manifest_class_getter_static_falseToTrue() async {
8609+
await _runLibraryManifestScenario(
8610+
initialCode: r'''
8611+
class A {
8612+
int get foo => 0;
8613+
}
8614+
''',
8615+
expectedInitialEvents: r'''
8616+
[operation] linkLibraryCycle SDK
8617+
[operation] linkLibraryCycle
8618+
package:test/test.dart
8619+
manifest
8620+
A: #M0
8621+
foo: #M1
8622+
''',
8623+
updatedCode: r'''
8624+
class A {
8625+
static int get foo => 0;
8626+
}
8627+
''',
8628+
expectedUpdatedEvents: r'''
8629+
[operation] linkLibraryCycle
8630+
package:test/test.dart
8631+
manifest
8632+
A: #M0
8633+
foo: #M2
8634+
''',
8635+
);
8636+
}
8637+
86088638
test_manifest_class_getter_static_returnType() async {
86098639
await _runLibraryManifestScenario(
86108640
initialCode: r'''
@@ -8635,6 +8665,36 @@ class A {
86358665
);
86368666
}
86378667

8668+
test_manifest_class_getter_static_trueToFalse() async {
8669+
await _runLibraryManifestScenario(
8670+
initialCode: r'''
8671+
class A {
8672+
static int get foo => 0;
8673+
}
8674+
''',
8675+
expectedInitialEvents: r'''
8676+
[operation] linkLibraryCycle SDK
8677+
[operation] linkLibraryCycle
8678+
package:test/test.dart
8679+
manifest
8680+
A: #M0
8681+
foo: #M1
8682+
''',
8683+
updatedCode: r'''
8684+
class A {
8685+
int get foo => 0;
8686+
}
8687+
''',
8688+
expectedUpdatedEvents: r'''
8689+
[operation] linkLibraryCycle
8690+
package:test/test.dart
8691+
manifest
8692+
A: #M0
8693+
foo: #M2
8694+
''',
8695+
);
8696+
}
8697+
86388698
test_manifest_class_interfacesAdd() async {
86398699
await _runLibraryManifestScenario(
86408700
initialCode: r'''
@@ -9229,6 +9289,96 @@ class A {
92299289
);
92309290
}
92319291

9292+
test_manifest_class_method_static_falseToTrue() async {
9293+
await _runLibraryManifestScenario(
9294+
initialCode: r'''
9295+
class A {
9296+
void foo() {}
9297+
}
9298+
''',
9299+
expectedInitialEvents: r'''
9300+
[operation] linkLibraryCycle SDK
9301+
[operation] linkLibraryCycle
9302+
package:test/test.dart
9303+
manifest
9304+
A: #M0
9305+
foo: #M1
9306+
''',
9307+
updatedCode: r'''
9308+
class A {
9309+
static void foo() {}
9310+
}
9311+
''',
9312+
expectedUpdatedEvents: r'''
9313+
[operation] linkLibraryCycle
9314+
package:test/test.dart
9315+
manifest
9316+
A: #M0
9317+
foo: #M2
9318+
''',
9319+
);
9320+
}
9321+
9322+
test_manifest_class_method_static_returnType() async {
9323+
await _runLibraryManifestScenario(
9324+
initialCode: r'''
9325+
class A {
9326+
static int foo() {}
9327+
}
9328+
''',
9329+
expectedInitialEvents: r'''
9330+
[operation] linkLibraryCycle SDK
9331+
[operation] linkLibraryCycle
9332+
package:test/test.dart
9333+
manifest
9334+
A: #M0
9335+
foo: #M1
9336+
''',
9337+
updatedCode: r'''
9338+
class A {
9339+
static double foo() {}
9340+
}
9341+
''',
9342+
expectedUpdatedEvents: r'''
9343+
[operation] linkLibraryCycle
9344+
package:test/test.dart
9345+
manifest
9346+
A: #M0
9347+
foo: #M2
9348+
''',
9349+
);
9350+
}
9351+
9352+
test_manifest_class_method_static_trueToFalse() async {
9353+
await _runLibraryManifestScenario(
9354+
initialCode: r'''
9355+
class A {
9356+
static void foo() {}
9357+
}
9358+
''',
9359+
expectedInitialEvents: r'''
9360+
[operation] linkLibraryCycle SDK
9361+
[operation] linkLibraryCycle
9362+
package:test/test.dart
9363+
manifest
9364+
A: #M0
9365+
foo: #M1
9366+
''',
9367+
updatedCode: r'''
9368+
class A {
9369+
void foo() {}
9370+
}
9371+
''',
9372+
expectedUpdatedEvents: r'''
9373+
[operation] linkLibraryCycle
9374+
package:test/test.dart
9375+
manifest
9376+
A: #M0
9377+
foo: #M2
9378+
''',
9379+
);
9380+
}
9381+
92329382
test_manifest_class_method_typeParameter() async {
92339383
configuration.withElementManifests = true;
92349384
await _runLibraryManifestScenario(

0 commit comments

Comments
 (0)