File tree Expand file tree Collapse file tree 5 files changed +29
-5
lines changed
built_value_generator/lib/src Expand file tree Collapse file tree 5 files changed +29
-5
lines changed Original file line number Diff line number Diff line change 2
2
3
3
## 4.0.1 (unreleased)
4
4
5
- - Make generator robust against invalid annotations .
5
+ - Improved annotation handling for corner cases .
6
6
7
7
## 4.0.0
8
8
Original file line number Diff line number Diff line change @@ -2,6 +2,8 @@ library built_value_generator.memoized_getter;
2
2
3
3
import 'package:analyzer/dart/element/element.dart' ;
4
4
import 'package:built_value/built_value.dart' ;
5
+ import 'package:built_value_generator/src/metadata.dart'
6
+ show metadataToStringValue;
5
7
6
8
part 'memoized_getter.g.dart' ;
7
9
@@ -18,8 +20,8 @@ abstract class MemoizedGetter
18
20
.where ((field) =>
19
21
field.getter != null &&
20
22
! field.getter.isAbstract &&
21
- field.getter.metadata.any ((metadata) =>
22
- metadata.constantValue ? . toStringValue ( ) == 'memoized' ))
23
+ field.getter.metadata.any (
24
+ ( metadata) => metadataToStringValue (metadata ) == 'memoized' ))
23
25
.map ((field) => new MemoizedGetter ((b) => b
24
26
..returnType = field.getter.returnType.toString ()
25
27
..name = field.displayName))
Original file line number Diff line number Diff line change
1
+ // Copyright (c) 2017, Google Inc. Please see the AUTHORS file for details.
2
+ // All rights reserved. Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ import 'package:analyzer/dart/element/element.dart' ;
6
+ import 'package:source_gen/source_gen.dart' ;
7
+
8
+ /// Gets the `String` value of an annotation. Throws a descriptive
9
+ /// [InvalidGenerationSourceError] if the annotation can't be resolved.
10
+ String metadataToStringValue (ElementAnnotation annotation) {
11
+ final value = annotation.computeConstantValue ();
12
+ if (value == null ) {
13
+ throw new InvalidGenerationSourceError (
14
+ 'Can’t process annotation “${annotation .toSource ()}” in '
15
+ '“${annotation .librarySource .uri }”. Please check for a missing import.' );
16
+ }
17
+ return value.toStringValue ();
18
+ }
Original file line number Diff line number Diff line change @@ -9,6 +9,8 @@ import 'package:analyzer/dart/element/element.dart';
9
9
import 'package:built_collection/built_collection.dart' ;
10
10
import 'package:built_value/built_value.dart' ;
11
11
import 'package:built_value_generator/src/dart_types.dart' ;
12
+ import 'package:built_value_generator/src/metadata.dart'
13
+ show metadataToStringValue;
12
14
13
15
part 'serializer_source_field.g.dart' ;
14
16
@@ -47,7 +49,7 @@ abstract class SerializerSourceField
47
49
48
50
@memoized
49
51
bool get isNullable => element.getter.metadata
50
- .any ((metadata) => metadata.constantValue ? . toStringValue ( ) == 'nullable' );
52
+ .any ((metadata) => metadataToStringValue (metadata ) == 'nullable' );
51
53
52
54
@memoized
53
55
String get name => element.displayName;
Original file line number Diff line number Diff line change @@ -11,6 +11,8 @@ import 'package:built_collection/built_collection.dart';
11
11
import 'package:built_value/built_value.dart' ;
12
12
import 'package:built_value_generator/src/dart_types.dart' ;
13
13
import 'package:built_value_generator/src/fields.dart' show collectFields;
14
+ import 'package:built_value_generator/src/metadata.dart'
15
+ show metadataToStringValue;
14
16
15
17
part 'value_source_field.g.dart' ;
16
18
@@ -43,7 +45,7 @@ abstract class ValueSourceField
43
45
44
46
@memoized
45
47
bool get isNullable => element.getter.metadata
46
- .any ((metadata) => metadata.constantValue ? . toStringValue ( ) == 'nullable' );
48
+ .any ((metadata) => metadataToStringValue (metadata ) == 'nullable' );
47
49
48
50
@memoized
49
51
bool get builderFieldExists => builderElement != null ;
You can’t perform that action at this time.
0 commit comments