Skip to content

Commit 728fb3d

Browse files
committed
Restructure classname of instances
1 parent 27f7095 commit 728fb3d

File tree

6 files changed

+26
-19
lines changed

6 files changed

+26
-19
lines changed

pkgs/record_use/lib/src/public/field.dart

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,28 @@
55
import 'package:equatable/equatable.dart';
66

77
class Field extends Equatable {
8-
final String className;
98
final String name;
109
final Object? value;
1110

1211
Field({
13-
required this.className,
1412
required this.name,
1513
required this.value,
1614
});
1715

1816
Map<String, dynamic> toJson() {
1917
return {
20-
'className': className,
2118
'name': name,
2219
'value': value,
2320
};
2421
}
2522

2623
factory Field.fromJson(Map<String, dynamic> map) {
2724
return Field(
28-
className: map['className'] as String,
2925
name: map['name'] as String,
3026
value: map['value'],
3127
);
3228
}
3329

3430
@override
35-
List<Object?> get props => [className, name, value];
31+
List<Object?> get props => [name, value];
3632
}

pkgs/record_use/lib/src/public/instance.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@
44

55
import 'package:equatable/equatable.dart';
66

7-
import 'field.dart';
8-
97
class Instance extends Equatable {
10-
final List<Field> fields;
8+
final String className;
9+
final Map<String, Object?> fields;
1110

12-
Instance({required this.fields});
11+
Instance({required this.className, required this.fields});
1312

1413
@override
1514
List<Object?> get props => [fields];

pkgs/record_use/lib/src/public/reference.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,20 @@ final class CallReference extends Reference {
5959
}
6060

6161
final class InstanceReference extends Reference {
62+
final String className;
6263
final List<Field> fields;
6364

6465
InstanceReference({
6566
super.loadingUnit,
6667
required super.location,
6768
required this.fields,
69+
required this.className,
6870
});
6971

7072
factory InstanceReference.fromJson(
7173
Map<String, dynamic> json, List<String> uris) {
7274
return InstanceReference(
75+
className: json['className'] as String,
7376
loadingUnit: json['loadingUnit'] as String?,
7477
location:
7578
Location.fromJson(json['@'] as Map<String, dynamic>, null, uris),
@@ -83,8 +86,9 @@ final class InstanceReference extends Reference {
8386
Map<String, dynamic> toJson(List<String> uris) => {
8487
if (fields.isNotEmpty)
8588
'fields': fields.map((field) => field.toJson()).toList(),
89+
'className': className,
8690
...super.toJson(uris),
8791
};
8892
@override
89-
List<Object?> get props => super.props..add(fields);
93+
List<Object?> get props => super.props..add([className, fields]);
9094
}

pkgs/record_use/lib/src/record_use.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,11 @@ extension type RecordedUsages._(UsageRecord _usages) {
104104
.firstWhereOrNull(
105105
(instance) => instance.definition.identifier == classIdentifier)
106106
?.references
107-
.map((reference) => reference.fields)
108-
.map((fields) => Instance(fields: fields));
107+
.map((reference) => Instance(
108+
className: reference.className,
109+
fields: Map.fromEntries(reference.fields
110+
.map((field) => MapEntry(field.name, field.value))),
111+
));
109112

110113
/// Checks if any call to [method] has non-const arguments.
111114
///

pkgs/record_use/test/storage_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ final recordedUses = UsageRecord(
4747
),
4848
references: [
4949
InstanceReference(
50+
className: 'className',
5051
location: Location(
5152
uri: Uri.parse('file://lib/_internal/js_runtime/lib/js_helper.dart')
5253
.toString(),
@@ -55,7 +56,6 @@ final recordedUses = UsageRecord(
5556
),
5657
fields: [
5758
Field(
58-
className: 'className',
5959
name: 'a',
6060
value: 42,
6161
),
@@ -192,9 +192,9 @@ final recordedUsesJson = {
192192
},
193193
'references': [
194194
{
195+
'className': 'className',
195196
'fields': [
196197
{
197-
'className': 'className',
198198
'name': 'a',
199199
'value': 42,
200200
}

pkgs/record_use/test/usage_test.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,16 @@ void main() {
1515
);
1616
});
1717
test('All API instances', () {
18+
final references = recordedUses.instances.expand((e) => e.references);
19+
final instances =
20+
RecordedUsages.fromJson(recordedUsesJson).instancesOf(instanceId);
1821
expect(
19-
RecordedUsages.fromJson(recordedUsesJson).instancesOf(instanceId),
20-
recordedUses.instances
21-
.expand((e) => e.references)
22-
.map((e) => Instance(fields: e.fields)),
22+
instances!.map((e) => e.className),
23+
references.map((e) => e.className),
24+
);
25+
expect(
26+
instances.map((e) => e.fields.entries.map((e) => (e.key, e.value))),
27+
references.map((e) => e.fields.map((e) => (e.name, e.value))),
2328
);
2429
});
2530
test('Specific API calls', () {
@@ -58,7 +63,7 @@ void main() {
5863
);
5964
expect(
6065
RecordedUsages.fromJson(recordedUsesJson).instancesOf(instanceId)?.first,
61-
Instance(fields: [Field(name: 'a', className: 'className', value: 42)]),
66+
Instance(className: 'className', fields: {'a': 42}),
6267
);
6368
});
6469
}

0 commit comments

Comments
 (0)