4
4
5
5
import 'dart:async' ;
6
6
7
- import 'package:analyzer/dart/element/element .dart' ;
7
+ import 'package:analyzer/dart/element/element2 .dart' ;
8
8
import 'package:analyzer/dart/element/type.dart' ;
9
9
import 'package:build/build.dart' ;
10
10
import 'package:source_gen/source_gen.dart' ;
@@ -28,9 +28,10 @@ class GoRouterGenerator extends Generator {
28
28
const GoRouterGenerator ();
29
29
30
30
TypeChecker get _typeChecker => TypeChecker .any (
31
- _annotations.keys.map ((String annotation) =>
32
- TypeChecker .fromUrl ('$_routeDataUrl #$annotation ' )),
33
- );
31
+ _annotations.keys.map (
32
+ (String annotation) => TypeChecker .fromUrl ('$_routeDataUrl #$annotation ' ),
33
+ ),
34
+ );
34
35
35
36
@override
36
37
FutureOr <String > generate (LibraryReader library, BuildStep buildStep) async {
@@ -62,48 +63,53 @@ ${getters.map((String e) => "$e,").join('\n')}
62
63
Set <String > values,
63
64
Set <String > getters,
64
65
) {
65
- for (final AnnotatedElement annotatedElement
66
- in library.annotatedWith (_typeChecker)) {
66
+ for (final AnnotatedElement annotatedElement in library.annotatedWith (
67
+ _typeChecker,
68
+ )) {
67
69
final InfoIterable generatedValue = _generateForAnnotatedElement (
68
70
annotatedElement.element,
69
71
annotatedElement.annotation,
70
72
);
71
73
getters.add (generatedValue.routeGetterName);
72
- for (final String value in generatedValue) {
73
- assert (value.length == value.trim ().length);
74
- values.add (value);
75
- }
74
+ values.addAll (generatedValue.members);
76
75
}
77
76
}
78
77
79
78
InfoIterable _generateForAnnotatedElement (
80
- Element element,
79
+ Element2 element,
81
80
ConstantReader annotation,
82
81
) {
83
- final String typedAnnotation =
84
- withoutNullability (annotation.objectValue.type! .getDisplayString ());
85
- final String type =
86
- typedAnnotation.substring (0 , typedAnnotation.indexOf ('<' ));
82
+ final String typedAnnotation = withoutNullability (
83
+ annotation.objectValue.type! .getDisplayString (),
84
+ );
85
+ final String type = typedAnnotation.substring (
86
+ 0 ,
87
+ typedAnnotation.indexOf ('<' ),
88
+ );
87
89
final String routeData = _annotations[type]! ;
88
- if (element is ! ClassElement ) {
90
+ if (element is ! ClassElement2 ) {
89
91
throw InvalidGenerationSourceError (
90
92
'The @$type annotation can only be applied to classes.' ,
91
93
element: element,
92
94
);
93
95
}
94
96
95
- final TypeChecker dataChecker =
96
- TypeChecker .fromUrl ('$_routeDataUrl #$routeData ' );
97
- if (! element.allSupertypes
98
- .any ((InterfaceType element) => dataChecker.isExactlyType (element))) {
97
+ final TypeChecker dataChecker = TypeChecker .fromUrl (
98
+ '$_routeDataUrl #$routeData ' ,
99
+ );
100
+ if (! element.allSupertypes.any (
101
+ (InterfaceType element) => dataChecker.isExactlyType (element),
102
+ )) {
99
103
throw InvalidGenerationSourceError (
100
104
'The @$type annotation can only be applied to classes that '
101
105
'extend or implement `$routeData `.' ,
102
106
element: element,
103
107
);
104
108
}
105
109
106
- return RouteBaseConfig .fromAnnotation (annotation, element)
107
- .generateMembers ();
110
+ return RouteBaseConfig .fromAnnotation (
111
+ annotation,
112
+ element,
113
+ ).generateMembers ();
108
114
}
109
115
}
0 commit comments