File tree Expand file tree Collapse file tree 4 files changed +39
-0
lines changed Expand file tree Collapse file tree 4 files changed +39
-0
lines changed Original file line number Diff line number Diff line change 1
1
## 6.4.2-dev
2
2
3
+ - Support ` ConstructorElement ` which allows using tear-off constructors.
4
+
3
5
## 6.4.1
4
6
5
7
- Fixed a bug when an ` @JsonSerializable ` class uses a mixin with fields.
Original file line number Diff line number Diff line change @@ -232,6 +232,14 @@ extension ExecutableElementExtension on ExecutableElement {
232
232
return '${enclosingElement3 .name }.$name ' ;
233
233
}
234
234
235
+ if (this is ConstructorElement ) {
236
+ // Ignore the default constructor.
237
+ if (name.isEmpty) {
238
+ return '${enclosingElement3 .name }' ;
239
+ }
240
+ return '${enclosingElement3 .name }.$name ' ;
241
+ }
242
+
235
243
throw UnsupportedError (
236
244
'Not sure how to support typeof $runtimeType ' ,
237
245
);
Original file line number Diff line number Diff line change @@ -126,6 +126,7 @@ const _expectedAnnotatedTests = {
126
126
'SubTypeWithAnnotatedFieldOverrideExtendsWithOverrides' ,
127
127
'SubTypeWithAnnotatedFieldOverrideImplements' ,
128
128
'theAnswer' ,
129
+ 'TearOffFromJsonClass' ,
129
130
'ToJsonNullableFalseIncludeIfNullFalse' ,
130
131
'TypedConvertMethods' ,
131
132
'UnknownEnumValue' ,
Original file line number Diff line number Diff line change @@ -579,3 +579,31 @@ class Issue1038RegressionTest {
579
579
580
580
Issue1038RegressionTest .ean (this .ean) : id = null ;
581
581
}
582
+
583
+ @ShouldGenerate (
584
+ r'''
585
+ TearOffFromJsonClass _$TearOffFromJsonClassFromJson(
586
+ Map<String, dynamic> json) =>
587
+ TearOffFromJsonClass(
588
+ TearOffValueClass(json['value'] as String),
589
+ TearOffValueClass.fromJson(json['factoryValue'] as String),
590
+ );
591
+ ''' ,
592
+ )
593
+ @JsonSerializable (createToJson: false )
594
+ class TearOffFromJsonClass {
595
+ TearOffFromJsonClass (this .value, this .factoryValue);
596
+
597
+ @JsonKey (fromJson: TearOffValueClass .new )
598
+ final TearOffValueClass value;
599
+ @JsonKey (fromJson: TearOffValueClass .fromJson)
600
+ final TearOffValueClass factoryValue;
601
+ }
602
+
603
+ class TearOffValueClass {
604
+ const TearOffValueClass (this .value);
605
+
606
+ factory TearOffValueClass .fromJson (String value) => TearOffValueClass (value);
607
+
608
+ final String value;
609
+ }
You can’t perform that action at this time.
0 commit comments