Skip to content

Commit 9716a60

Browse files
authored
Element2 implementation revive.dart. (#749)
1 parent 69731af commit 9716a60

File tree

1 file changed

+23
-25
lines changed

1 file changed

+23
-25
lines changed

source_gen/lib/src/constants/revive.dart

+23-25
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// ignore_for_file: deprecated_member_use
77

88
import 'package:analyzer/dart/constant/value.dart';
9-
import 'package:analyzer/dart/element/element.dart';
9+
import 'package:analyzer/dart/element/element2.dart';
1010
import 'package:analyzer/dart/element/type.dart';
1111
// ignore: implementation_imports
1212
import 'package:analyzer/src/dart/constant/value.dart' show DartObjectImpl;
@@ -22,39 +22,37 @@ import '../utils.dart';
2222
/// **NOTE**: Some returned [Revivable] instances are not representable as valid
2323
/// Dart source code (such as referencing private constructors). It is up to the
2424
/// build tool(s) using this library to surface error messages to the user.
25-
@Deprecated('use reviveInstance2 instead')
26-
Revivable reviveInstance(DartObject object, [LibraryElement? origin]) {
25+
Revivable reviveInstance(DartObject object, [LibraryElement2? origin]) {
2726
final objectType = object.type;
28-
Element? element = objectType!.alias?.element;
27+
Element2? element = objectType!.alias?.element2;
2928
if (element == null) {
3029
if (objectType is InterfaceType) {
31-
element = objectType.element;
30+
element = objectType.element3;
3231
} else {
33-
element = object.toFunctionValue();
32+
element = object.toFunctionValue2();
3433
}
3534
}
36-
origin ??= element!.library;
37-
var url = Uri.parse(urlOfElement(element!));
38-
if (element is FunctionElement) {
39-
return Revivable._(
40-
source: url.removeFragment(),
41-
accessor: element.name,
42-
);
35+
origin ??= element!.library2;
36+
var url = Uri.parse(urlOfElement2(element!));
37+
if (element is TopLevelFunctionElement || element is LocalFunctionElement) {
38+
return Revivable._(source: url.removeFragment(), accessor: element.name3!);
4339
}
44-
if (element is MethodElement && element.isStatic) {
40+
41+
if (element is MethodElement2 && element.isStatic) {
4542
return Revivable._(
4643
source: url.removeFragment(),
47-
accessor: '${element.enclosingElement3.name}.${element.name}',
44+
accessor:
45+
'${element.firstFragment.enclosingFragment!.name2}.${element.name3}',
4846
);
4947
}
5048

51-
if (element is InterfaceElement) {
52-
for (final e in element.fields.where(
49+
if (element is InterfaceElement2) {
50+
for (final e in element.fields2.where(
5351
(f) => f.isPublic && f.isConst && f.computeConstantValue() == object,
5452
)) {
5553
return Revivable._(
5654
source: url.removeFragment(),
57-
accessor: '${element.name}.${e.name}',
55+
accessor: '${element.name3}.${e.name3}',
5856
);
5957
}
6058
}
@@ -68,12 +66,12 @@ Revivable reviveInstance(DartObject object, [LibraryElement? origin]) {
6866
return !result.isPrivate;
6967
}
7068

71-
for (final type in origin!.definingCompilationUnit.classes) {
72-
for (final e in type.fields
69+
for (final type in origin!.classes) {
70+
for (final e in type.fields2
7371
.where((f) => f.isConst && f.computeConstantValue() == object)) {
7472
final result = Revivable._(
7573
source: url.removeFragment(),
76-
accessor: '${type.name}.${e.name}',
74+
accessor: '${type.name3}.${e.name3}',
7775
);
7876
if (tryResult(result)) {
7977
return result;
@@ -82,7 +80,7 @@ Revivable reviveInstance(DartObject object, [LibraryElement? origin]) {
8280
}
8381
final i = (object as DartObjectImpl).getInvocation();
8482
if (i != null) {
85-
url = Uri.parse(urlOfElement(i.constructor.enclosingElement3));
83+
url = Uri.parse(urlOfElement2(i.constructor2.enclosingElement2));
8684
final result = Revivable._(
8785
source: url,
8886
accessor: i.constructor.name,
@@ -93,12 +91,12 @@ Revivable reviveInstance(DartObject object, [LibraryElement? origin]) {
9391
return result;
9492
}
9593
}
96-
for (final e in origin.definingCompilationUnit.topLevelVariables.where(
94+
for (final e in origin.topLevelVariables.where(
9795
(f) => f.isConst && f.computeConstantValue() == object,
9896
)) {
9997
final result = Revivable._(
100-
source: Uri.parse(urlOfElement(origin)).replace(fragment: ''),
101-
accessor: e.name,
98+
source: Uri.parse(urlOfElement2(origin)).replace(fragment: ''),
99+
accessor: e.name3!,
102100
);
103101
if (tryResult(result)) {
104102
return result;

0 commit comments

Comments
 (0)