Skip to content

Commit c9c3715

Browse files
authored
Updates Analyzer ">=10.0.0 <11.0.0" (#71)
refactor: Update element2 references to element in generator files - Changed imports from `element2.dart` to `element.dart` across multiple generator files. - Updated method signatures and type references from `Element2` to `Element` in the following files: - stacked_locator_generator.dart - stacked_locator_parameter_resolver.dart - logger_config_resolver.dart - stacked_logger_generator.dart - route_config_factory.dart - stacked_router_generator.dart - auto_route_generator.dart - route_config_resolver.dart - router_config_resolver.dart - router_common/models/router_config.dart - router_common/resolvers/route_parameter_resolver.dart - router_common/resolvers/type_resolver.dart - Removed deprecated mock helper for `Element2` and replaced it with a new mock helper for `Element`. - Updated tests to reflect changes in mock helper usage. - Bumped version in pubspec.yaml to 3.0.0 and updated dependencies.
1 parent 9a2a41f commit c9c3715

35 files changed

Lines changed: 173 additions & 144 deletions

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## 3.0.0
2+
3+
### Breaking Changes
4+
5+
* require Dart 3.9+
6+
* support analyzer 10.x only
7+
* migrate generator internals to the analyzer 10 element API
8+
19
## [2.0.1](https://github.com/Stacked-Org/generator/compare/v2.0.0...v2.0.1) (2026-03-07)
210

311

lib/import_resolver.dart

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
import 'package:analyzer/dart/element/element2.dart';
1+
import 'package:analyzer/dart/element/element.dart';
22
import 'package:analyzer/dart/element/type.dart';
33
import 'package:path/path.dart' as p;
4+
import 'package:stacked_generator/utils.dart';
45

56
class ImportResolver {
6-
final List<LibraryElement2> libs;
7+
final List<LibraryElement> libs;
78
final String targetFilePath;
89

910
const ImportResolver(this.libs, this.targetFilePath);
1011

11-
String? resolve(Element2? element) {
12+
String? resolve(Element? element) {
1213
// return early if source is null or element is a core type
1314
final elementSourceUri = _sourceUriOfElement(element);
1415
if (elementSourceUri == null || _isCoreDartType(element)) {
@@ -44,12 +45,12 @@ class ImportResolver {
4445
}
4546

4647
Uri? _sourceUriOfElement(Element? element) {
47-
return element?.firstFragment.libraryFragment?.source.uri;
48+
return elementSourceUri(element);
4849
}
4950

5051
Set<String> resolveAll(DartType type) {
5152
final imports = <String>{};
52-
final resolvedValue = resolve(type.element3);
53+
final resolvedValue = resolve(type.element);
5354
if (resolvedValue != null) {
5455
imports.add(resolvedValue);
5556
}
@@ -61,7 +62,7 @@ class ImportResolver {
6162
final imports = <String>{};
6263
if (typeToCheck is ParameterizedType) {
6364
for (DartType type in typeToCheck.typeArguments) {
64-
final resolvedValue = resolve(type.element3);
65+
final resolvedValue = resolve(type.element);
6566
if (resolvedValue != null) {
6667
imports.add(resolvedValue);
6768
}

lib/src/generators/bottomsheets/resolve/bottomsheet_config_resolver.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:analyzer/dart/constant/value.dart';
2-
import 'package:analyzer/dart/element/element2.dart';
2+
import 'package:analyzer/dart/element/element.dart';
33
import 'package:source_gen/source_gen.dart';
44
import 'package:stacked_generator/import_resolver.dart';
55
import 'package:stacked_generator/src/generators/bottomsheets/bottomsheet_config.dart';
@@ -21,7 +21,7 @@ class BottomsheetConfigResolver {
2121
final bottomsheetClassType =
2222
bottomsheetReader.read('classType').typeValue;
2323

24-
final classElement = bottomsheetClassType.element3 as ClassElement2?;
24+
final classElement = bottomsheetClassType.element as ClassElement?;
2525

2626
// Get the import of the class type that's defined for the bottomSheet
2727
final import = importResolver.resolve(classElement!);

lib/src/generators/bottomsheets/resolve/stacked_bottomsheet_generator.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
import 'dart:async';
22

3-
import 'package:analyzer/dart/element/element2.dart';
3+
import 'package:analyzer/dart/element/element.dart';
44
import 'package:build/build.dart';
55
import 'package:source_gen/source_gen.dart';
66
import 'package:stacked_generator/import_resolver.dart';
77
import 'package:stacked_generator/src/generators/bottomsheets/generate/bottomsheet_class_generator.dart';
8+
import 'package:stacked_generator/utils.dart';
89
import 'package:stacked_shared/stacked_shared.dart';
910

1011
import 'bottomsheet_config_resolver.dart';
1112

1213
class StackedBottomsheetGenerator extends GeneratorForAnnotation<StackedApp> {
1314
@override
1415
FutureOr<String> generateForAnnotatedElement(
15-
Element2 element,
16+
Element element,
1617
ConstantReader annotation,
1718
BuildStep buildStep,
1819
) async {
1920
final bottomsheetResolver = BottomsheetConfigResolver();
2021
final libs = await buildStep.resolver.libraries.toList();
2122
final importResolver = ImportResolver(
2223
libs,
23-
element.firstFragment.libraryFragment?.source.uri.path ?? '',
24+
elementSourceUri(element)?.path ?? '',
2425
);
2526

2627
/// If the bottomsheets parameter is not mentioned in the StackedApp

lib/src/generators/dialogs/resolve/dialog_config_resolver.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:analyzer/dart/constant/value.dart';
2-
import 'package:analyzer/dart/element/element2.dart';
2+
import 'package:analyzer/dart/element/element.dart';
33
import 'package:source_gen/source_gen.dart';
44
import 'package:stacked_generator/import_resolver.dart';
55
import 'package:stacked_generator/src/generators/dialogs/dialog_config.dart';
@@ -21,7 +21,7 @@ class DialogConfigResolver {
2121
// Get the type of the dialog that we want to register
2222
final dialogClassType = dialogReader.read('classType').typeValue;
2323

24-
final classElement = dialogClassType.element3 as ClassElement2?;
24+
final classElement = dialogClassType.element as ClassElement?;
2525

2626
// Get the import of the class type that's defined for the dialog
2727
final import = importResolver.resolve(classElement!);

lib/src/generators/dialogs/resolve/stacked_dialog_generator.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
import 'dart:async';
22

3-
import 'package:analyzer/dart/element/element2.dart';
3+
import 'package:analyzer/dart/element/element.dart';
44
import 'package:build/build.dart';
55
import 'package:source_gen/source_gen.dart';
66
import 'package:stacked_generator/import_resolver.dart';
77
import 'package:stacked_generator/src/generators/dialogs/generate/dialog_class_generator.dart';
8+
import 'package:stacked_generator/utils.dart';
89
import 'package:stacked_shared/stacked_shared.dart';
910

1011
import 'dialog_config_resolver.dart';
1112

1213
class StackedDialogGenerator extends GeneratorForAnnotation<StackedApp> {
1314
@override
1415
FutureOr<String> generateForAnnotatedElement(
15-
Element2 element,
16+
Element element,
1617
ConstantReader annotation,
1718
BuildStep buildStep,
1819
) async {
1920
final dialogResolver = DialogConfigResolver();
2021
final libs = await buildStep.resolver.libraries.toList();
2122
final importResolver = ImportResolver(
2223
libs,
23-
element.firstFragment.libraryFragment?.source.uri.path ?? '',
24+
elementSourceUri(element)?.path ?? '',
2425
);
2526

2627
/// If the dialogs parameter is not mentioned in the StackedApp

lib/src/generators/exceptions/invalid_generator_input_exception.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import 'package:analyzer/dart/element/element2.dart';
1+
import 'package:analyzer/dart/element/element.dart';
22

33
class InvalidGeneratorInputException implements Exception {
44
final String message;
55
final String? todo;
6-
final Element2? element;
6+
final Element? element;
77
const InvalidGeneratorInputException(this.message, {this.todo, this.element});
88

99
@override

lib/src/generators/forms/field_config.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// ignore_for_file: unnecessary_this
22

3-
import 'package:analyzer/dart/element/element2.dart';
3+
import 'package:analyzer/dart/element/element.dart';
44

55
/// Described a single field to be generated.
66
///

lib/src/generators/forms/stacked_form_generator.dart

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,28 @@
11
import 'dart:async';
22

33
import 'package:analyzer/dart/constant/value.dart';
4-
import 'package:analyzer/dart/element/element2.dart';
4+
import 'package:analyzer/dart/element/element.dart';
55
import 'package:build/build.dart';
66
import 'package:source_gen/source_gen.dart';
77
import 'package:stacked_generator/import_resolver.dart';
88
import 'package:stacked_generator/src/generators/forms/field_config.dart';
99
import 'package:stacked_generator/src/generators/forms/form_view_config.dart';
1010
import 'package:stacked_generator/src/generators/forms/stacked_form_content_generator.dart';
11+
import 'package:stacked_generator/utils.dart';
1112
import 'package:stacked_shared/stacked_shared.dart';
1213

1314
class StackedFormGenerator extends GeneratorForAnnotation<FormView> {
1415
@override
1516
FutureOr<String> generateForAnnotatedElement(
1617
// ignore: avoid_renaming_method_parameters
17-
Element2 classForAnnotation,
18+
Element classForAnnotation,
1819
// ignore: avoid_renaming_method_parameters
1920
ConstantReader formView,
2021
BuildStep buildStep,
2122
) async {
2223
var libs = await buildStep.resolver.libraries.toList();
2324
var importResolver =
24-
ImportResolver(libs, classForAnnotation.firstFragment.libraryFragment?.source.uri.path ?? '');
25+
ImportResolver(libs, elementSourceUri(classForAnnotation)?.path ?? '');
2526

2627
final viewName = classForAnnotation.displayName;
2728

@@ -88,11 +89,11 @@ FieldConfig _readTextFieldConfig({
8889
}) {
8990
final String name = (fieldReader.peek('name')?.stringValue) ?? '';
9091
final String? initialValue = (fieldReader.peek('initialValue')?.stringValue);
91-
final ExecutableElement2? validatorFunction =
92-
(fieldReader.peek('validator')?.objectValue)?.toFunctionValue2();
93-
final ExecutableElement2? customTextEditingController =
92+
final ExecutableElement? validatorFunction =
93+
(fieldReader.peek('validator')?.objectValue)?.toFunctionValue();
94+
final ExecutableElement? customTextEditingController =
9495
(fieldReader.peek('customTextEditingController')?.objectValue)
95-
?.toFunctionValue2();
96+
?.toFunctionValue();
9697
return TextFieldConfig(
9798
name: name,
9899
initialValue: initialValue,

lib/src/generators/getit/dependency_config_factory.dart

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:analyzer/dart/constant/value.dart';
2-
import 'package:analyzer/dart/element/element2.dart';
2+
import 'package:analyzer/dart/element/element.dart';
33
import 'package:analyzer/dart/element/type.dart';
44
import 'package:source_gen/source_gen.dart';
55
import 'package:stacked_generator/import_resolver.dart';
@@ -41,7 +41,7 @@ class DependencyConfigFactory {
4141
final DartType? dependencyAbstractedClassType =
4242
dependencyReader.peek('asType')?.typeValue;
4343

44-
final classElement = dependencyClassType.element3 as ClassElement2?;
44+
final classElement = dependencyClassType.element as ClassElement?;
4545

4646
throwIf(
4747
classElement == null,
@@ -60,7 +60,7 @@ class DependencyConfigFactory {
6060
final import = importResolver.resolve(classElement!);
6161

6262
final abstractedClassElement =
63-
dependencyAbstractedClassType?.element3 as ClassElement2?;
63+
dependencyAbstractedClassType?.element as ClassElement?;
6464

6565
final abstractedImport = importResolver.resolve(abstractedClassElement);
6666

@@ -71,7 +71,7 @@ class DependencyConfigFactory {
7171
: null;
7272

7373
// NOTE: This can be used for actual dependency inject. We do service location instead.
74-
final constructor = classElement.unnamedConstructor2;
74+
final constructor = classElement.unnamedConstructor;
7575

7676
if (dependencyReader.instanceOf(const TypeChecker.typeNamed(
7777
Factory,
@@ -91,7 +91,7 @@ class DependencyConfigFactory {
9191
))) {
9292
final ConstantReader? resolveUsing =
9393
dependencyReader.peek('resolveUsing');
94-
final resolveObject = resolveUsing?.objectValue.toFunctionValue2();
94+
final resolveObject = resolveUsing?.objectValue.toFunctionValue();
9595

9696
return SingletonDependency(
9797
instanceName: instanceName,
@@ -107,7 +107,7 @@ class DependencyConfigFactory {
107107
))) {
108108
final ConstantReader? resolveUsing =
109109
dependencyReader.peek('resolveUsing');
110-
final resolveObject = resolveUsing?.objectValue.toFunctionValue2();
110+
final resolveObject = resolveUsing?.objectValue.toFunctionValue();
111111

112112
return LazySingletonDependency(
113113
instanceName: instanceName,
@@ -118,12 +118,13 @@ class DependencyConfigFactory {
118118
environments: environments,
119119
resolveFunction: resolveObject?.displayName);
120120
} else if (dependencyReader.instanceOf(const TypeChecker.typeNamed(
121+
// ignore: deprecated_member_use
121122
Presolve,
122123
inPackage: 'stacked_shared',
123124
))) {
124125
final ConstantReader? presolveUsing =
125126
dependencyReader.peek('presolveUsing');
126-
final presolveObject = presolveUsing?.objectValue.toFunctionValue2();
127+
final presolveObject = presolveUsing?.objectValue.toFunctionValue();
127128
return PresolveSingletonDependency(
128129
instanceName: instanceName,
129130
import: import!,

0 commit comments

Comments
 (0)