diff --git a/.github/workflows/pr-check-annotation.yml b/.github/workflows/pr-check-annotation.yml index f0344f1e..0e49f47d 100644 --- a/.github/workflows/pr-check-annotation.yml +++ b/.github/workflows/pr-check-annotation.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 3.27.4 + flutter-version: 3.35.5 channel: stable cache: true - name: Check out repository code diff --git a/.github/workflows/pr-check-example.yml b/.github/workflows/pr-check-example.yml index 6af2cb9f..ac3aeabf 100644 --- a/.github/workflows/pr-check-example.yml +++ b/.github/workflows/pr-check-example.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 3.27.4 + flutter-version: 3.35.5 channel: stable cache: true - name: Check out repository code diff --git a/.github/workflows/pr-check-generator-test.yml b/.github/workflows/pr-check-generator-test.yml index 9324bf02..b02569e7 100644 --- a/.github/workflows/pr-check-generator-test.yml +++ b/.github/workflows/pr-check-generator-test.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 3.27.4 + flutter-version: 3.35.5 channel: stable cache: true - name: Check out repository code diff --git a/.github/workflows/pr-check-generator.yml b/.github/workflows/pr-check-generator.yml index e797fd8c..814e1c5a 100644 --- a/.github/workflows/pr-check-generator.yml +++ b/.github/workflows/pr-check-generator.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 3.27.4 + flutter-version: 3.35.5 channel: stable cache: true - name: Check out repository code diff --git a/packages/generator_tests/pubspec.yaml b/packages/generator_tests/pubspec.yaml index 1c710d86..0f51b789 100644 --- a/packages/generator_tests/pubspec.yaml +++ b/packages/generator_tests/pubspec.yaml @@ -19,30 +19,30 @@ version: 1.0.0+1 environment: flutter: ">=3.0.0" - sdk: ">=3.6.0 <4.0.0" + sdk: ">=3.8.0 <4.0.0" resolution: workspace dependencies: - build: ^2.4.2 - source_gen: ^2.0.0 + build: ^3.0.2 + source_gen: ^3.1.0 path: ^1.8.2 build_runner: ^2.4.15 code_builder: ^4.10.1 - dart_style: ^3.0.1 + dart_style: ^3.0.0 recase: ^4.1.0 reactive_forms_annotations: path: ../reactive_forms_annotations - freezed_annotation: ^3.0.0 + freezed_annotation: ^3.1.0 dev_dependencies: json_serializable: - build_test: ^2.2.3 - freezed: ^3.0.6 + build_test: ^3.3.2 + freezed: ^3.2.0 test: ^1.25.15 logging: ^1.3.0 reactive_forms_generator: path: ../reactive_forms_generator - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/packages/generator_tests/test/doc/array_nullable_output_test.dart b/packages/generator_tests/test/doc/array_nullable_output_test.dart index 9dac5e8e..f7e1e2ef 100644 --- a/packages/generator_tests/test/doc/array_nullable_output_test.dart +++ b/packages/generator_tests/test/doc/array_nullable_output_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Form with array nullable types', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/array_nullable_test.dart b/packages/generator_tests/test/doc/array_nullable_test.dart index 905125a6..428b0dd3 100644 --- a/packages/generator_tests/test/doc/array_nullable_test.dart +++ b/packages/generator_tests/test/doc/array_nullable_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Form with array nullable types', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/create_output_test.dart b/packages/generator_tests/test/doc/create_output_test.dart index 0f31becc..428d2601 100644 --- a/packages/generator_tests/test/doc/create_output_test.dart +++ b/packages/generator_tests/test/doc/create_output_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'Create Output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/delivery_list_output_test.dart b/packages/generator_tests/test/doc/delivery_list_output_test.dart index 1fa1cfb3..dc14c28b 100644 --- a/packages/generator_tests/test/doc/delivery_list_output_test.dart +++ b/packages/generator_tests/test/doc/delivery_list_output_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'Delivery list Output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/delivery_list_test.dart b/packages/generator_tests/test/doc/delivery_list_test.dart index d3e9938f..f7116d76 100644 --- a/packages/generator_tests/test/doc/delivery_list_test.dart +++ b/packages/generator_tests/test/doc/delivery_list_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'Delivery list', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/freezed_class_output_test.dart b/packages/generator_tests/test/doc/freezed_class_output_test.dart index bffca501..f0b9e423 100644 --- a/packages/generator_tests/test/doc/freezed_class_output_test.dart +++ b/packages/generator_tests/test/doc/freezed_class_output_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Freezed class output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/freezed_class_test.dart b/packages/generator_tests/test/doc/freezed_class_test.dart index ed2f16a1..86df982c 100644 --- a/packages/generator_tests/test/doc/freezed_class_test.dart +++ b/packages/generator_tests/test/doc/freezed_class_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Freezed class', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/generic_output_test.dart b/packages/generator_tests/test/doc/generic_output_test.dart index 35e50e51..f0302f1b 100644 --- a/packages/generator_tests/test/doc/generic_output_test.dart +++ b/packages/generator_tests/test/doc/generic_output_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Generic Output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/generic_status_list_output_test.dart b/packages/generator_tests/test/doc/generic_status_list_output_test.dart index bdc5fba3..d1cf5c16 100644 --- a/packages/generator_tests/test/doc/generic_status_list_output_test.dart +++ b/packages/generator_tests/test/doc/generic_status_list_output_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Generic status list Output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/generic_status_list_test.dart b/packages/generator_tests/test/doc/generic_status_list_test.dart index ad795d7f..ef1b0226 100644 --- a/packages/generator_tests/test/doc/generic_status_list_test.dart +++ b/packages/generator_tests/test/doc/generic_status_list_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Generic status list', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/generic_test.dart b/packages/generator_tests/test/doc/generic_test.dart index 8ca911b2..6b5eb412 100644 --- a/packages/generator_tests/test/doc/generic_test.dart +++ b/packages/generator_tests/test/doc/generic_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Generic', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/group_output_test.dart b/packages/generator_tests/test/doc/group_output_test.dart index 5d72a0ec..2420bed0 100644 --- a/packages/generator_tests/test/doc/group_output_test.dart +++ b/packages/generator_tests/test/doc/group_output_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Form with nullable groups types', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/group_test.dart b/packages/generator_tests/test/doc/group_test.dart index 9f856311..0082b261 100644 --- a/packages/generator_tests/test/doc/group_test.dart +++ b/packages/generator_tests/test/doc/group_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Form with nullable groups types', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/login_extended_nullable_output_test.dart b/packages/generator_tests/test/doc/login_extended_nullable_output_test.dart index f28157f1..46cfb038 100644 --- a/packages/generator_tests/test/doc/login_extended_nullable_output_test.dart +++ b/packages/generator_tests/test/doc/login_extended_nullable_output_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Login extended nullable Output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/login_extended_nullable_test.dart b/packages/generator_tests/test/doc/login_extended_nullable_test.dart index 45737487..b878ce01 100644 --- a/packages/generator_tests/test/doc/login_extended_nullable_test.dart +++ b/packages/generator_tests/test/doc/login_extended_nullable_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Login extended nullable', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/login_extended_output_test.dart b/packages/generator_tests/test/doc/login_extended_output_test.dart index f93d84a9..2b665468 100644 --- a/packages/generator_tests/test/doc/login_extended_output_test.dart +++ b/packages/generator_tests/test/doc/login_extended_output_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Login extended Output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/login_extended_test.dart b/packages/generator_tests/test/doc/login_extended_test.dart index 3c9a18d9..d9f3acc5 100644 --- a/packages/generator_tests/test/doc/login_extended_test.dart +++ b/packages/generator_tests/test/doc/login_extended_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Login extended', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/login_output_test.dart b/packages/generator_tests/test/doc/login_output_test.dart index 9aeac0e2..fcc98a1b 100644 --- a/packages/generator_tests/test/doc/login_output_test.dart +++ b/packages/generator_tests/test/doc/login_output_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'Login Output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/login_test.dart b/packages/generator_tests/test/doc/login_test.dart index 8a68abe6..bad9ef0a 100644 --- a/packages/generator_tests/test/doc/login_test.dart +++ b/packages/generator_tests/test/doc/login_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'Login', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/mailing_list_output_test.dart b/packages/generator_tests/test/doc/mailing_list_output_test.dart index 7b06b35c..090658cd 100644 --- a/packages/generator_tests/test/doc/mailing_list_output_test.dart +++ b/packages/generator_tests/test/doc/mailing_list_output_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'Mailing list Output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/mailing_list_test.dart b/packages/generator_tests/test/doc/mailing_list_test.dart index 064608ba..012cf58b 100644 --- a/packages/generator_tests/test/doc/mailing_list_test.dart +++ b/packages/generator_tests/test/doc/mailing_list_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'Mailing list', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/nested_generics_output_test.dart b/packages/generator_tests/test/doc/nested_generics_output_test.dart index da7e213f..9d233a18 100644 --- a/packages/generator_tests/test/doc/nested_generics_output_test.dart +++ b/packages/generator_tests/test/doc/nested_generics_output_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Nested generics Output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/nested_generics_test.dart b/packages/generator_tests/test/doc/nested_generics_test.dart index f1fefa85..13210a37 100644 --- a/packages/generator_tests/test/doc/nested_generics_test.dart +++ b/packages/generator_tests/test/doc/nested_generics_test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Nested generics', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/nested_output.test.dart b/packages/generator_tests/test/doc/nested_output.test.dart index 4c8233fc..34181a68 100644 --- a/packages/generator_tests/test/doc/nested_output.test.dart +++ b/packages/generator_tests/test/doc/nested_output.test.dart @@ -9,7 +9,7 @@ void main() { group('reactive_forms_generator', () { test( 'Nested Output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/profile_output_test.dart b/packages/generator_tests/test/doc/profile_output_test.dart index 4ce9ad03..676ec289 100644 --- a/packages/generator_tests/test/doc/profile_output_test.dart +++ b/packages/generator_tests/test/doc/profile_output_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'Profile', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/profile_test.dart b/packages/generator_tests/test/doc/profile_test.dart index c7376782..1fd2fa7a 100644 --- a/packages/generator_tests/test/doc/profile_test.dart +++ b/packages/generator_tests/test/doc/profile_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'Profile', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/renamed_basic_output_test.dart b/packages/generator_tests/test/doc/renamed_basic_output_test.dart index ad37073c..b288584c 100644 --- a/packages/generator_tests/test/doc/renamed_basic_output_test.dart +++ b/packages/generator_tests/test/doc/renamed_basic_output_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'Renamed basic Output', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/renamed_basic_test.dart b/packages/generator_tests/test/doc/renamed_basic_test.dart index 2bd2bb5f..3e5b615d 100644 --- a/packages/generator_tests/test/doc/renamed_basic_test.dart +++ b/packages/generator_tests/test/doc/renamed_basic_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'Renamed basic', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/user_profile_output_test.dart b/packages/generator_tests/test/doc/user_profile_output_test.dart index 2ffe9148..b77d353f 100644 --- a/packages/generator_tests/test/doc/user_profile_output_test.dart +++ b/packages/generator_tests/test/doc/user_profile_output_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'User profile', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/doc/user_profile_test.dart b/packages/generator_tests/test/doc/user_profile_test.dart index 4ebaed7e..c6891f82 100644 --- a/packages/generator_tests/test/doc/user_profile_test.dart +++ b/packages/generator_tests/test/doc/user_profile_test.dart @@ -9,7 +9,7 @@ void main() { group('doc', () { test( 'User profile', - () async { + () async { return testGenerator( fileName: fileName, model: ''' diff --git a/packages/generator_tests/test/form_array_annotation_exception_test.dart b/packages/generator_tests/test/form_array_annotation_exception_test.dart index cab1226f..aa045b0f 100644 --- a/packages/generator_tests/test/form_array_annotation_exception_test.dart +++ b/packages/generator_tests/test/form_array_annotation_exception_test.dart @@ -4,6 +4,8 @@ // e.className == r'SomeQuery$Query')), @Timeout(Duration(seconds: 145)) +import 'dart:io'; + import 'package:build/build.dart'; import 'package:build_test/build_test.dart'; import 'package:reactive_forms_generator/builder.dart'; @@ -34,39 +36,47 @@ const model = ''' '''; void main() { - group('doc', () { - test( - 'Form array annotation exception', - () async { - final anotherBuilder = reactiveFormsGenerator( - const BuilderOptions({}), - ); + group( + skip: true, + 'doc', + () { + test( + 'Form array annotation exception', + () async { + final anotherBuilder = reactiveFormsGenerator( + const BuilderOptions({}), + ); + + expect( + () async { + final readerWriter = + TestReaderWriter(rootPackage: 'reactive_forms_generator'); + await readerWriter.testing.loadIsolateSources(); - expect( - () async { - return await testBuilder( - anotherBuilder, - { - 'a|lib/$fileName.dart': model, - }, - outputs: { - 'a|lib/$fileName.gform.dart': '', - }, - onLog: print, - reader: await PackageAssetReader.currentIsolate(), - ); - }, - throwsA( - predicate( - (e) { - return e is Exception && - e.toString() == - 'Exception: Annotation and field type mismatch. Annotation is typed as `double` and field(`emailList`) as `String`.'; - }, + return await testBuilder( + anotherBuilder, + { + 'a|lib/$fileName.dart': model, + }, + outputs: { + 'a|lib/$fileName.gform.dart': '', + }, + onLog: (message) => stdout.writeln(message), + readerWriter: readerWriter, + ); + }, + throwsA( + predicate( + (e) { + return e is Exception && + e.toString() == + 'Exception: Annotation and field type mismatch. Annotation is typed as `double` and field(`emailList`) as `String`.'; + }, + ), ), - ), - ); - }, - ); - }); + ); + }, + ); + }, + ); } diff --git a/packages/generator_tests/test/form_control_annotation_exception_test.dart b/packages/generator_tests/test/form_control_annotation_exception_test.dart index dc138840..37ee9bf4 100644 --- a/packages/generator_tests/test/form_control_annotation_exception_test.dart +++ b/packages/generator_tests/test/form_control_annotation_exception_test.dart @@ -4,6 +4,8 @@ // e.className == r'SomeQuery$Query')), @Timeout(Duration(seconds: 145)) +import 'dart:io'; + import 'package:build/build.dart'; import 'package:build_test/build_test.dart'; import 'package:reactive_forms_generator/builder.dart'; @@ -41,39 +43,47 @@ const model = r''' '''; void main() { - group('doc', () { - test( - 'Basic', - () async { - final anotherBuilder = reactiveFormsGenerator( - const BuilderOptions({}), - ); + group( + skip: true, + 'doc', + () { + test( + 'Basic', + () async { + final anotherBuilder = reactiveFormsGenerator( + const BuilderOptions({}), + ); + + expect( + () async { + final readerWriter = + TestReaderWriter(rootPackage: 'reactive_forms_generator'); + await readerWriter.testing.loadIsolateSources(); - expect( - () async { - return await testBuilder( - anotherBuilder, - { - 'a|lib/$fileName.dart': model, - }, - outputs: { - 'a|lib/$fileName.gform.dart': '', - }, - onLog: print, - reader: await PackageAssetReader.currentIsolate(), - ); - }, - throwsA( - predicate( - (e) { - return e is Exception && - e.toString() == - 'Exception: Annotation and field type mismatch. Annotation is typed as `double` and field(`email`) as `String`.'; - }, + return await testBuilder( + anotherBuilder, + { + 'a|lib/$fileName.dart': model, + }, + outputs: { + 'a|lib/$fileName.gform.dart': '', + }, + onLog: (message) => stdout.writeln(message), + readerWriter: readerWriter, + ); + }, + throwsA( + predicate( + (e) { + return e is Exception && + e.toString() == + 'Exception: Annotation and field type mismatch. Annotation is typed as `double` and field(`email`) as `String`.'; + }, + ), ), - ), - ); - }, - ); - }); + ); + }, + ); + }, + ); } diff --git a/packages/generator_tests/test/helpers.dart b/packages/generator_tests/test/helpers.dart index 30801634..f9e4dd33 100644 --- a/packages/generator_tests/test/helpers.dart +++ b/packages/generator_tests/test/helpers.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:build/build.dart'; import 'package:build_test/build_test.dart'; import 'package:logging/logging.dart'; @@ -10,6 +12,10 @@ Future testGenerator({ }) async { Logger.root.level = Level.INFO; + final readerWriter = + TestReaderWriter(rootPackage: 'reactive_forms_generator'); + await readerWriter.testing.loadIsolateSources(); + final anotherBuilder = reactiveFormsGenerator( const BuilderOptions({}), ); @@ -22,7 +28,7 @@ Future testGenerator({ outputs: { 'a|lib/$fileName.gform.dart': generatedFile, }, - onLog: print, - reader: await PackageAssetReader.currentIsolate(), + onLog: (message) => stdout.writeln(message), + readerWriter: readerWriter, ); } diff --git a/packages/reactive_forms_annotations/CHANGELOG.md b/packages/reactive_forms_annotations/CHANGELOG.md index 1361188f..498f6211 100644 --- a/packages/reactive_forms_annotations/CHANGELOG.md +++ b/packages/reactive_forms_annotations/CHANGELOG.md @@ -6,6 +6,10 @@ * Rf18 +## [7.1.0-beta0] + +* build 3 + ## [7.0.1] * ReactiveFormArrayItemBuilder diff --git a/packages/reactive_forms_annotations/lib/src/form_array.dart b/packages/reactive_forms_annotations/lib/src/form_array.dart index f1cb7415..af583628 100644 --- a/packages/reactive_forms_annotations/lib/src/form_array.dart +++ b/packages/reactive_forms_annotations/lib/src/form_array.dart @@ -20,7 +20,8 @@ class ReactiveFormArrayItemBuilder extends StatelessWidget { int i, FormControl control, T? item, - ) itemBuilder; + ) + itemBuilder; final Widget Function(BuildContext context)? emptyBuilder; @@ -32,11 +33,7 @@ class ReactiveFormArrayItemBuilder extends StatelessWidget { formArray: formControl, builder: (context, formArray, child) { final values = formArray.controls.indexed - .where((e) => - controlFilter?.call( - e.$2 as FormControl, - ) ?? - true) + .where((e) => controlFilter?.call(e.$2 as FormControl) ?? true) .toList(); final itemList = values @@ -58,11 +55,7 @@ class ReactiveFormArrayItemBuilder extends StatelessWidget { return emptyBuilder!(context); } - return builder?.call( - context, - itemList, - ) ?? - Column(children: itemList); + return builder?.call(context, itemList) ?? Column(children: itemList); }, ); } diff --git a/packages/reactive_forms_annotations/lib/src/form_array_annotation.dart b/packages/reactive_forms_annotations/lib/src/form_array_annotation.dart index c3f13db9..73bf0f52 100644 --- a/packages/reactive_forms_annotations/lib/src/form_array_annotation.dart +++ b/packages/reactive_forms_annotations/lib/src/form_array_annotation.dart @@ -1,9 +1,6 @@ import 'package:reactive_forms_annotations/reactive_forms_annotations.dart'; -enum ValidatorsApplyMode { - merge, - override, -} +enum ValidatorsApplyMode { merge, override } class FormArrayAnnotation { final List> validators; diff --git a/packages/reactive_forms_annotations/lib/src/form_model.dart b/packages/reactive_forms_annotations/lib/src/form_model.dart index bb426d59..824aa504 100644 --- a/packages/reactive_forms_annotations/lib/src/form_model.dart +++ b/packages/reactive_forms_annotations/lib/src/form_model.dart @@ -2,9 +2,7 @@ import 'package:flutter/cupertino.dart'; import 'package:reactive_forms/reactive_forms.dart'; abstract class FormModel { - FormModel({ - required this.form, - }); + FormModel({required this.form}); final FormGroup form; @@ -26,14 +24,7 @@ abstract class FormModel { bool emitEvent = true, }); - reset({ - TModel? value, - bool updateParent = true, - bool emitEvent = true, - }); + reset({TModel? value, bool updateParent = true, bool emitEvent = true}); - void toggleDisabled({ - bool updateParent = true, - bool emitEvent = true, - }); + void toggleDisabled({bool updateParent = true, bool emitEvent = true}); } diff --git a/packages/reactive_forms_annotations/pubspec.yaml b/packages/reactive_forms_annotations/pubspec.yaml index 4c912715..2321515f 100644 --- a/packages/reactive_forms_annotations/pubspec.yaml +++ b/packages/reactive_forms_annotations/pubspec.yaml @@ -2,10 +2,10 @@ name: reactive_forms_annotations description: Annotations for reactive_forms_generator repository: https://github.com/artflutter/reactive_forms_generator -version: 7.0.1 +version: 7.1.0-beta0 environment: - sdk: ">=3.6.0 <4.0.0" + sdk: ">=3.8.0 <4.0.0" resolution: workspace dependencies: @@ -16,4 +16,4 @@ dependencies: sdk: flutter dev_dependencies: - flutter_lints: ^5.0.0 \ No newline at end of file + flutter_lints: ^6.0.0 \ No newline at end of file diff --git a/packages/reactive_forms_generator/CHANGELOG.md b/packages/reactive_forms_generator/CHANGELOG.md index cbe1f282..a3e65dce 100644 --- a/packages/reactive_forms_generator/CHANGELOG.md +++ b/packages/reactive_forms_generator/CHANGELOG.md @@ -1,3 +1,7 @@ +## [7.1.0-beta0] + +* build 3 + ## [7.0.6] * Recursive forms bugfix fix diff --git a/packages/reactive_forms_generator/example/lib/docs/create/create_output.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/create/create_output.freezed.dart index 6781fee6..6a25e6a6 100644 --- a/packages/reactive_forms_generator/example/lib/docs/create/create_output.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/create/create_output.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -204,6 +203,238 @@ class _$MSICreateCopyWithImpl<$Res> implements $MSICreateCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [MSICreate]. +extension MSICreatePatterns on MSICreate { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_MSICreate value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _MSICreate() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_MSICreate value) $default, + ) { + final _that = this; + switch (_that) { + case _MSICreate(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_MSICreate value)? $default, + ) { + final _that = this; + switch (_that) { + case _MSICreate() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + String? id, + String? businessNumber, + List? fileIds, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? name, + Address companyAddress, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String? email, + PrimaryContact primaryContact, + @RfControl() bool sameMailingAddressAsCompany, + Address mailingAddress, + @RfArray() + List admins)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _MSICreate() when $default != null: + return $default( + _that.id, + _that.businessNumber, + _that.fileIds, + _that.name, + _that.companyAddress, + _that.email, + _that.primaryContact, + _that.sameMailingAddressAsCompany, + _that.mailingAddress, + _that.admins); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + String? id, + String? businessNumber, + List? fileIds, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? name, + Address companyAddress, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String? email, + PrimaryContact primaryContact, + @RfControl() bool sameMailingAddressAsCompany, + Address mailingAddress, + @RfArray() + List admins) + $default, + ) { + final _that = this; + switch (_that) { + case _MSICreate(): + return $default( + _that.id, + _that.businessNumber, + _that.fileIds, + _that.name, + _that.companyAddress, + _that.email, + _that.primaryContact, + _that.sameMailingAddressAsCompany, + _that.mailingAddress, + _that.admins); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + String? id, + String? businessNumber, + List? fileIds, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? name, + Address companyAddress, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String? email, + PrimaryContact primaryContact, + @RfControl() bool sameMailingAddressAsCompany, + Address mailingAddress, + @RfArray() + List admins)? + $default, + ) { + final _that = this; + switch (_that) { + case _MSICreate() when $default != null: + return $default( + _that.id, + _that.businessNumber, + _that.fileIds, + _that.name, + _that.companyAddress, + _that.email, + _that.primaryContact, + _that.sameMailingAddressAsCompany, + _that.mailingAddress, + _that.admins); + case _: + return null; + } + } +} + /// @nodoc class _MSICreate implements MSICreate { @@ -543,6 +774,199 @@ class _$AddressCopyWithImpl<$Res> implements $AddressCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [Address]. +extension AddressPatterns on Address { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_Address value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Address() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_Address value) $default, + ) { + final _that = this; + switch (_that) { + case _Address(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_Address value)? $default, + ) { + final _that = this; + switch (_that) { + case _Address() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? street, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? city, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? stateOrProvince, + @RfControl(validators: [RequiredValidator()]) String? zipCode)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Address() when $default != null: + return $default( + _that.street, _that.city, _that.stateOrProvince, _that.zipCode); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? street, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? city, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? stateOrProvince, + @RfControl(validators: [RequiredValidator()]) String? zipCode) + $default, + ) { + final _that = this; + switch (_that) { + case _Address(): + return $default( + _that.street, _that.city, _that.stateOrProvince, _that.zipCode); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? street, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? city, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? stateOrProvince, + @RfControl(validators: [RequiredValidator()]) String? zipCode)? + $default, + ) { + final _that = this; + switch (_that) { + case _Address() when $default != null: + return $default( + _that.street, _that.city, _that.stateOrProvince, _that.zipCode); + case _: + return null; + } + } +} + /// @nodoc class _Address implements Address { @@ -738,6 +1162,184 @@ class _$PrimaryContactCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [PrimaryContact]. +extension PrimaryContactPatterns on PrimaryContact { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_PrimaryContact value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _PrimaryContact() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_PrimaryContact value) $default, + ) { + final _that = this; + switch (_that) { + case _PrimaryContact(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_PrimaryContact value)? $default, + ) { + final _that = this; + switch (_that) { + case _PrimaryContact() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? fullName, + @RfControl(validators: [MaxLengthValidator(120)]) String? jobTitle, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String? email)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _PrimaryContact() when $default != null: + return $default(_that.fullName, _that.jobTitle, _that.email); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? fullName, + @RfControl(validators: [MaxLengthValidator(120)]) String? jobTitle, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String? email) + $default, + ) { + final _that = this; + switch (_that) { + case _PrimaryContact(): + return $default(_that.fullName, _that.jobTitle, _that.email); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? fullName, + @RfControl(validators: [MaxLengthValidator(120)]) String? jobTitle, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String? email)? + $default, + ) { + final _that = this; + switch (_that) { + case _PrimaryContact() when $default != null: + return $default(_that.fullName, _that.jobTitle, _that.email); + case _: + return null; + } + } +} + /// @nodoc class _PrimaryContact implements PrimaryContact { @@ -924,6 +1526,190 @@ class _$AdminContactInformationCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [AdminContactInformation]. +extension AdminContactInformationPatterns on AdminContactInformation { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_AdminContactInformation value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _AdminContactInformation() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_AdminContactInformation value) $default, + ) { + final _that = this; + switch (_that) { + case _AdminContactInformation(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_AdminContactInformation value)? $default, + ) { + final _that = this; + switch (_that) { + case _AdminContactInformation() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? firstName, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? lastName, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String? email)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _AdminContactInformation() when $default != null: + return $default(_that.firstName, _that.lastName, _that.email); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? firstName, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? lastName, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String? email) + $default, + ) { + final _that = this; + switch (_that) { + case _AdminContactInformation(): + return $default(_that.firstName, _that.lastName, _that.email); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? firstName, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String? lastName, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String? email)? + $default, + ) { + final _that = this; + switch (_that) { + case _AdminContactInformation() when $default != null: + return $default(_that.firstName, _that.lastName, _that.email); + case _: + return null; + } + } +} + /// @nodoc class _AdminContactInformation implements AdminContactInformation { @@ -1220,6 +2006,238 @@ class _$MSICreateOutputCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [MSICreateOutput]. +extension MSICreateOutputPatterns on MSICreateOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_MSICreateOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _MSICreateOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_MSICreateOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _MSICreateOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_MSICreateOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _MSICreateOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + String? id, + String? businessNumber, + List? fileIds, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String name, + AddressOutput companyAddress, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String email, + PrimaryContactOutput primaryContact, + @RfControl() bool sameMailingAddressAsCompany, + AddressOutput mailingAddress, + @RfArray() + List admins)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _MSICreateOutput() when $default != null: + return $default( + _that.id, + _that.businessNumber, + _that.fileIds, + _that.name, + _that.companyAddress, + _that.email, + _that.primaryContact, + _that.sameMailingAddressAsCompany, + _that.mailingAddress, + _that.admins); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + String? id, + String? businessNumber, + List? fileIds, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String name, + AddressOutput companyAddress, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String email, + PrimaryContactOutput primaryContact, + @RfControl() bool sameMailingAddressAsCompany, + AddressOutput mailingAddress, + @RfArray() + List admins) + $default, + ) { + final _that = this; + switch (_that) { + case _MSICreateOutput(): + return $default( + _that.id, + _that.businessNumber, + _that.fileIds, + _that.name, + _that.companyAddress, + _that.email, + _that.primaryContact, + _that.sameMailingAddressAsCompany, + _that.mailingAddress, + _that.admins); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + String? id, + String? businessNumber, + List? fileIds, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String name, + AddressOutput companyAddress, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String email, + PrimaryContactOutput primaryContact, + @RfControl() bool sameMailingAddressAsCompany, + AddressOutput mailingAddress, + @RfArray() + List admins)? + $default, + ) { + final _that = this; + switch (_that) { + case _MSICreateOutput() when $default != null: + return $default( + _that.id, + _that.businessNumber, + _that.fileIds, + _that.name, + _that.companyAddress, + _that.email, + _that.primaryContact, + _that.sameMailingAddressAsCompany, + _that.mailingAddress, + _that.admins); + case _: + return null; + } + } +} + /// @nodoc class _MSICreateOutput implements MSICreateOutput { @@ -1557,6 +2575,199 @@ class _$AddressOutputCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [AddressOutput]. +extension AddressOutputPatterns on AddressOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_AddressOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _AddressOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_AddressOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _AddressOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_AddressOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _AddressOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String street, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String city, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String stateOrProvince, + @RfControl(validators: [RequiredValidator()]) String zipCode)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _AddressOutput() when $default != null: + return $default( + _that.street, _that.city, _that.stateOrProvince, _that.zipCode); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String street, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String city, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String stateOrProvince, + @RfControl(validators: [RequiredValidator()]) String zipCode) + $default, + ) { + final _that = this; + switch (_that) { + case _AddressOutput(): + return $default( + _that.street, _that.city, _that.stateOrProvince, _that.zipCode); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String street, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String city, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String stateOrProvince, + @RfControl(validators: [RequiredValidator()]) String zipCode)? + $default, + ) { + final _that = this; + switch (_that) { + case _AddressOutput() when $default != null: + return $default( + _that.street, _that.city, _that.stateOrProvince, _that.zipCode); + case _: + return null; + } + } +} + /// @nodoc class _AddressOutput implements AddressOutput { @@ -1755,6 +2966,184 @@ class _$PrimaryContactOutputCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [PrimaryContactOutput]. +extension PrimaryContactOutputPatterns on PrimaryContactOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_PrimaryContactOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _PrimaryContactOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_PrimaryContactOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _PrimaryContactOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_PrimaryContactOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _PrimaryContactOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String fullName, + @RfControl(validators: [MaxLengthValidator(120)]) String? jobTitle, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String email)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _PrimaryContactOutput() when $default != null: + return $default(_that.fullName, _that.jobTitle, _that.email); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String fullName, + @RfControl(validators: [MaxLengthValidator(120)]) String? jobTitle, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String email) + $default, + ) { + final _that = this; + switch (_that) { + case _PrimaryContactOutput(): + return $default(_that.fullName, _that.jobTitle, _that.email); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String fullName, + @RfControl(validators: [MaxLengthValidator(120)]) String? jobTitle, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String email)? + $default, + ) { + final _that = this; + switch (_that) { + case _PrimaryContactOutput() when $default != null: + return $default(_that.fullName, _that.jobTitle, _that.email); + case _: + return null; + } + } +} + /// @nodoc class _PrimaryContactOutput implements PrimaryContactOutput { @@ -1944,6 +3333,191 @@ class _$AdminContactInformationOutputCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [AdminContactInformationOutput]. +extension AdminContactInformationOutputPatterns + on AdminContactInformationOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_AdminContactInformationOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _AdminContactInformationOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_AdminContactInformationOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _AdminContactInformationOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_AdminContactInformationOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _AdminContactInformationOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String firstName, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String lastName, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String email)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _AdminContactInformationOutput() when $default != null: + return $default(_that.firstName, _that.lastName, _that.email); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String firstName, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String lastName, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String email) + $default, + ) { + final _that = this; + switch (_that) { + case _AdminContactInformationOutput(): + return $default(_that.firstName, _that.lastName, _that.email); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String firstName, + @RfControl( + validators: [RequiredValidator(), MaxLengthValidator(120)]) + String lastName, + @RfControl(validators: [RequiredValidator(), EmailValidator()]) + String email)? + $default, + ) { + final _that = this; + switch (_that) { + case _AdminContactInformationOutput() when $default != null: + return $default(_that.firstName, _that.lastName, _that.email); + case _: + return null; + } + } +} + /// @nodoc class _AdminContactInformationOutput implements AdminContactInformationOutput { diff --git a/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class.freezed.dart index 2afd0325..9e2eb9c8 100644 --- a/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -128,6 +127,187 @@ class _$FreezedClassCopyWithImpl<$Res> implements $FreezedClassCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [FreezedClass]. +extension FreezedClassPatterns on FreezedClass { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_FreezedClass value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _FreezedClass() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_FreezedClass value) $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClass(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_FreezedClass value)? $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClass() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() String? gender, + @RfControl(validators: [RequiredValidator()]) String? id, + @RfControl() String? name, + @JsonKey(name: 'logo_image') @RfControl() String? logoImage, + @RfControl() double? year, + List selectedSpaces)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _FreezedClass() when $default != null: + return $default(_that.gender, _that.id, _that.name, _that.logoImage, + _that.year, _that.selectedSpaces); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() String? gender, + @RfControl(validators: [RequiredValidator()]) String? id, + @RfControl() String? name, + @JsonKey(name: 'logo_image') @RfControl() String? logoImage, + @RfControl() double? year, + List selectedSpaces) + $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClass(): + return $default(_that.gender, _that.id, _that.name, _that.logoImage, + _that.year, _that.selectedSpaces); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() String? gender, + @RfControl(validators: [RequiredValidator()]) String? id, + @RfControl() String? name, + @JsonKey(name: 'logo_image') @RfControl() String? logoImage, + @RfControl() double? year, + List selectedSpaces)? + $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClass() when $default != null: + return $default(_that.gender, _that.id, _that.name, _that.logoImage, + _that.year, _that.selectedSpaces); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _FreezedClass extends FreezedClass { diff --git a/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class_output.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class_output.freezed.dart index 03e94891..6c51e8b0 100644 --- a/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class_output.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/freezed/freezed_class_output.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -165,6 +164,220 @@ class _$FreezedClassOCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [FreezedClassO]. +extension FreezedClassOPatterns on FreezedClassO { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_FreezedClassO value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _FreezedClassO() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_FreezedClassO value) $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClassO(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_FreezedClassO value)? $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClassO() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() String? gender, + @RfControl(validators: [RequiredValidator()]) String? genderR, + @RfControl() String? id, + @RfControl(validators: [RequiredValidator()]) String? idR, + @RfControl(validators: [RequiredValidator()]) String idR2, + @RfControl() String? name, + @JsonKey(name: 'logo_image') @RfControl() String? logoImage, + @RfControl() double? year, + List selectedSpaces)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _FreezedClassO() when $default != null: + return $default( + _that.gender, + _that.genderR, + _that.id, + _that.idR, + _that.idR2, + _that.name, + _that.logoImage, + _that.year, + _that.selectedSpaces); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() String? gender, + @RfControl(validators: [RequiredValidator()]) String? genderR, + @RfControl() String? id, + @RfControl(validators: [RequiredValidator()]) String? idR, + @RfControl(validators: [RequiredValidator()]) String idR2, + @RfControl() String? name, + @JsonKey(name: 'logo_image') @RfControl() String? logoImage, + @RfControl() double? year, + List selectedSpaces) + $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClassO(): + return $default( + _that.gender, + _that.genderR, + _that.id, + _that.idR, + _that.idR2, + _that.name, + _that.logoImage, + _that.year, + _that.selectedSpaces); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() String? gender, + @RfControl(validators: [RequiredValidator()]) String? genderR, + @RfControl() String? id, + @RfControl(validators: [RequiredValidator()]) String? idR, + @RfControl(validators: [RequiredValidator()]) String idR2, + @RfControl() String? name, + @JsonKey(name: 'logo_image') @RfControl() String? logoImage, + @RfControl() double? year, + List selectedSpaces)? + $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClassO() when $default != null: + return $default( + _that.gender, + _that.genderR, + _that.id, + _that.idR, + _that.idR2, + _that.name, + _that.logoImage, + _that.year, + _that.selectedSpaces); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _FreezedClassO extends FreezedClassO { @@ -506,6 +719,220 @@ class _$FreezedClassOOutputCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [FreezedClassOOutput]. +extension FreezedClassOOutputPatterns on FreezedClassOOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_FreezedClassOOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _FreezedClassOOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_FreezedClassOOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClassOOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_FreezedClassOOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClassOOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() String? gender, + @RfControl(validators: [RequiredValidator()]) String genderR, + @RfControl() String? id, + @RfControl(validators: [RequiredValidator()]) String idR, + @RfControl(validators: [RequiredValidator()]) String idR2, + @RfControl() String? name, + @JsonKey(name: 'logo_image') @RfControl() String? logoImage, + @RfControl() double? year, + List selectedSpaces)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _FreezedClassOOutput() when $default != null: + return $default( + _that.gender, + _that.genderR, + _that.id, + _that.idR, + _that.idR2, + _that.name, + _that.logoImage, + _that.year, + _that.selectedSpaces); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() String? gender, + @RfControl(validators: [RequiredValidator()]) String genderR, + @RfControl() String? id, + @RfControl(validators: [RequiredValidator()]) String idR, + @RfControl(validators: [RequiredValidator()]) String idR2, + @RfControl() String? name, + @JsonKey(name: 'logo_image') @RfControl() String? logoImage, + @RfControl() double? year, + List selectedSpaces) + $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClassOOutput(): + return $default( + _that.gender, + _that.genderR, + _that.id, + _that.idR, + _that.idR2, + _that.name, + _that.logoImage, + _that.year, + _that.selectedSpaces); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() String? gender, + @RfControl(validators: [RequiredValidator()]) String genderR, + @RfControl() String? id, + @RfControl(validators: [RequiredValidator()]) String idR, + @RfControl(validators: [RequiredValidator()]) String idR2, + @RfControl() String? name, + @JsonKey(name: 'logo_image') @RfControl() String? logoImage, + @RfControl() double? year, + List selectedSpaces)? + $default, + ) { + final _that = this; + switch (_that) { + case _FreezedClassOOutput() when $default != null: + return $default( + _that.gender, + _that.genderR, + _that.id, + _that.idR, + _that.idR2, + _that.name, + _that.logoImage, + _that.year, + _that.selectedSpaces); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _FreezedClassOOutput extends FreezedClassOOutput { diff --git a/packages/reactive_forms_generator/example/lib/docs/freezed2/test.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/freezed2/test.freezed.dart index 508aaf28..daaf7ec0 100644 --- a/packages/reactive_forms_generator/example/lib/docs/freezed2/test.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/freezed2/test.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -84,6 +83,169 @@ class _$TestCopyWithImpl<$Res> implements $TestCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [Test]. +extension TestPatterns on Test { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_Test value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Test() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_Test value) $default, + ) { + final _that = this; + switch (_that) { + case _Test(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_Test value)? $default, + ) { + final _that = this; + switch (_that) { + case _Test() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfControl() String title, + @RfControl() String? description)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Test() when $default != null: + return $default(_that.title, _that.description); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfControl() String title, + @RfControl() String? description) + $default, + ) { + final _that = this; + switch (_that) { + case _Test(): + return $default(_that.title, _that.description); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfControl() String title, + @RfControl() String? description)? + $default, + ) { + final _that = this; + switch (_that) { + case _Test() when $default != null: + return $default(_that.title, _that.description); + case _: + return null; + } + } +} + /// @nodoc class _Test extends Test { diff --git a/packages/reactive_forms_generator/example/lib/docs/generic/generic.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/generic/generic.freezed.dart index 054976f2..a2856d7a 100644 --- a/packages/reactive_forms_generator/example/lib/docs/generic/generic.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/generic/generic.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -74,6 +73,163 @@ class _$TagsCopyWithImpl implements $TagsCopyWith { } } +/// Adds pattern-matching-related methods to [Tags]. +extension TagsPatterns on Tags { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_Tags value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Tags() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_Tags value) $default, + ) { + final _that = this; + switch (_that) { + case _Tags(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_Tags value)? $default, + ) { + final _that = this; + switch (_that) { + case _Tags() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfControl() List? tags)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Tags() when $default != null: + return $default(_that.tags); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfControl() List? tags) $default, + ) { + final _that = this; + switch (_that) { + case _Tags(): + return $default(_that.tags); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfControl() List? tags)? $default, + ) { + final _that = this; + switch (_that) { + case _Tags() when $default != null: + return $default(_that.tags); + case _: + return null; + } + } +} + /// @nodoc class _Tags extends Tags { diff --git a/packages/reactive_forms_generator/example/lib/docs/generic/generic_output.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/generic/generic_output.freezed.dart index 25304896..84d94857 100644 --- a/packages/reactive_forms_generator/example/lib/docs/generic/generic_output.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/generic/generic_output.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -74,6 +73,163 @@ class _$TagsOCopyWithImpl implements $TagsOCopyWith { } } +/// Adds pattern-matching-related methods to [TagsO]. +extension TagsOPatterns on TagsO { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_TagsO value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _TagsO() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_TagsO value) $default, + ) { + final _that = this; + switch (_that) { + case _TagsO(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_TagsO value)? $default, + ) { + final _that = this; + switch (_that) { + case _TagsO() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfControl() List? tags)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _TagsO() when $default != null: + return $default(_that.tags); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfControl() List? tags) $default, + ) { + final _that = this; + switch (_that) { + case _TagsO(): + return $default(_that.tags); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfControl() List? tags)? $default, + ) { + final _that = this; + switch (_that) { + case _TagsO() when $default != null: + return $default(_that.tags); + case _: + return null; + } + } +} + /// @nodoc class _TagsO extends TagsO { @@ -215,6 +371,163 @@ class _$TagsOOutputCopyWithImpl } } +/// Adds pattern-matching-related methods to [TagsOOutput]. +extension TagsOOutputPatterns on TagsOOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_TagsOOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _TagsOOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_TagsOOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _TagsOOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_TagsOOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _TagsOOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfControl() List? tags)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _TagsOOutput() when $default != null: + return $default(_that.tags); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfControl() List? tags) $default, + ) { + final _that = this; + switch (_that) { + case _TagsOOutput(): + return $default(_that.tags); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfControl() List? tags)? $default, + ) { + final _that = this; + switch (_that) { + case _TagsOOutput() when $default != null: + return $default(_that.tags); + case _: + return null; + } + } +} + /// @nodoc class _TagsOOutput extends TagsOOutput { diff --git a/packages/reactive_forms_generator/example/lib/docs/nested/nested.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/nested/nested.freezed.dart index 3d5fdb0b..ed84cecb 100644 --- a/packages/reactive_forms_generator/example/lib/docs/nested/nested.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/nested/nested.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -77,6 +76,163 @@ class _$SubGroupCopyWithImpl<$Res> implements $SubGroupCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [SubGroup]. +extension SubGroupPatterns on SubGroup { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_SubGroup value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _SubGroup() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_SubGroup value) $default, + ) { + final _that = this; + switch (_that) { + case _SubGroup(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_SubGroup value)? $default, + ) { + final _that = this; + switch (_that) { + case _SubGroup() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfControl() String id)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _SubGroup() when $default != null: + return $default(_that.id); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfControl() String id) $default, + ) { + final _that = this; + switch (_that) { + case _SubGroup(): + return $default(_that.id); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfControl() String id)? $default, + ) { + final _that = this; + switch (_that) { + case _SubGroup() when $default != null: + return $default(_that.id); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _SubGroup implements SubGroup { @@ -230,6 +386,169 @@ class _$GroupCopyWithImpl<$Res> implements $GroupCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [Group]. +extension GroupPatterns on Group { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_Group value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Group() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_Group value) $default, + ) { + final _that = this; + switch (_that) { + case _Group(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_Group value)? $default, + ) { + final _that = this; + switch (_that) { + case _Group() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfControl() String id, + @RfArray() List subGroupList)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Group() when $default != null: + return $default(_that.id, _that.subGroupList); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfControl() String id, + @RfArray() List subGroupList) + $default, + ) { + final _that = this; + switch (_that) { + case _Group(): + return $default(_that.id, _that.subGroupList); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfControl() String id, + @RfArray() List subGroupList)? + $default, + ) { + final _that = this; + switch (_that) { + case _Group() when $default != null: + return $default(_that.id, _that.subGroupList); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _Group implements Group { @@ -391,6 +710,163 @@ class _$NestedCopyWithImpl<$Res> implements $NestedCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [Nested]. +extension NestedPatterns on Nested { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_Nested value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Nested() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_Nested value) $default, + ) { + final _that = this; + switch (_that) { + case _Nested(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_Nested value)? $default, + ) { + final _that = this; + switch (_that) { + case _Nested() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfArray() List groupList)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Nested() when $default != null: + return $default(_that.groupList); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfArray() List groupList) $default, + ) { + final _that = this; + switch (_that) { + case _Nested(): + return $default(_that.groupList); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfArray() List groupList)? $default, + ) { + final _that = this; + switch (_that) { + case _Nested() when $default != null: + return $default(_that.groupList); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _Nested implements Nested { diff --git a/packages/reactive_forms_generator/example/lib/docs/nested/nested_output.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/nested/nested_output.freezed.dart index fc9be0aa..7b8eb928 100644 --- a/packages/reactive_forms_generator/example/lib/docs/nested/nested_output.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/nested/nested_output.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -77,6 +76,163 @@ class _$SubGroupOCopyWithImpl<$Res> implements $SubGroupOCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [SubGroupO]. +extension SubGroupOPatterns on SubGroupO { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_SubGroupO value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _SubGroupO() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_SubGroupO value) $default, + ) { + final _that = this; + switch (_that) { + case _SubGroupO(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_SubGroupO value)? $default, + ) { + final _that = this; + switch (_that) { + case _SubGroupO() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfControl() String id)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _SubGroupO() when $default != null: + return $default(_that.id); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfControl() String id) $default, + ) { + final _that = this; + switch (_that) { + case _SubGroupO(): + return $default(_that.id); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfControl() String id)? $default, + ) { + final _that = this; + switch (_that) { + case _SubGroupO() when $default != null: + return $default(_that.id); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _SubGroupO implements SubGroupO { @@ -231,6 +387,169 @@ class _$GroupOCopyWithImpl<$Res> implements $GroupOCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [GroupO]. +extension GroupOPatterns on GroupO { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_GroupO value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _GroupO() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_GroupO value) $default, + ) { + final _that = this; + switch (_that) { + case _GroupO(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_GroupO value)? $default, + ) { + final _that = this; + switch (_that) { + case _GroupO() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfControl() String id, + @RfArray() List subGroupList)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _GroupO() when $default != null: + return $default(_that.id, _that.subGroupList); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfControl() String id, + @RfArray() List subGroupList) + $default, + ) { + final _that = this; + switch (_that) { + case _GroupO(): + return $default(_that.id, _that.subGroupList); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfControl() String id, + @RfArray() List subGroupList)? + $default, + ) { + final _that = this; + switch (_that) { + case _GroupO() when $default != null: + return $default(_that.id, _that.subGroupList); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _GroupO implements GroupO { @@ -392,6 +711,163 @@ class _$NestedOCopyWithImpl<$Res> implements $NestedOCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [NestedO]. +extension NestedOPatterns on NestedO { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_NestedO value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _NestedO() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_NestedO value) $default, + ) { + final _that = this; + switch (_that) { + case _NestedO(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_NestedO value)? $default, + ) { + final _that = this; + switch (_that) { + case _NestedO() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfArray() List groupList)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _NestedO() when $default != null: + return $default(_that.groupList); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfArray() List groupList) $default, + ) { + final _that = this; + switch (_that) { + case _NestedO(): + return $default(_that.groupList); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfArray() List groupList)? $default, + ) { + final _that = this; + switch (_that) { + case _NestedO() when $default != null: + return $default(_that.groupList); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _NestedO implements NestedO { @@ -543,6 +1019,163 @@ class _$SubGroupOOutputCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [SubGroupOOutput]. +extension SubGroupOOutputPatterns on SubGroupOOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_SubGroupOOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _SubGroupOOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_SubGroupOOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _SubGroupOOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_SubGroupOOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _SubGroupOOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfControl() String id)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _SubGroupOOutput() when $default != null: + return $default(_that.id); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfControl() String id) $default, + ) { + final _that = this; + switch (_that) { + case _SubGroupOOutput(): + return $default(_that.id); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfControl() String id)? $default, + ) { + final _that = this; + switch (_that) { + case _SubGroupOOutput() when $default != null: + return $default(_that.id); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _SubGroupOOutput implements SubGroupOOutput { @@ -700,6 +1333,169 @@ class _$GroupOOutputCopyWithImpl<$Res> implements $GroupOOutputCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [GroupOOutput]. +extension GroupOOutputPatterns on GroupOOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_GroupOOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _GroupOOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_GroupOOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _GroupOOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_GroupOOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _GroupOOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfControl() String id, + @RfArray() List subGroupList)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _GroupOOutput() when $default != null: + return $default(_that.id, _that.subGroupList); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfControl() String id, + @RfArray() List subGroupList) + $default, + ) { + final _that = this; + switch (_that) { + case _GroupOOutput(): + return $default(_that.id, _that.subGroupList); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfControl() String id, + @RfArray() List subGroupList)? + $default, + ) { + final _that = this; + switch (_that) { + case _GroupOOutput() when $default != null: + return $default(_that.id, _that.subGroupList); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _GroupOOutput implements GroupOOutput { @@ -868,6 +1664,165 @@ class _$NestedOOutputCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [NestedOOutput]. +extension NestedOOutputPatterns on NestedOOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_NestedOOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _NestedOOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_NestedOOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _NestedOOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_NestedOOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _NestedOOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfArray() List groupList)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _NestedOOutput() when $default != null: + return $default(_that.groupList); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfArray() List groupList) $default, + ) { + final _that = this; + switch (_that) { + case _NestedOOutput(): + return $default(_that.groupList); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfArray() List groupList)? + $default, + ) { + final _that = this; + switch (_that) { + case _NestedOOutput() when $default != null: + return $default(_that.groupList); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _NestedOOutput implements NestedOOutput { diff --git a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.freezed.dart index f47679e1..78f0e17d 100644 --- a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -102,6 +101,170 @@ class _$ProductDetailsCopyWithImpl

} } +/// Adds pattern-matching-related methods to [ProductDetails]. +extension ProductDetailsPatterns

+ on ProductDetails { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ProductDetails value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ProductDetails() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ProductDetails value) $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetails(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ProductDetails value)? $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetails() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() String? description, @Rf(output: false) Id? id)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ProductDetails() when $default != null: + return $default(_that.description, _that.id); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() String? description, @Rf(output: false) Id? id) + $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetails(): + return $default(_that.description, _that.id); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() String? description, @Rf(output: false) Id? id)? + $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetails() when $default != null: + return $default(_that.description, _that.id); + case _: + return null; + } + } +} + /// @nodoc class _ProductDetails

@@ -272,6 +435,169 @@ class _$IdCopyWithImpl

} } +/// Adds pattern-matching-related methods to [Id]. +extension IdPatterns

on Id { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_Id value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Id() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_Id value) $default, + ) { + final _that = this; + switch (_that) { + case _Id(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_Id value)? $default, + ) { + final _that = this; + switch (_that) { + case _Id() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() String? companyName, @RfControl() String? name)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Id() when $default != null: + return $default(_that.companyName, _that.name); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() String? companyName, @RfControl() String? name) + $default, + ) { + final _that = this; + switch (_that) { + case _Id(): + return $default(_that.companyName, _that.name); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() String? companyName, @RfControl() String? name)? + $default, + ) { + final _that = this; + switch (_that) { + case _Id() when $default != null: + return $default(_that.companyName, _that.name); + case _: + return null; + } + } +} + /// @nodoc class _Id

extends Id { @@ -417,6 +743,163 @@ class _$ProductCopyWithImpl<$Res> implements $ProductCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [Product]. +extension ProductPatterns on Product { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_Product value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Product() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_Product value) $default, + ) { + final _that = this; + switch (_that) { + case _Product(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_Product value)? $default, + ) { + final _that = this; + switch (_that) { + case _Product() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(String? companyName, String? name)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Product() when $default != null: + return $default(_that.companyName, _that.name); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(String? companyName, String? name) $default, + ) { + final _that = this; + switch (_that) { + case _Product(): + return $default(_that.companyName, _that.name); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(String? companyName, String? name)? $default, + ) { + final _that = this; + switch (_that) { + case _Product() when $default != null: + return $default(_that.companyName, _that.name); + case _: + return null; + } + } +} + /// @nodoc class _Product extends Product { @@ -574,6 +1057,163 @@ class _$CartCopyWithImpl<$Res> implements $CartCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [Cart]. +extension CartPatterns on Cart { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_Cart value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Cart() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_Cart value) $default, + ) { + final _that = this; + switch (_that) { + case _Cart(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_Cart value)? $default, + ) { + final _that = this; + switch (_that) { + case _Cart() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(Product? product, String? description)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Cart() when $default != null: + return $default(_that.product, _that.description); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(Product? product, String? description) $default, + ) { + final _that = this; + switch (_that) { + case _Cart(): + return $default(_that.product, _that.description); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(Product? product, String? description)? $default, + ) { + final _that = this; + switch (_that) { + case _Cart() when $default != null: + return $default(_that.product, _that.description); + case _: + return null; + } + } +} + /// @nodoc class _Cart extends Cart { diff --git a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.freezed.dart index 78e7d2e1..3c42342f 100644 --- a/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/nested_generics/nested_generics_output.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -103,6 +102,170 @@ class _$ProductDetailsOCopyWithImpl

} } +/// Adds pattern-matching-related methods to [ProductDetailsO]. +extension ProductDetailsOPatterns

+ on ProductDetailsO { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ProductDetailsO value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ProductDetailsO() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ProductDetailsO value) $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetailsO(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ProductDetailsO value)? $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetailsO() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() String? description, @Rf(output: false) IdO? id)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ProductDetailsO() when $default != null: + return $default(_that.description, _that.id); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() String? description, @Rf(output: false) IdO? id) + $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetailsO(): + return $default(_that.description, _that.id); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() String? description, @Rf(output: false) IdO? id)? + $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetailsO() when $default != null: + return $default(_that.description, _that.id); + case _: + return null; + } + } +} + /// @nodoc class _ProductDetailsO

@@ -273,6 +436,169 @@ class _$IdOCopyWithImpl

} } +/// Adds pattern-matching-related methods to [IdO]. +extension IdOPatterns

on IdO { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_IdO value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _IdO() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_IdO value) $default, + ) { + final _that = this; + switch (_that) { + case _IdO(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_IdO value)? $default, + ) { + final _that = this; + switch (_that) { + case _IdO() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() String? companyName, @RfControl() String? name)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _IdO() when $default != null: + return $default(_that.companyName, _that.name); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() String? companyName, @RfControl() String? name) + $default, + ) { + final _that = this; + switch (_that) { + case _IdO(): + return $default(_that.companyName, _that.name); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() String? companyName, @RfControl() String? name)? + $default, + ) { + final _that = this; + switch (_that) { + case _IdO() when $default != null: + return $default(_that.companyName, _that.name); + case _: + return null; + } + } +} + /// @nodoc class _IdO

extends IdO { @@ -418,6 +744,163 @@ class _$ProductCopyWithImpl<$Res> implements $ProductCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [Product]. +extension ProductPatterns on Product { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_Product value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Product() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_Product value) $default, + ) { + final _that = this; + switch (_that) { + case _Product(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_Product value)? $default, + ) { + final _that = this; + switch (_that) { + case _Product() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(String? companyName, String? name)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Product() when $default != null: + return $default(_that.companyName, _that.name); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(String? companyName, String? name) $default, + ) { + final _that = this; + switch (_that) { + case _Product(): + return $default(_that.companyName, _that.name); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(String? companyName, String? name)? $default, + ) { + final _that = this; + switch (_that) { + case _Product() when $default != null: + return $default(_that.companyName, _that.name); + case _: + return null; + } + } +} + /// @nodoc class _Product extends Product { @@ -575,6 +1058,163 @@ class _$CartCopyWithImpl<$Res> implements $CartCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [Cart]. +extension CartPatterns on Cart { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_Cart value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Cart() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_Cart value) $default, + ) { + final _that = this; + switch (_that) { + case _Cart(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_Cart value)? $default, + ) { + final _that = this; + switch (_that) { + case _Cart() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(Product? product, String? description)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Cart() when $default != null: + return $default(_that.product, _that.description); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(Product? product, String? description) $default, + ) { + final _that = this; + switch (_that) { + case _Cart(): + return $default(_that.product, _that.description); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(Product? product, String? description)? $default, + ) { + final _that = this; + switch (_that) { + case _Cart() when $default != null: + return $default(_that.product, _that.description); + case _: + return null; + } + } +} + /// @nodoc class _Cart extends Cart { @@ -758,6 +1398,170 @@ class _$ProductDetailsOOutputCopyWithImpl

+ on ProductDetailsOOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ProductDetailsOOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ProductDetailsOOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ProductDetailsOOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetailsOOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ProductDetailsOOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetailsOOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(@RfControl() String? description, + @Rf(output: false) IdOOutput? id)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ProductDetailsOOutput() when $default != null: + return $default(_that.description, _that.id); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(@RfControl() String? description, + @Rf(output: false) IdOOutput? id) + $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetailsOOutput(): + return $default(_that.description, _that.id); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(@RfControl() String? description, + @Rf(output: false) IdOOutput? id)? + $default, + ) { + final _that = this; + switch (_that) { + case _ProductDetailsOOutput() when $default != null: + return $default(_that.description, _that.id); + case _: + return null; + } + } +} + /// @nodoc class _ProductDetailsOOutput

@@ -935,6 +1739,170 @@ class _$IdOOutputCopyWithImpl

} } +/// Adds pattern-matching-related methods to [IdOOutput]. +extension IdOOutputPatterns

+ on IdOOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_IdOOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _IdOOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_IdOOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _IdOOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_IdOOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _IdOOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() String? companyName, @RfControl() String? name)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _IdOOutput() when $default != null: + return $default(_that.companyName, _that.name); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() String? companyName, @RfControl() String? name) + $default, + ) { + final _that = this; + switch (_that) { + case _IdOOutput(): + return $default(_that.companyName, _that.name); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() String? companyName, @RfControl() String? name)? + $default, + ) { + final _that = this; + switch (_that) { + case _IdOOutput() when $default != null: + return $default(_that.companyName, _that.name); + case _: + return null; + } + } +} + /// @nodoc class _IdOOutput

extends IdOOutput { diff --git a/packages/reactive_forms_generator/example/lib/docs/profile/profile.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/profile/profile.freezed.dart index ad63e7e8..1b2b774a 100644 --- a/packages/reactive_forms_generator/example/lib/docs/profile/profile.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/profile/profile.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -217,6 +216,226 @@ class _$ProfileCopyWithImpl<$Res> implements $ProfileCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [Profile]. +extension ProfilePatterns on Profile { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_Profile value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Profile() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_Profile value) $default, + ) { + final _that = this; + switch (_that) { + case _Profile(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_Profile value)? $default, + ) { + final _that = this; + switch (_that) { + case _Profile() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + String id, + String anotherId, + @RfControl() String name, + @RfControl() ChartingOrderValue chartingOrder, + @RfControl() NumberingStandard numberingStandard, + IncidenceFilter incidenceFilter, + @RfControl() MeasurementType measurementType, + ThresholdSetting threshold, + TimerSetting timer, + @RfControl() bool audioGuidance)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _Profile() when $default != null: + return $default( + _that.id, + _that.anotherId, + _that.name, + _that.chartingOrder, + _that.numberingStandard, + _that.incidenceFilter, + _that.measurementType, + _that.threshold, + _that.timer, + _that.audioGuidance); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + String id, + String anotherId, + @RfControl() String name, + @RfControl() ChartingOrderValue chartingOrder, + @RfControl() NumberingStandard numberingStandard, + IncidenceFilter incidenceFilter, + @RfControl() MeasurementType measurementType, + ThresholdSetting threshold, + TimerSetting timer, + @RfControl() bool audioGuidance) + $default, + ) { + final _that = this; + switch (_that) { + case _Profile(): + return $default( + _that.id, + _that.anotherId, + _that.name, + _that.chartingOrder, + _that.numberingStandard, + _that.incidenceFilter, + _that.measurementType, + _that.threshold, + _that.timer, + _that.audioGuidance); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + String id, + String anotherId, + @RfControl() String name, + @RfControl() ChartingOrderValue chartingOrder, + @RfControl() NumberingStandard numberingStandard, + IncidenceFilter incidenceFilter, + @RfControl() MeasurementType measurementType, + ThresholdSetting threshold, + TimerSetting timer, + @RfControl() bool audioGuidance)? + $default, + ) { + final _that = this; + switch (_that) { + case _Profile() when $default != null: + return $default( + _that.id, + _that.anotherId, + _that.name, + _that.chartingOrder, + _that.numberingStandard, + _that.incidenceFilter, + _that.measurementType, + _that.threshold, + _that.timer, + _that.audioGuidance); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _Profile extends Profile { @@ -532,6 +751,169 @@ class _$ThresholdSettingCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [ThresholdSetting]. +extension ThresholdSettingPatterns on ThresholdSetting { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ThresholdSetting value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ThresholdSetting() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ThresholdSetting value) $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSetting(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ThresholdSetting value)? $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSetting() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ThresholdSetting() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value) + $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSetting(): + return $default(_that.isEnabled, _that.value); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSetting() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _ThresholdSetting implements ThresholdSetting { @@ -700,6 +1082,169 @@ class _$TimerSettingCopyWithImpl<$Res> implements $TimerSettingCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [TimerSetting]. +extension TimerSettingPatterns on TimerSetting { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_TimerSetting value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _TimerSetting() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_TimerSetting value) $default, + ) { + final _that = this; + switch (_that) { + case _TimerSetting(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_TimerSetting value)? $default, + ) { + final _that = this; + switch (_that) { + case _TimerSetting() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _TimerSetting() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value) + $default, + ) { + final _that = this; + switch (_that) { + case _TimerSetting(): + return $default(_that.isEnabled, _that.value); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, + ) { + final _that = this; + switch (_that) { + case _TimerSetting() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _TimerSetting implements TimerSetting { @@ -919,6 +1464,202 @@ class _$IncidenceFilterCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [IncidenceFilter]. +extension IncidenceFilterPatterns on IncidenceFilter { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_IncidenceFilter value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _IncidenceFilter() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_IncidenceFilter value) $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilter(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_IncidenceFilter value)? $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilter() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() bool isMobilityEnabled, + @RfControl() bool isFurcationEnabled, + @RfControl() bool isBleedingEnabled, + @RfControl() bool isSuppurationEnabled, + @RfControl() bool isCalculusEnabled, + @RfControl() bool isPlaqueEnabled)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _IncidenceFilter() when $default != null: + return $default( + _that.isMobilityEnabled, + _that.isFurcationEnabled, + _that.isBleedingEnabled, + _that.isSuppurationEnabled, + _that.isCalculusEnabled, + _that.isPlaqueEnabled); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() bool isMobilityEnabled, + @RfControl() bool isFurcationEnabled, + @RfControl() bool isBleedingEnabled, + @RfControl() bool isSuppurationEnabled, + @RfControl() bool isCalculusEnabled, + @RfControl() bool isPlaqueEnabled) + $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilter(): + return $default( + _that.isMobilityEnabled, + _that.isFurcationEnabled, + _that.isBleedingEnabled, + _that.isSuppurationEnabled, + _that.isCalculusEnabled, + _that.isPlaqueEnabled); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() bool isMobilityEnabled, + @RfControl() bool isFurcationEnabled, + @RfControl() bool isBleedingEnabled, + @RfControl() bool isSuppurationEnabled, + @RfControl() bool isCalculusEnabled, + @RfControl() bool isPlaqueEnabled)? + $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilter() when $default != null: + return $default( + _that.isMobilityEnabled, + _that.isFurcationEnabled, + _that.isBleedingEnabled, + _that.isSuppurationEnabled, + _that.isCalculusEnabled, + _that.isPlaqueEnabled); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _IncidenceFilter implements IncidenceFilter { @@ -1159,6 +1900,188 @@ class _$ScanOrderCopyWithImpl<$Res> implements $ScanOrderCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [ScanOrder]. +extension ScanOrderPatterns on ScanOrder { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap({ + TResult Function(ArchScanOrder value)? arch, + TResult Function(QuadrantScanOrder value)? quadrant, + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case ArchScanOrder() when arch != null: + return arch(_that); + case QuadrantScanOrder() when quadrant != null: + return quadrant(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map({ + required TResult Function(ArchScanOrder value) arch, + required TResult Function(QuadrantScanOrder value) quadrant, + }) { + final _that = this; + switch (_that) { + case ArchScanOrder(): + return arch(_that); + case QuadrantScanOrder(): + return quadrant(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(ArchScanOrder value)? arch, + TResult? Function(QuadrantScanOrder value)? quadrant, + }) { + final _that = this; + switch (_that) { + case ArchScanOrder() when arch != null: + return arch(_that); + case QuadrantScanOrder() when quadrant != null: + return quadrant(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(Jaw jaw, Direction direction, ToothSide toothSide)? arch, + TResult Function( + Quadrant quadrant, Direction direction, ToothSide toothSide)? + quadrant, + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case ArchScanOrder() when arch != null: + return arch(_that.jaw, _that.direction, _that.toothSide); + case QuadrantScanOrder() when quadrant != null: + return quadrant(_that.quadrant, _that.direction, _that.toothSide); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when({ + required TResult Function(Jaw jaw, Direction direction, ToothSide toothSide) + arch, + required TResult Function( + Quadrant quadrant, Direction direction, ToothSide toothSide) + quadrant, + }) { + final _that = this; + switch (_that) { + case ArchScanOrder(): + return arch(_that.jaw, _that.direction, _that.toothSide); + case QuadrantScanOrder(): + return quadrant(_that.quadrant, _that.direction, _that.toothSide); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(Jaw jaw, Direction direction, ToothSide toothSide)? arch, + TResult? Function( + Quadrant quadrant, Direction direction, ToothSide toothSide)? + quadrant, + }) { + final _that = this; + switch (_that) { + case ArchScanOrder() when arch != null: + return arch(_that.jaw, _that.direction, _that.toothSide); + case QuadrantScanOrder() when quadrant != null: + return quadrant(_that.quadrant, _that.direction, _that.toothSide); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class ArchScanOrder implements ScanOrder { @@ -1446,6 +2369,169 @@ class _$ChartingOrderValueCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [ChartingOrderValue]. +extension ChartingOrderValuePatterns on ChartingOrderValue { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ChartingOrderValue value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ChartingOrderValue() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ChartingOrderValue value) $default, + ) { + final _that = this; + switch (_that) { + case _ChartingOrderValue(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ChartingOrderValue value)? $default, + ) { + final _that = this; + switch (_that) { + case _ChartingOrderValue() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(ChartingOrderType chartingOrder, int selectedOption, + List> order)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ChartingOrderValue() when $default != null: + return $default(_that.chartingOrder, _that.selectedOption, _that.order); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(ChartingOrderType chartingOrder, int selectedOption, + List> order) + $default, + ) { + final _that = this; + switch (_that) { + case _ChartingOrderValue(): + return $default(_that.chartingOrder, _that.selectedOption, _that.order); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(ChartingOrderType chartingOrder, int selectedOption, + List> order)? + $default, + ) { + final _that = this; + switch (_that) { + case _ChartingOrderValue() when $default != null: + return $default(_that.chartingOrder, _that.selectedOption, _that.order); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _ChartingOrderValue implements ChartingOrderValue { diff --git a/packages/reactive_forms_generator/example/lib/docs/profile/profile_output.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/profile/profile_output.freezed.dart index 87de57f7..67f000f2 100644 --- a/packages/reactive_forms_generator/example/lib/docs/profile/profile_output.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/profile/profile_output.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -217,6 +216,226 @@ class _$ProfileOCopyWithImpl<$Res> implements $ProfileOCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [ProfileO]. +extension ProfileOPatterns on ProfileO { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ProfileO value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ProfileO() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ProfileO value) $default, + ) { + final _that = this; + switch (_that) { + case _ProfileO(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ProfileO value)? $default, + ) { + final _that = this; + switch (_that) { + case _ProfileO() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + String id, + String anotherId, + @RfControl() String name, + @RfControl() ChartingOrderValue chartingOrder, + @RfControl() NumberingStandard numberingStandard, + IncidenceFilterO incidenceFilter, + @RfControl() MeasurementType measurementType, + ThresholdSettingO threshold, + TimerSettingO timer, + @RfControl() bool audioGuidance)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ProfileO() when $default != null: + return $default( + _that.id, + _that.anotherId, + _that.name, + _that.chartingOrder, + _that.numberingStandard, + _that.incidenceFilter, + _that.measurementType, + _that.threshold, + _that.timer, + _that.audioGuidance); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + String id, + String anotherId, + @RfControl() String name, + @RfControl() ChartingOrderValue chartingOrder, + @RfControl() NumberingStandard numberingStandard, + IncidenceFilterO incidenceFilter, + @RfControl() MeasurementType measurementType, + ThresholdSettingO threshold, + TimerSettingO timer, + @RfControl() bool audioGuidance) + $default, + ) { + final _that = this; + switch (_that) { + case _ProfileO(): + return $default( + _that.id, + _that.anotherId, + _that.name, + _that.chartingOrder, + _that.numberingStandard, + _that.incidenceFilter, + _that.measurementType, + _that.threshold, + _that.timer, + _that.audioGuidance); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + String id, + String anotherId, + @RfControl() String name, + @RfControl() ChartingOrderValue chartingOrder, + @RfControl() NumberingStandard numberingStandard, + IncidenceFilterO incidenceFilter, + @RfControl() MeasurementType measurementType, + ThresholdSettingO threshold, + TimerSettingO timer, + @RfControl() bool audioGuidance)? + $default, + ) { + final _that = this; + switch (_that) { + case _ProfileO() when $default != null: + return $default( + _that.id, + _that.anotherId, + _that.name, + _that.chartingOrder, + _that.numberingStandard, + _that.incidenceFilter, + _that.measurementType, + _that.threshold, + _that.timer, + _that.audioGuidance); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _ProfileO extends ProfileO { @@ -533,6 +752,169 @@ class _$ThresholdSettingOCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [ThresholdSettingO]. +extension ThresholdSettingOPatterns on ThresholdSettingO { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ThresholdSettingO value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ThresholdSettingO() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ThresholdSettingO value) $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSettingO(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ThresholdSettingO value)? $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSettingO() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ThresholdSettingO() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value) + $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSettingO(): + return $default(_that.isEnabled, _that.value); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSettingO() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _ThresholdSettingO implements ThresholdSettingO { @@ -702,6 +1084,169 @@ class _$TimerSettingOCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [TimerSettingO]. +extension TimerSettingOPatterns on TimerSettingO { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_TimerSettingO value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _TimerSettingO() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_TimerSettingO value) $default, + ) { + final _that = this; + switch (_that) { + case _TimerSettingO(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_TimerSettingO value)? $default, + ) { + final _that = this; + switch (_that) { + case _TimerSettingO() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _TimerSettingO() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value) + $default, + ) { + final _that = this; + switch (_that) { + case _TimerSettingO(): + return $default(_that.isEnabled, _that.value); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, + ) { + final _that = this; + switch (_that) { + case _TimerSettingO() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _TimerSettingO implements TimerSettingO { @@ -921,6 +1466,202 @@ class _$IncidenceFilterOCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [IncidenceFilterO]. +extension IncidenceFilterOPatterns on IncidenceFilterO { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_IncidenceFilterO value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _IncidenceFilterO() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_IncidenceFilterO value) $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilterO(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_IncidenceFilterO value)? $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilterO() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() bool isMobilityEnabled, + @RfControl() bool isFurcationEnabled, + @RfControl() bool isBleedingEnabled, + @RfControl() bool isSuppurationEnabled, + @RfControl() bool isCalculusEnabled, + @RfControl() bool isPlaqueEnabled)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _IncidenceFilterO() when $default != null: + return $default( + _that.isMobilityEnabled, + _that.isFurcationEnabled, + _that.isBleedingEnabled, + _that.isSuppurationEnabled, + _that.isCalculusEnabled, + _that.isPlaqueEnabled); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() bool isMobilityEnabled, + @RfControl() bool isFurcationEnabled, + @RfControl() bool isBleedingEnabled, + @RfControl() bool isSuppurationEnabled, + @RfControl() bool isCalculusEnabled, + @RfControl() bool isPlaqueEnabled) + $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilterO(): + return $default( + _that.isMobilityEnabled, + _that.isFurcationEnabled, + _that.isBleedingEnabled, + _that.isSuppurationEnabled, + _that.isCalculusEnabled, + _that.isPlaqueEnabled); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() bool isMobilityEnabled, + @RfControl() bool isFurcationEnabled, + @RfControl() bool isBleedingEnabled, + @RfControl() bool isSuppurationEnabled, + @RfControl() bool isCalculusEnabled, + @RfControl() bool isPlaqueEnabled)? + $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilterO() when $default != null: + return $default( + _that.isMobilityEnabled, + _that.isFurcationEnabled, + _that.isBleedingEnabled, + _that.isSuppurationEnabled, + _that.isCalculusEnabled, + _that.isPlaqueEnabled); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _IncidenceFilterO implements IncidenceFilterO { @@ -1161,6 +1902,188 @@ class _$ScanOrderCopyWithImpl<$Res> implements $ScanOrderCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [ScanOrder]. +extension ScanOrderPatterns on ScanOrder { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap({ + TResult Function(ArchScanOrder value)? arch, + TResult Function(QuadrantScanOrder value)? quadrant, + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case ArchScanOrder() when arch != null: + return arch(_that); + case QuadrantScanOrder() when quadrant != null: + return quadrant(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map({ + required TResult Function(ArchScanOrder value) arch, + required TResult Function(QuadrantScanOrder value) quadrant, + }) { + final _that = this; + switch (_that) { + case ArchScanOrder(): + return arch(_that); + case QuadrantScanOrder(): + return quadrant(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(ArchScanOrder value)? arch, + TResult? Function(QuadrantScanOrder value)? quadrant, + }) { + final _that = this; + switch (_that) { + case ArchScanOrder() when arch != null: + return arch(_that); + case QuadrantScanOrder() when quadrant != null: + return quadrant(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(Jaw jaw, Direction direction, ToothSide toothSide)? arch, + TResult Function( + Quadrant quadrant, Direction direction, ToothSide toothSide)? + quadrant, + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case ArchScanOrder() when arch != null: + return arch(_that.jaw, _that.direction, _that.toothSide); + case QuadrantScanOrder() when quadrant != null: + return quadrant(_that.quadrant, _that.direction, _that.toothSide); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when({ + required TResult Function(Jaw jaw, Direction direction, ToothSide toothSide) + arch, + required TResult Function( + Quadrant quadrant, Direction direction, ToothSide toothSide) + quadrant, + }) { + final _that = this; + switch (_that) { + case ArchScanOrder(): + return arch(_that.jaw, _that.direction, _that.toothSide); + case QuadrantScanOrder(): + return quadrant(_that.quadrant, _that.direction, _that.toothSide); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(Jaw jaw, Direction direction, ToothSide toothSide)? arch, + TResult? Function( + Quadrant quadrant, Direction direction, ToothSide toothSide)? + quadrant, + }) { + final _that = this; + switch (_that) { + case ArchScanOrder() when arch != null: + return arch(_that.jaw, _that.direction, _that.toothSide); + case QuadrantScanOrder() when quadrant != null: + return quadrant(_that.quadrant, _that.direction, _that.toothSide); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class ArchScanOrder implements ScanOrder { @@ -1448,6 +2371,169 @@ class _$ChartingOrderValueCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [ChartingOrderValue]. +extension ChartingOrderValuePatterns on ChartingOrderValue { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ChartingOrderValue value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ChartingOrderValue() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ChartingOrderValue value) $default, + ) { + final _that = this; + switch (_that) { + case _ChartingOrderValue(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ChartingOrderValue value)? $default, + ) { + final _that = this; + switch (_that) { + case _ChartingOrderValue() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(ChartingOrderType chartingOrder, int selectedOption, + List> order)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ChartingOrderValue() when $default != null: + return $default(_that.chartingOrder, _that.selectedOption, _that.order); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(ChartingOrderType chartingOrder, int selectedOption, + List> order) + $default, + ) { + final _that = this; + switch (_that) { + case _ChartingOrderValue(): + return $default(_that.chartingOrder, _that.selectedOption, _that.order); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(ChartingOrderType chartingOrder, int selectedOption, + List> order)? + $default, + ) { + final _that = this; + switch (_that) { + case _ChartingOrderValue() when $default != null: + return $default(_that.chartingOrder, _that.selectedOption, _that.order); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _ChartingOrderValue implements ChartingOrderValue { @@ -1767,6 +2853,226 @@ class _$ProfileOOutputCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [ProfileOOutput]. +extension ProfileOOutputPatterns on ProfileOOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ProfileOOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ProfileOOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ProfileOOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _ProfileOOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ProfileOOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _ProfileOOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + String id, + String anotherId, + @RfControl() String name, + @RfControl() ChartingOrderValue chartingOrder, + @RfControl() NumberingStandard numberingStandard, + IncidenceFilterOOutput incidenceFilter, + @RfControl() MeasurementType measurementType, + ThresholdSettingOOutput threshold, + TimerSettingOOutput timer, + @RfControl() bool audioGuidance)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ProfileOOutput() when $default != null: + return $default( + _that.id, + _that.anotherId, + _that.name, + _that.chartingOrder, + _that.numberingStandard, + _that.incidenceFilter, + _that.measurementType, + _that.threshold, + _that.timer, + _that.audioGuidance); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + String id, + String anotherId, + @RfControl() String name, + @RfControl() ChartingOrderValue chartingOrder, + @RfControl() NumberingStandard numberingStandard, + IncidenceFilterOOutput incidenceFilter, + @RfControl() MeasurementType measurementType, + ThresholdSettingOOutput threshold, + TimerSettingOOutput timer, + @RfControl() bool audioGuidance) + $default, + ) { + final _that = this; + switch (_that) { + case _ProfileOOutput(): + return $default( + _that.id, + _that.anotherId, + _that.name, + _that.chartingOrder, + _that.numberingStandard, + _that.incidenceFilter, + _that.measurementType, + _that.threshold, + _that.timer, + _that.audioGuidance); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + String id, + String anotherId, + @RfControl() String name, + @RfControl() ChartingOrderValue chartingOrder, + @RfControl() NumberingStandard numberingStandard, + IncidenceFilterOOutput incidenceFilter, + @RfControl() MeasurementType measurementType, + ThresholdSettingOOutput threshold, + TimerSettingOOutput timer, + @RfControl() bool audioGuidance)? + $default, + ) { + final _that = this; + switch (_that) { + case _ProfileOOutput() when $default != null: + return $default( + _that.id, + _that.anotherId, + _that.name, + _that.chartingOrder, + _that.numberingStandard, + _that.incidenceFilter, + _that.measurementType, + _that.threshold, + _that.timer, + _that.audioGuidance); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _ProfileOOutput extends ProfileOOutput { @@ -2086,6 +3392,169 @@ class _$ThresholdSettingOOutputCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [ThresholdSettingOOutput]. +extension ThresholdSettingOOutputPatterns on ThresholdSettingOOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ThresholdSettingOOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ThresholdSettingOOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ThresholdSettingOOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSettingOOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ThresholdSettingOOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSettingOOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ThresholdSettingOOutput() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value) + $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSettingOOutput(): + return $default(_that.isEnabled, _that.value); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, + ) { + final _that = this; + switch (_that) { + case _ThresholdSettingOOutput() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _ThresholdSettingOOutput implements ThresholdSettingOOutput { @@ -2256,6 +3725,169 @@ class _$TimerSettingOOutputCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [TimerSettingOOutput]. +extension TimerSettingOOutputPatterns on TimerSettingOOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_TimerSettingOOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _TimerSettingOOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_TimerSettingOOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _TimerSettingOOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_TimerSettingOOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _TimerSettingOOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _TimerSettingOOutput() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() bool isEnabled, @RfControl() int value) + $default, + ) { + final _that = this; + switch (_that) { + case _TimerSettingOOutput(): + return $default(_that.isEnabled, _that.value); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() bool isEnabled, @RfControl() int value)? + $default, + ) { + final _that = this; + switch (_that) { + case _TimerSettingOOutput() when $default != null: + return $default(_that.isEnabled, _that.value); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _TimerSettingOOutput implements TimerSettingOOutput { @@ -2476,6 +4108,202 @@ class _$IncidenceFilterOOutputCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [IncidenceFilterOOutput]. +extension IncidenceFilterOOutputPatterns on IncidenceFilterOOutput { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_IncidenceFilterOOutput value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _IncidenceFilterOOutput() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_IncidenceFilterOOutput value) $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilterOOutput(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_IncidenceFilterOOutput value)? $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilterOOutput() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() bool isMobilityEnabled, + @RfControl() bool isFurcationEnabled, + @RfControl() bool isBleedingEnabled, + @RfControl() bool isSuppurationEnabled, + @RfControl() bool isCalculusEnabled, + @RfControl() bool isPlaqueEnabled)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _IncidenceFilterOOutput() when $default != null: + return $default( + _that.isMobilityEnabled, + _that.isFurcationEnabled, + _that.isBleedingEnabled, + _that.isSuppurationEnabled, + _that.isCalculusEnabled, + _that.isPlaqueEnabled); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() bool isMobilityEnabled, + @RfControl() bool isFurcationEnabled, + @RfControl() bool isBleedingEnabled, + @RfControl() bool isSuppurationEnabled, + @RfControl() bool isCalculusEnabled, + @RfControl() bool isPlaqueEnabled) + $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilterOOutput(): + return $default( + _that.isMobilityEnabled, + _that.isFurcationEnabled, + _that.isBleedingEnabled, + _that.isSuppurationEnabled, + _that.isCalculusEnabled, + _that.isPlaqueEnabled); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() bool isMobilityEnabled, + @RfControl() bool isFurcationEnabled, + @RfControl() bool isBleedingEnabled, + @RfControl() bool isSuppurationEnabled, + @RfControl() bool isCalculusEnabled, + @RfControl() bool isPlaqueEnabled)? + $default, + ) { + final _that = this; + switch (_that) { + case _IncidenceFilterOOutput() when $default != null: + return $default( + _that.isMobilityEnabled, + _that.isFurcationEnabled, + _that.isBleedingEnabled, + _that.isSuppurationEnabled, + _that.isCalculusEnabled, + _that.isPlaqueEnabled); + case _: + return null; + } + } +} + /// @nodoc @JsonSerializable() class _IncidenceFilterOOutput implements IncidenceFilterOOutput { diff --git a/packages/reactive_forms_generator/example/lib/docs/recursive/recursive.freezed.dart b/packages/reactive_forms_generator/example/lib/docs/recursive/recursive.freezed.dart index 95aa8a2f..2de9a2a3 100644 --- a/packages/reactive_forms_generator/example/lib/docs/recursive/recursive.freezed.dart +++ b/packages/reactive_forms_generator/example/lib/docs/recursive/recursive.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -134,6 +133,181 @@ class _$SecuredAreaCopyWithImpl<$Res> implements $SecuredAreaCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [SecuredArea]. +extension SecuredAreaPatterns on SecuredArea { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_SecuredArea value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _SecuredArea() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_SecuredArea value) $default, + ) { + final _that = this; + switch (_that) { + case _SecuredArea(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_SecuredArea value)? $default, + ) { + final _that = this; + switch (_that) { + case _SecuredArea() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + String? id, + SecuredArea? securedArea, + ParcelSystem? parcelSystem, + @RfArray() List subSecuredAreas)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _SecuredArea() when $default != null: + return $default(_that.id, _that.securedArea, _that.parcelSystem, + _that.subSecuredAreas); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + String? id, + SecuredArea? securedArea, + ParcelSystem? parcelSystem, + @RfArray() List subSecuredAreas) + $default, + ) { + final _that = this; + switch (_that) { + case _SecuredArea(): + return $default(_that.id, _that.securedArea, _that.parcelSystem, + _that.subSecuredAreas); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + String? id, + SecuredArea? securedArea, + ParcelSystem? parcelSystem, + @RfArray() List subSecuredAreas)? + $default, + ) { + final _that = this; + switch (_that) { + case _SecuredArea() when $default != null: + return $default(_that.id, _that.securedArea, _that.parcelSystem, + _that.subSecuredAreas); + case _: + return null; + } + } +} + /// @nodoc class _SecuredArea implements SecuredArea { @@ -361,6 +535,169 @@ class _$ParcelSystemCopyWithImpl<$Res> implements $ParcelSystemCopyWith<$Res> { } } +/// Adds pattern-matching-related methods to [ParcelSystem]. +extension ParcelSystemPatterns on ParcelSystem { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ParcelSystem value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ParcelSystem() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ParcelSystem value) $default, + ) { + final _that = this; + switch (_that) { + case _ParcelSystem(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ParcelSystem value)? $default, + ) { + final _that = this; + switch (_that) { + case _ParcelSystem() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + @RfControl() bool hasParcelSystem, ParcelSystemData data)? + $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ParcelSystem() when $default != null: + return $default(_that.hasParcelSystem, _that.data); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function( + @RfControl() bool hasParcelSystem, ParcelSystemData data) + $default, + ) { + final _that = this; + switch (_that) { + case _ParcelSystem(): + return $default(_that.hasParcelSystem, _that.data); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function( + @RfControl() bool hasParcelSystem, ParcelSystemData data)? + $default, + ) { + final _that = this; + switch (_that) { + case _ParcelSystem() when $default != null: + return $default(_that.hasParcelSystem, _that.data); + case _: + return null; + } + } +} + /// @nodoc class _ParcelSystem implements ParcelSystem { @@ -518,6 +855,163 @@ class _$ParcelSystemDataCopyWithImpl<$Res> } } +/// Adds pattern-matching-related methods to [ParcelSystemData]. +extension ParcelSystemDataPatterns on ParcelSystemData { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeMap( + TResult Function(_ParcelSystemData value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ParcelSystemData() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_ParcelSystemData value) $default, + ) { + final _that = this; + switch (_that) { + case _ParcelSystemData(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_ParcelSystemData value)? $default, + ) { + final _that = this; + switch (_that) { + case _ParcelSystemData() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(String? id)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _ParcelSystemData() when $default != null: + return $default(_that.id); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(String? id) $default, + ) { + final _that = this; + switch (_that) { + case _ParcelSystemData(): + return $default(_that.id); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(String? id)? $default, + ) { + final _that = this; + switch (_that) { + case _ParcelSystemData() when $default != null: + return $default(_that.id); + case _: + return null; + } + } +} + /// @nodoc class _ParcelSystemData implements ParcelSystemData { diff --git a/packages/reactive_forms_generator/example/pubspec.yaml b/packages/reactive_forms_generator/example/pubspec.yaml index d83454f9..f439a447 100644 --- a/packages/reactive_forms_generator/example/pubspec.yaml +++ b/packages/reactive_forms_generator/example/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.6.0 + sdk: ^3.8.0 flutter: ">=3.7.0" resolution: workspace @@ -15,19 +15,19 @@ dependencies: path: ../../reactive_forms_annotations reactive_forms: ^17.0.1 intl: ">=0.19.0 <1.0.0" - freezed_annotation: ^3.0.0 + freezed_annotation: ^3.1.0 dartz: ^0.10.1 json_annotation: ^4.9.0 # reactive_text_field: ^1.0.0 equatable: ^2.0.7 - reactive_forms_lbc: ^4.0.0 + reactive_forms_lbc: ^4.0.5 dev_dependencies: reactive_forms_generator: path: ../../reactive_forms_generator flutter_test: sdk: flutter - build_runner: ^2.4.15 - freezed: ^3.0.6 + build_runner: ^2.7.0 + freezed: ^3.2.0 json_serializable: ^6.9.5 - flutter_lints: ^5.0.0 \ No newline at end of file + flutter_lints: ^6.0.0 \ No newline at end of file diff --git a/packages/reactive_forms_generator/lib/reactive_forms_generator.dart b/packages/reactive_forms_generator/lib/reactive_forms_generator.dart index 2e21d674..57a5cbab 100644 --- a/packages/reactive_forms_generator/lib/reactive_forms_generator.dart +++ b/packages/reactive_forms_generator/lib/reactive_forms_generator.dart @@ -3,7 +3,7 @@ library; import 'dart:async'; -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:build/build.dart'; import 'package:code_builder/code_builder.dart'; import 'package:dart_style/dart_style.dart'; @@ -28,7 +28,8 @@ class ReactiveFormsGenerator extends Generator { useNullSafetySyntax: true, ); - for (var annotatedElement in library.rfAnnotated) { + final rfAnnotated = library.rfAnnotated; + for (var annotatedElement in rfAnnotated) { specList.addAll( await generateForAnnotatedElement( annotatedElement.element, @@ -74,20 +75,20 @@ class ReactiveFormsGenerator extends Generator { } Future> generateForAnnotatedElement( - Element element, + Element2 element, ConstantReader annotation, BuildStep buildStep, ) async { throwIf( - element is! ClassElement, - '${element.name} is not a class element', + element is! ClassElement2, + '${element.name3} is not a class element', element: element, ); - final astElement = element.enclosingElement3; + // final astElement = element.firstFragment; final ast = await buildStep.resolver.astNodeFor( - astElement ?? element, + element.enclosingElement2!.firstFragment, // astElement ?? element, resolve: true, ); @@ -95,6 +96,6 @@ class ReactiveFormsGenerator extends Generator { throw InvalidGenerationSourceError('Ast not found', element: element); } - return generateLibrary(element as ClassElement, ast); + return generateLibrary(element as ClassElement2, ast); } } diff --git a/packages/reactive_forms_generator/lib/src/extensions.dart b/packages/reactive_forms_generator/lib/src/extensions.dart index 79443a60..179fb44e 100644 --- a/packages/reactive_forms_generator/lib/src/extensions.dart +++ b/packages/reactive_forms_generator/lib/src/extensions.dart @@ -1,4 +1,5 @@ import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:code_builder/code_builder.dart'; @@ -11,13 +12,13 @@ import 'package:analyzer/src/dart/element/type.dart'; import '../utils.dart'; -extension ConstructorElementExt on ConstructorElement { - bool get hasReactiveFormAnnotatedParameters => parameters.any( +extension ConstructorElementExt on ConstructorElement2 { + bool get hasReactiveFormAnnotatedParameters => formalParameters.any( (e) => true, ); } -extension ClassElementExt on ClassElement { +extension ClassElementExt on ClassElement2 { String get fullTypeName => thisType.toString(); String get generics { @@ -47,12 +48,12 @@ extension ClassElementExt on ClassElement { ); } - List get annotatedParameters { + List get annotatedParameters { final annotatedConstructors = - constructors.where((e) => e.hasReactiveFormAnnotatedParameters); + constructors2.where((e) => e.hasReactiveFormAnnotatedParameters); if (annotatedConstructors.isNotEmpty) { - return annotatedConstructors.first.parameters; + return annotatedConstructors.first.formalParameters; } return []; @@ -61,8 +62,8 @@ extension ClassElementExt on ClassElement { bool get isNullable => annotatedParameters.fold(true, (acc, e) => acc); } -extension ParameterElementExt on ParameterElement { - String get fieldName => name; +extension ParameterElementExt on FormalParameterElement { + String get fieldName => name3 ?? ''; String get addListItemName => 'add${fieldName.pascalCase}Item'; @@ -107,39 +108,42 @@ extension ParameterElementExt on ParameterElement { String get className => '${elementClassName}Form'; String get elementClassName { - final element = type.element as ClassElement; + final element = type.element3 as ClassElement2; String baseName = ''; if (element.hasRfAnnotation) { final annotation = element.rfAnnotation; - baseName = annotation?.getField('name')?.toStringValue() ?? element.name; + baseName = annotation?.getField('name')?.toStringValue() ?? + element.name3 ?? + ''; } - baseName = element.name; + baseName = element.name3 ?? ''; if (isFormGroupArray) { - final element = typeParameter.element as ClassElement; + final element = typeParameter.element3 as ClassElement2; if (element.hasRfAnnotation) { final annotation = element.rfAnnotation; - baseName = - annotation?.getField('name')?.toStringValue() ?? element.name; + baseName = annotation?.getField('name')?.toStringValue() ?? + element.name3 ?? + ''; } - baseName = element.name; + baseName = element.name3 ?? ''; } return baseName; } - String get valueUpdateMethodName => '${name}ValueUpdate'; + String get valueUpdateMethodName => '${name3}ValueUpdate'; - String get valuePatchMethodName => '${name}ValuePatch'; + String get valuePatchMethodName => '${name3}ValuePatch'; - String get clearMethodName => '${name}Clear'; + String get clearMethodName => '${name3}Clear'; - String get insertMethodName => '${name}Insert'; + String get insertMethodName => '${name3}Insert'; // needs careful usage and possibly refactoring DartType get typeParameter => (type as ParameterizedType).typeArguments.first; @@ -155,8 +159,8 @@ extension ParameterElementExt on ParameterElement { final typeParameter = typeArguments.first; - return typeParameter.element is ClassElement && - typeParameter.element!.hasRfGroupAnnotation; + return typeParameter.element3 is ClassElement2 && + typeParameter.element3!.hasRfGroupAnnotation; } bool get isFormArray { @@ -170,10 +174,10 @@ extension ParameterElementExt on ParameterElement { final typeParameter = typeArguments.first; - return (typeParameter.element is ClassElement || - typeParameter.element is EnumElement || - typeParameter.element is TypeDefiningElement) && - !typeParameter.element!.hasRfGroupAnnotation; + return (typeParameter.element3 is ClassElement2 || + typeParameter.element3 is EnumElement2 || + typeParameter.element3 is TypeDefiningElement2) && + !typeParameter.element3!.hasRfGroupAnnotation; } bool get isFormControl { @@ -184,19 +188,19 @@ extension ParameterElementExt on ParameterElement { throwIf( isFormControl && isFormGroup, - "Field `$name` can't be annotated with @RfControl and @FromGroupAnnotation at the same time.", + "Field `$name3` can't be annotated with @RfControl and @FromGroupAnnotation at the same time.", element: this, ); return isFormControl; } - bool get isFormGroup => type.element?.hasRfGroupAnnotation ?? false; + bool get isFormGroup => type.element3?.hasRfGroupAnnotation ?? false; bool get isForm => hasRfAnnotation; String? get defaultValue { - for (final meta in metadata) { + for (final meta in metadata2.annotations) { final source = meta.toSource(); if (source.startsWith('@Default(')) { @@ -220,14 +224,15 @@ extension ParameterElementExt on ParameterElement { var builder = ElementDisplayStringBuilder2( withNullability: true, + preferTypeAlias: false, ); (type as TypeImpl).appendTo(builder); return builder.toString(); } } -extension FieldElementExt on FieldElement { - String get fieldName => name; +extension FieldElementExt on FieldElement2 { + String get fieldName => name3 ?? ''; String get fieldValueName => '${fieldName}Value'; @@ -238,7 +243,7 @@ extension FieldElementExt on FieldElement { // needs careful usage and possibly refactoring DartType get typeParameter => (type as ParameterizedType).typeArguments.first; - bool get isFormGroup => type.element?.hasRfGroupAnnotation ?? false; + bool get isFormGroup => type.element3?.hasRfGroupAnnotation ?? false; bool get isForm => hasRfAnnotation; } diff --git a/packages/reactive_forms_generator/lib/src/form_elements/form_array_generator.dart b/packages/reactive_forms_generator/lib/src/form_elements/form_array_generator.dart index 422931bd..511beafe 100644 --- a/packages/reactive_forms_generator/lib/src/form_elements/form_array_generator.dart +++ b/packages/reactive_forms_generator/lib/src/form_elements/form_array_generator.dart @@ -1,5 +1,5 @@ // ignore_for_file: implementation_imports -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:reactive_forms_generator/src/form_elements/form_element_generator.dart'; @@ -8,25 +8,33 @@ import 'package:reactive_forms_generator/src/extensions.dart'; import 'package:recase/recase.dart'; import 'package:source_gen/src/type_checker.dart'; +import 'package:analyzer/src/dart/element/element.dart' as e; + class FormArrayGenerator extends FormElementGenerator { - FormArrayGenerator(super.root, super.field, super.type); + final FormalParameterElement formArrayField; + + FormArrayGenerator({ + required super.root, + required this.formArrayField, + super.type, + }) : super(field: formArrayField); DartType get typeParameter => - (field.type as ParameterizedType).typeArguments.first; + (formArrayField.type as ParameterizedType).typeArguments.first; @override String get value { final enclosingElement = - (fieldElement.enclosingElement3 as ConstructorElement) - .enclosingElement3; + (fieldElement.enclosingElement2 as e.ConstructorElementImpl2) + .enclosingElement2; - final optionalChaining = (enclosingElement == root && + final optionalChaining = (enclosingElement.name3 == root.name3 && type?.nullabilitySuffix != NullabilitySuffix.question) || - (enclosingElement == root && !root.isNullable) + (enclosingElement.name3 == root.name3 && !root.isNullable) ? '' : '?'; - return '(${enclosingElement.name.camelCase}$optionalChaining.${fieldElement.name}${optionalChaining != '' ? '?? []' : ''})'; + return '(${enclosingElement.firstFragment.name.camelCase}$optionalChaining.${fieldElement.name3}${optionalChaining != '' ? '?? []' : ''})'; } String get displayType { @@ -54,7 +62,7 @@ class FormArrayGenerator extends FormElementGenerator { if (formArrayAnnotationTyped && formArrayAnnotationType != typeParameterType) { throw Exception( - 'Annotation and field type mismatch. Annotation is typed as `$formArrayAnnotationType` and field(`${field.name}`) as `$typeParameterType`.', + 'Annotation and field type mismatch. Annotation is typed as `$formArrayAnnotationType` and field(`${field.name3}`) as `$typeParameterType`.', ); } @@ -65,9 +73,9 @@ class FormArrayGenerator extends FormElementGenerator { 'disabled: $disabled', ]; - if (field.isFormGroupArray) { + if (formArrayField.isFormGroupArray) { final props = [ - '$value.map((e) => ${field.className}.formElements(e)).toList()', + '$value.map((e) => ${formArrayField.className}.formElements(e)).toList()', ...partialProps ].join(', '); diff --git a/packages/reactive_forms_generator/lib/src/form_elements/form_control_generator.dart b/packages/reactive_forms_generator/lib/src/form_elements/form_control_generator.dart index 65e3a57d..5762082e 100644 --- a/packages/reactive_forms_generator/lib/src/form_elements/form_control_generator.dart +++ b/packages/reactive_forms_generator/lib/src/form_elements/form_control_generator.dart @@ -1,3 +1,4 @@ +import 'package:analyzer/dart/element/element2.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:reactive_forms_generator/src/extensions.dart'; import 'package:reactive_forms_generator/src/form_elements/form_element_generator.dart'; @@ -5,21 +6,28 @@ import 'package:reactive_forms_generator/src/types.dart'; import 'package:source_gen/source_gen.dart'; class FormControlGenerator extends FormElementGenerator { - FormControlGenerator(super.root, super.field, super.type); + // FormControlGenerator(super.root, super.field, super.type); + final FormalParameterElement formControlField; + + FormControlGenerator({ + required super.root, + required this.formControlField, + super.type, + }) : super(field: formControlField); @override String element() { - String displayType = field.type.getName(withNullability: true); + String displayType = formControlField.type.getName(withNullability: true); // we need to trim last NullabilitySuffix.question cause FormControl modifies // generic T => T? - if (field.type.nullabilitySuffix == NullabilitySuffix.question) { + if (formControlField.type.nullabilitySuffix == NullabilitySuffix.question) { displayType = displayType.substring(0, displayType.length - 1); } if (annotationTyped && annotationType != displayType) { throw Exception( - 'Annotation and field type mismatch. Annotation is typed as `$annotationType` and field(`${field.name}`) as `$displayType`.', + 'Annotation and field type mismatch. Annotation is typed as `$annotationType` and field(`${field.name3}`) as `$displayType`.', ); } diff --git a/packages/reactive_forms_generator/lib/src/form_elements/form_element_generator.dart b/packages/reactive_forms_generator/lib/src/form_elements/form_element_generator.dart index 4c98dd9e..35b92141 100644 --- a/packages/reactive_forms_generator/lib/src/form_elements/form_element_generator.dart +++ b/packages/reactive_forms_generator/lib/src/form_elements/form_element_generator.dart @@ -1,6 +1,7 @@ // ignore_for_file: implementation_imports import 'package:analyzer/dart/constant/value.dart'; import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:reactive_forms_generator/src/extensions.dart'; @@ -9,16 +10,20 @@ import 'package:source_gen/source_gen.dart'; import 'package:recase/recase.dart'; abstract class FormElementGenerator { - final ClassElement root; - final ParameterElement field; + final ClassElement2 root; + final Element2 field; final DartType? type; static const String validatorKey = 'validators'; - FormElementGenerator(this.root, this.field, this.type); + FormElementGenerator({ + required this.root, + required this.field, + required this.type, + }); String get value { - final enclosingElement = constructorElement.enclosingElement3; + final enclosingElement = constructorElement?.enclosingElement2; final optionalChaining = (enclosingElement == root && type?.nullabilitySuffix != NullabilitySuffix.question) || @@ -26,7 +31,7 @@ abstract class FormElementGenerator { ? '' : '?'; - return '${enclosingElement.name.camelCase}$optionalChaining.${fieldElement.name}'; + return '${enclosingElement?.name3?.camelCase}$optionalChaining.${fieldElement.name3}'; } String? validatorName(ExecutableElement? e) { @@ -55,10 +60,10 @@ abstract class FormElementGenerator { annotationType != 'Never'; } - Element get fieldElement => field; + Element2 get fieldElement => field; - ConstructorElement get constructorElement => - fieldElement.enclosingElement3 as ConstructorElement; + ConstructorElement2? get constructorElement => + fieldElement.enclosingElement2 as ConstructorElement2?; // Map get annotationParams { // final result = {}; diff --git a/packages/reactive_forms_generator/lib/src/form_elements/form_group_generator.dart b/packages/reactive_forms_generator/lib/src/form_elements/form_group_generator.dart index c0d573d2..756b7984 100644 --- a/packages/reactive_forms_generator/lib/src/form_elements/form_group_generator.dart +++ b/packages/reactive_forms_generator/lib/src/form_elements/form_group_generator.dart @@ -1,4 +1,4 @@ -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:reactive_forms_generator/src/form_elements/form_array_generator.dart'; import 'package:reactive_forms_generator/src/form_elements/form_control_generator.dart'; @@ -9,11 +9,19 @@ import 'package:recase/recase.dart'; import 'package:source_gen/source_gen.dart'; class FormGroupGenerator extends FormElementGenerator { - FormGroupGenerator(super.root, super.field, super.type); + // FormGroupGenerator(super.root, super.field, super.type); + + final ClassElement2 formGroupField; + + FormGroupGenerator({ + required super.root, + required this.formGroupField, + super.type, + }) : super(field: formGroupField); @override String get value { - final enclosingElement = constructorElement.enclosingElement3; + final enclosingElement = constructorElement?.enclosingElement2; final optionalChaining = (enclosingElement == root && type?.nullabilitySuffix != NullabilitySuffix.question) || @@ -21,33 +29,36 @@ class FormGroupGenerator extends FormElementGenerator { ? '' : '?'; - return '${enclosingElement.name.camelCase}$optionalChaining'; + return '${enclosingElement?.name3?.camelCase}$optionalChaining'; } @override - ConstructorElement get constructorElement => - field.enclosingElement3 as ConstructorElement; + ConstructorElement2? get constructorElement { + return formGroupField.constructors2.firstOrNull; + } @override - Element get fieldElement => field.type.element!; + Element2 get fieldElement => formGroupField.thisType.element3; - ClassElement get classElement => field.type.element as ClassElement; + ClassElement2 get classElement => + formGroupField.thisType.element3 as ClassElement2; - List get formElements => classElement.constructors + List get formElements => classElement.constructors2 .where((e) => e.hasReactiveFormAnnotatedParameters) .first - .parameters + .formalParameters .where( (e) => (e.isFormControl || e.isFormArray || e.isFormGroupArray), ) .toList(); - List get nestedFormElements => classElement.constructors - .where((e) => e.hasReactiveFormAnnotatedParameters) - .first - .parameters - .where((e) => e.isFormGroup) - .toList(); + List get nestedFormElements => + classElement.constructors2 + .where((e) => e.hasReactiveFormAnnotatedParameters) + .first + .formalParameters + .where((e) => e.isFormGroup) + .toList(); // String get validators => syncValidators(formControlChecker); @@ -61,11 +72,19 @@ class FormGroupGenerator extends FormElementGenerator { FormElementGenerator? formElementGenerator; if (f.isFormControl) { - formElementGenerator = FormControlGenerator(root, f, type); + formElementGenerator = FormControlGenerator( + root: root, + formControlField: f, + type: type, + ); } if (f.isFormArray || f.isFormGroupArray) { - formElementGenerator = FormArrayGenerator(root, f, type); + formElementGenerator = FormArrayGenerator( + root: root, + formArrayField: f, + type: type, + ); } if (formElementGenerator != null) { @@ -81,7 +100,7 @@ class FormGroupGenerator extends FormElementGenerator { formElementsList.addAll( nestedFormElements.map( (f) { - return '${f.fieldControlNameName}: ${f.className}.formElements($value.${f.name})'; + return '${f.fieldControlNameName}: ${f.className}.formElements($value.${f.name3})'; }, ), ); diff --git a/packages/reactive_forms_generator/lib/src/form_generator.dart b/packages/reactive_forms_generator/lib/src/form_generator.dart index 4013c1b5..490ba428 100644 --- a/packages/reactive_forms_generator/lib/src/form_generator.dart +++ b/packages/reactive_forms_generator/lib/src/form_generator.dart @@ -1,12 +1,10 @@ // ignore_for_file: implementation_imports import 'package:analyzer/dart/ast/ast.dart'; -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/type.dart'; -import 'package:analyzer/src/dart/element/element.dart' as e; import 'package:analyzer/src/dart/element/type.dart' as t; import 'package:analyzer/src/dart/ast/ast.dart' as u; -import 'package:analyzer/src/generated/utilities_dart.dart' as u; import 'package:code_builder/code_builder.dart'; import 'package:reactive_forms_generator/src/extensions.dart'; import 'package:reactive_forms_generator/src/form_elements/form_array_generator.dart'; @@ -41,10 +39,10 @@ enum ValidatorsApplyMode { } class FormGenerator { - final ClassElement root; + final ClassElement2 root; final Set classes; - final ClassElement element; + final ClassElement2 element; final DartType? type; @@ -57,9 +55,11 @@ class FormGenerator { String get baseName { if (element.hasRfAnnotation && root == element) { final annotation = element.rfAnnotation; - return annotation?.getField('name')?.toStringValue() ?? element.name; + return annotation?.getField('name')?.toStringValue() ?? + element.name3 ?? + ''; } - return element.name; + return element.name3 ?? ''; } // bool get hasOutput { @@ -82,9 +82,9 @@ class FormGenerator { if (!classes.contains(e.className)) { classes.add(e.className); - formGroupGenerators[e.name] = FormGenerator( + formGroupGenerators[e.name3 ?? ''] = FormGenerator( root, - e.type.element! as ClassElement, + e.type.element3! as ClassElement2, e.type, ast, classes, @@ -101,9 +101,9 @@ class FormGenerator { if (!classes.contains(e.className)) { classes.add(e.className); - nestedFormGroupGenerators[e.name] = FormGenerator( + nestedFormGroupGenerators[e.name3 ?? ''] = FormGenerator( root, - typeParameter.element! as ClassElement, + typeParameter.element3! as ClassElement2, e.type, ast, classes, @@ -112,26 +112,26 @@ class FormGenerator { } } - List get all => [ + List get all => [ ...formControls, ...formArrays, ...formGroups, ...formGroupArrays, ]; - Iterable get formControls => parameters.where( + Iterable get formControls => parameters.where( (e) => e.isFormControl, ); - Iterable get formArrays => parameters.where( + Iterable get formArrays => parameters.where( (e) => e.isFormArray, ); - Iterable get formGroups => parameters.where( + Iterable get formGroups => parameters.where( (e) => e.isFormGroup, ); - Iterable get formGroupArrays => parameters.where( + Iterable get formGroupArrays => parameters.where( (e) => e.isFormGroupArray, ); @@ -143,12 +143,12 @@ class FormGenerator { return '$className${element.generics}'; } - List get parameters => element.annotatedParameters; + List get parameters => element.annotatedParameters; - Iterable get annotatedParameters => + Iterable get annotatedParameters => parameters.where((e) => true); - Field staticFieldName(ParameterElement field) => Field( + Field staticFieldName(FormalParameterElement field) => Field( (b) => b ..static = true ..modifier = FieldModifier.constant @@ -157,7 +157,7 @@ class FormGenerator { ..assignment = Code('"${field.fieldName}"'), ); - Field field(ParameterElement field) => Field( + Field field(FormalParameterElement field) => Field( (b) => b ..type = stringRef ..name = field.fieldName @@ -234,12 +234,12 @@ class FormGenerator { ); } - Method addGroupControl(ParameterElement field) { + Method addGroupControl(FormalParameterElement field) { final type = field.typeParameter.getName(withNullability: false); final formGroupGenerator = FormGenerator( root, - field.typeParameter.element as ClassElement, + field.typeParameter.element3 as ClassElement2, field.typeParameter, ast, classes, @@ -263,7 +263,7 @@ class FormGenerator { ); } - Method removeGroupControl(ParameterElement field) { + Method removeGroupControl(FormalParameterElement field) { final controlField = field.fieldControlName; return Method( @@ -287,7 +287,7 @@ class FormGenerator { ); } - Method addGroupControlList(ParameterElement field) { + Method addGroupControlList(FormalParameterElement field) { final type = field.typeParameter.getName(withNullability: false); return Method( @@ -307,13 +307,16 @@ class FormGenerator { ); } - Method addArrayControl(ParameterElement field) { + Method addArrayControl(FormalParameterElement field) { // until https://github.com/joanpablo/reactive_forms/issues/204 is somehow resolved final formControlType = field.typeParameter.getName(withNullability: false); final valueType = field.typeParameter.getName(withNullability: true); - final formArrayGenerator = - FormArrayGenerator(element, field, field.typeParameter); + final formArrayGenerator = FormArrayGenerator( + root: element, + formArrayField: field, + type: field.typeParameter, + ); final validators = formArrayGenerator.itemValidators; final asyncValidators = formArrayGenerator.itemAsyncValidators; @@ -493,13 +496,13 @@ class FormGenerator { final generator = FormGenerator( root, - typeArguments.first.element! as ClassElement, + typeArguments.first.element3! as ClassElement2, e.type, ast, classes, ); - return '${e.name}${generator.className}.forEach((e) => e.toggleDisabled());'; + return '${e.name3}${generator.className}.forEach((e) => e.toggleDisabled());'; }) .toList() .join(''); @@ -836,33 +839,41 @@ class FormGenerator { ..requiredParameters.add( Parameter( (b) => b - ..name = element.name.camelCase + ..name = element.name3?.camelCase ?? '' ..type = Reference(_modelDisplayTypeMaybeNullable), ), ) ..returns = const Reference('FormGroup') ..body = Code( FormGroupGenerator( - root, - e.ParameterElementImpl( - name: 'FakeParameterElement', - nameOffset: 20, - parameterKind: u.ParameterKind.REQUIRED, - ) - ..enclosingElement3 = - (e.ConstructorElementImpl('aa', 1) - ..enclosingElement3 = element) - ..type = t.InterfaceTypeImpl( - element: (element.thisType as t.InterfaceTypeImpl) - .element3, - typeArguments: element.thisType.typeArguments, - nullabilitySuffix: NullabilitySuffix.none, - ), - type ?? + root: root, + formGroupField: element, + // e.FormalParameterElementImpl( + // e.ParameterElementImpl( + // name2: 'FakeParameterElement', + // name: 'FakeParameterElement', + // nameOffset: 20, + // parameterKind: u.ParameterKind.REQUIRED, + // nameOffset2: 20, + // ) + // ..enclosingElement3 = + // (e.ConstructorElement2Impl('aa', element) + // ..enclosingElement3 = + // element as e.ClassElementImpl2) + // ..type = t.InterfaceTypeImpl( + // element: (element.thisType as t.InterfaceTypeImpl) + // .element3, + // typeArguments: element.thisType.typeArguments + // as List, + // nullabilitySuffix: NullabilitySuffix.none, + // ), + // ), + type: type ?? t.InterfaceTypeImpl( element: (element.thisType as t.InterfaceTypeImpl) .element3, - typeArguments: element.thisType.typeArguments, + typeArguments: element.thisType.typeArguments + as List, nullabilitySuffix: element.isNullable ? NullabilitySuffix.question : NullabilitySuffix.none, @@ -887,10 +898,10 @@ class FormGenerator { (b) => b ..lambda = true ..returns = Reference('${e.className}${element.generics}') - ..name = '${e.name}Form' + ..name = '${e.name3}Form' ..type = MethodType.getter ..body = Code( - '${e.className}(form, pathBuilder(\'${e.name}\'))', + '${e.className}(form, pathBuilder(\'${e.name3}\'))', ), ); }); @@ -903,7 +914,7 @@ class FormGenerator { final generator = FormGenerator( root, - typeParameter.element! as ClassElement, + typeParameter.element3! as ClassElement2, type, ast, classes, @@ -912,7 +923,7 @@ class FormGenerator { return Method( (b) => b ..returns = Reference('List<${generator.className}>') - ..name = '${e.name}${generator.className}' + ..name = '${e.name3}${generator.className}' ..type = MethodType.getter ..body = Code( ''' @@ -920,7 +931,7 @@ class FormGenerator { return values .asMap() - .map((k, v) => MapEntry(k, ${generator.className}(form, pathBuilder("${e.name}.\$k")))) + .map((k, v) => MapEntry(k, ${generator.className}(form, pathBuilder("${e.name3}.\$k")))) .values .toList(); ''', diff --git a/packages/reactive_forms_generator/lib/src/library_builder.dart b/packages/reactive_forms_generator/lib/src/library_builder.dart index ba147ebd..6e74dc7b 100644 --- a/packages/reactive_forms_generator/lib/src/library_builder.dart +++ b/packages/reactive_forms_generator/lib/src/library_builder.dart @@ -1,5 +1,5 @@ import 'package:analyzer/dart/ast/ast.dart'; -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:code_builder/code_builder.dart'; import 'package:reactive_forms_generator/src/form_generator.dart'; import 'package:reactive_forms_generator/src/reactive_forms/reactive_form.dart'; @@ -15,7 +15,7 @@ const stringRef = Reference('String'); const formGroupRef = Reference('FormGroup'); List generateLibrary( - ClassElement element, + ClassElement2 element, AstNode ast, ) { final formGenerator = FormGenerator(element, element, null, ast, {}); diff --git a/packages/reactive_forms_generator/lib/src/output/extensions.dart b/packages/reactive_forms_generator/lib/src/output/extensions.dart index b5deb579..ae6921f9 100644 --- a/packages/reactive_forms_generator/lib/src/output/extensions.dart +++ b/packages/reactive_forms_generator/lib/src/output/extensions.dart @@ -184,7 +184,7 @@ extension TypeAnnotationImplExt on TypeAnnotationImpl { GenericFunctionTypeImpl() => throw UnimplementedError(), NamedTypeImpl() => NamedTypeImpl( importPrefix: type.importPrefix, - name2: type.element?.hasRfGroupAnnotation == true + name2: type.element2?.hasRfGroupAnnotation == true ? StringToken( TokenType.STRING, '${type.name2.lexeme}Output', diff --git a/packages/reactive_forms_generator/lib/src/output/rf_paramater_visitor.dart b/packages/reactive_forms_generator/lib/src/output/rf_paramater_visitor.dart index a60f8dbf..49a62163 100644 --- a/packages/reactive_forms_generator/lib/src/output/rf_paramater_visitor.dart +++ b/packages/reactive_forms_generator/lib/src/output/rf_paramater_visitor.dart @@ -48,7 +48,7 @@ class RfParameterVisitor extends GeneralizingAstVisitor { false, (acc, e) => acc || e.name.toString().startsWith('Default')); final hasRfGroupAnnotation = node.parameter.declaredElement?.type - .element?.hasRfGroupAnnotation == + .element3?.hasRfGroupAnnotation == true; final type = node.parameter.declaredElement?.type; @@ -58,7 +58,7 @@ class RfParameterVisitor extends GeneralizingAstVisitor { (type as t.InterfaceTypeImpl) .typeArguments .firstOrNull - ?.element + ?.element3 ?.hasRfGroupAnnotation == true; diff --git a/packages/reactive_forms_generator/lib/src/output/x.dart b/packages/reactive_forms_generator/lib/src/output/x.dart index 10fb65bb..2c11fc30 100644 --- a/packages/reactive_forms_generator/lib/src/output/x.dart +++ b/packages/reactive_forms_generator/lib/src/output/x.dart @@ -2,6 +2,7 @@ import 'package:_fe_analyzer_shared/src/type_inference/type_analyzer_operations.dart' show Variance; import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/src/dart/element/type.dart'; @@ -19,9 +20,14 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { /// Whether to allow a display string to be written in multiple lines. final bool _multiline; + /// Whether to write instantiated type alias when available. + final bool preferTypeAlias; + ElementDisplayStringBuilder2({ - required bool withNullability, + @Deprecated('Only non-nullable by default mode is supported') + bool withNullability = true, bool multiline = false, + required this.preferTypeAlias, }) : _withNullability = withNullability, _multiline = multiline, super(withNullability: false, preferTypeAlias: false); @@ -29,11 +35,15 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { @override String toString() => _buffer.toString(); - @override void writeAbstractElement(ElementImpl element) { _write(element.name ?? ''); } + @override + void writeAbstractElement2(ElementImpl2 element) { + _write(element.name3 ?? ''); + } + @override void writeClassElement(ClassElementImpl element) { if (element.isAugmentation) { @@ -73,7 +83,11 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } @override - void writeConstructorElement(ConstructorElement element) { + void writeConstructorElement(ConstructorElementMixin element) { + if (element.isAugmentation) { + _write('augment '); + } + _writeType(element.returnType); _write(' '); @@ -92,7 +106,11 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } @override - void writeEnumElement(EnumElement element) { + void writeEnumElement(EnumElementImpl element) { + if (element.isAugmentation) { + _write('augment '); + } + _write('enum '); _write(element.displayName); _writeTypeParameters(element.typeParameters); @@ -101,7 +119,7 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } @override - void writeExecutableElement(ExecutableElement element, String name) { + void writeExecutableElement(ExecutableElementOrMember element, String name) { if (element.isAugmentation) { _write('augment '); } @@ -130,16 +148,41 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } @override - void writeExtensionElement(ExtensionElement element) { - _write('extension '); - _write(element.displayName); - _writeTypeParameters(element.typeParameters); + void writeExtensionElement(ExtensionElementImpl element) { + if (element.isAugmentation) { + _write('augment '); + } + + _write('extension'); + if (element.displayName.isNotEmpty) { + _write(' '); + _write(element.displayName); + _writeTypeParameters(element.typeParameters); + } _write(' on '); _writeType(element.extendedType); } @override - void writeFormalParameter(ParameterElement element) { + void writeExtensionTypeElement(ExtensionTypeElementImpl element) { + if (element.isAugmentation) { + _write('augment '); + } + + _write('extension type '); + _write(element.displayName); + + _writeTypeParameters(element.typeParameters); + _write('('); + _writeType(element.representation.type); + _write(' '); + _write(element.representation.name); + _write(')'); + + _writeTypesIfNotEmpty(' implements ', element.interfaces); + } + + void writeFormalParameter(ParameterElementMixin element) { if (element.isRequiredPositional) { _writeWithoutDelimiters(element, forElement: true); } else if (element.isOptionalPositional) { @@ -154,12 +197,16 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } @override - void writeFunctionType(FunctionType type) { + void writeFunctionType(FunctionTypeImpl type) { + if (_maybeWriteTypeAlias(type)) { + return; + } + type = _uniqueTypeParameters(type); _writeType(type.returnType); _write(' Function'); - _writeTypeParameters(type.typeFormals); + _writeTypeParameters2(type.typeParameters); _writeFormalParameters(type.parameters, forElement: false); _writeNullability(type.nullabilitySuffix); } @@ -180,11 +227,15 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { @override void writeInterfaceType(InterfaceType type) { + if (_maybeWriteTypeAlias(type)) { + return; + } + final namePostfix = - type.element.hasRfGroupAnnotation || type.element.hasRfAnnotation + type.element3.hasRfGroupAnnotation || type.element3.hasRfAnnotation ? 'Output' : ''; - _write('${type.element.name}$namePostfix'); + _write('${type.element3.name3 ?? ''}$namePostfix'); _writeTypeArguments(type.typeArguments); _writeNullability(type.nullabilitySuffix); @@ -230,15 +281,50 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { @override void writePrefixElement(PrefixElementImpl element) { - _write('as '); - _write(element.displayName); + var libraryImports = element.imports; + var displayName = element.displayName; + if (libraryImports.isEmpty) { + _write('as '); + _write(displayName); + return; + } + var first = libraryImports.first; + _write("import '${first.libraryName}' as $displayName;"); + if (libraryImports.length == 1) { + return; + } + for (var libraryImport in libraryImports.sublist(1)) { + _write("\nimport '${libraryImport.libraryName}' as $displayName;"); + } + } + + void writePrefixElement2(PrefixElementImpl2 element) { + var libraryImports = element.imports; + var displayName = element.displayName; + if (libraryImports.isEmpty) { + _write('as '); + _write(displayName); + return; + } + var first = libraryImports.first; + _write("import '${first.libraryName}' as $displayName;"); + if (libraryImports.length == 1) { + return; + } + for (var libraryImport in libraryImports.sublist(1)) { + _write("\nimport '${libraryImport.libraryName}' as $displayName;"); + } } @override - void writeRecordType(RecordType type) { - final positionalFields = type.positionalFields; - final namedFields = type.namedFields; - final fieldCount = positionalFields.length + namedFields.length; + void writeRecordType(RecordTypeImpl type) { + if (_maybeWriteTypeAlias(type)) { + return; + } + + var positionalFields = type.positionalFields; + var namedFields = type.namedFields; + var fieldCount = positionalFields.length + namedFields.length; _write('('); var index = 0; @@ -273,6 +359,10 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { @override void writeTypeAliasElement(TypeAliasElementImpl element) { + if (element.isAugmentation) { + _write('augment '); + } + _write('typedef '); _write(element.displayName); _writeTypeParameters(element.typeParameters); @@ -287,13 +377,28 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } @override - void writeTypeParameter(TypeParameterElement element) { - if (element is TypeParameterElementImpl) { - var variance = element.variance; - if (!element.isLegacyCovariant && variance != Variance.unrelated) { - _write(variance.keyword); - _write(' '); - } + void writeTypeParameter(TypeParameterElementImpl element) { + var variance = element.variance; + if (!element.isLegacyCovariant && variance != Variance.unrelated) { + _write(variance.keyword); + _write(' '); + } + + _write(element.displayName); + + var bound = element.bound; + if (bound != null) { + _write(' extends '); + _writeType(bound); + } + } + + @override + void writeTypeParameter2(TypeParameterElementImpl2 element) { + var variance = element.variance; + if (!element.isLegacyCovariant && variance != Variance.unrelated) { + _write(variance.keyword); + _write(' '); } _write(element.displayName); @@ -307,20 +412,20 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { @override void writeTypeParameterType(TypeParameterTypeImpl type) { - final promotedBound = type.promotedBound; + var promotedBound = type.promotedBound; if (promotedBound != null) { - final hasSuffix = type.nullabilitySuffix != NullabilitySuffix.none; + var hasSuffix = type.nullabilitySuffix != NullabilitySuffix.none; if (hasSuffix) { _write('('); } - _write(type.element.displayName); + _write(type.element3.displayName); _write(' & '); _writeType(promotedBound); if (hasSuffix) { _write(')'); } } else { - _write(type.element.displayName); + _write(type.element3.displayName); } _writeNullability(type.nullabilitySuffix); } @@ -331,13 +436,7 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } @override - void writeVariableElement(VariableElement element) { - switch (element) { - case FieldElement(isAugmentation: true): - case TopLevelVariableElement(isAugmentation: true): - _write('augment '); - } - + void writeVariableElement(VariableElementOrMember element) { _writeType(element.type); _write(' '); _write(element.displayName); @@ -348,6 +447,18 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { _write('void'); } + bool _maybeWriteTypeAlias(DartType type) { + if (preferTypeAlias) { + if (type.alias case var alias?) { + _write(alias.element2.name3 ?? ''); + _writeTypeArguments(alias.typeArguments); + _writeNullability(type.nullabilitySuffix); + return true; + } + } + return false; + } + void _write(String str) { _buffer.write(str); } @@ -363,7 +474,7 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } void _writeFormalParameters( - List parameters, { + List parameters, { required bool forElement, bool allowMultiline = false, }) { @@ -433,8 +544,8 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } } - void _writeType(DartType type) { - (type as TypeImpl).appendTo(this); + void _writeType(TypeImpl type) { + type.appendTo(this); } void _writeTypeArguments(List typeArguments) { @@ -452,14 +563,14 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { _write('>'); } - void _writeTypeIfNotObject(String prefix, DartType? type) { + void _writeTypeIfNotObject(String prefix, TypeImpl? type) { if (type != null && !type.isDartCoreObject) { _write(prefix); _writeType(type); } } - void _writeTypeParameters(List elements) { + void _writeTypeParameters(List elements) { if (elements.isEmpty) return; _write('<'); @@ -467,12 +578,25 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { if (i != 0) { _write(', '); } - (elements[i] as TypeParameterElementImpl).appendTo(this); + elements[i].appendTo(this); } _write('>'); } - void _writeTypes(List types) { + void _writeTypeParameters2(List elements) { + if (elements.isEmpty) return; + + _write('<'); + for (var i = 0; i < elements.length; i++) { + if (i != 0) { + _write(', '); + } + (elements[i] as TypeParameterElementImpl2).appendTo(this); + } + _write('>'); + } + + void _writeTypes(List types) { for (var i = 0; i < types.length; i++) { if (i != 0) { _write(', '); @@ -481,7 +605,7 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } } - void _writeTypesIfNotEmpty(String prefix, List types) { + void _writeTypesIfNotEmpty(String prefix, List types) { if (types.isNotEmpty) { _write(prefix); _writeTypes(types); @@ -489,7 +613,7 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } void _writeWithoutDelimiters( - ParameterElement element, { + ParameterElementMixin element, { required bool forElement, }) { if (element.isRequiredNamed) { @@ -512,21 +636,21 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } } - static FunctionType _uniqueTypeParameters(FunctionType type) { - if (type.typeFormals.isEmpty) { + static FunctionTypeImpl _uniqueTypeParameters(FunctionTypeImpl type) { + if (type.typeParameters.isEmpty) { return type; } - var referencedTypeParameters = {}; + var referencedTypeParameters = {}; void collectTypeParameters(DartType? type) { if (type is TypeParameterType) { - referencedTypeParameters.add(type.element); + referencedTypeParameters.add(type.element3); } else if (type is FunctionType) { - for (var typeParameter in type.typeFormals) { + for (var typeParameter in type.typeParameters) { collectTypeParameters(typeParameter.bound); } - for (var parameter in type.parameters) { + for (var parameter in type.formalParameters) { collectTypeParameters(parameter.type); } collectTypeParameters(type.returnType); @@ -538,16 +662,16 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { } collectTypeParameters(type); - referencedTypeParameters.removeAll(type.typeFormals); + referencedTypeParameters.removeAll(type.typeParameters); var namesToAvoid = {}; for (var typeParameter in referencedTypeParameters) { namesToAvoid.add(typeParameter.displayName); } - var newTypeParameters = []; - for (var typeParameter in type.typeFormals) { - var name = typeParameter.name; + var newTypeParameters = []; + for (var typeParameter in type.typeParameters) { + var name = typeParameter.name3!; for (var counter = 0; !namesToAvoid.add(name); counter++) { const unicodeSubscriptZero = 0x2080; const unicodeZero = 0x30; @@ -556,16 +680,32 @@ class ElementDisplayStringBuilder2 extends ElementDisplayStringBuilder { return unicodeSubscriptZero + (n - unicodeZero); })); - name = typeParameter.name + subscript; + name = typeParameter.name3! + subscript; } var newTypeParameter = TypeParameterElementImpl(name, -1); + newTypeParameter.name2 = name; newTypeParameter.bound = typeParameter.bound; - newTypeParameters.add(newTypeParameter); + newTypeParameters.add(newTypeParameter.asElement2); } - return replaceTypeParameters(type as FunctionTypeImpl, newTypeParameters); + return replaceTypeParameters(type, newTypeParameters); } } enum _WriteFormalParameterKind { requiredPositional, optionalPositional, named } + +extension on LibraryImportElementImpl { + String get libraryName { + if (uri case DirectiveUriWithRelativeUriString uri) { + return uri.relativeUriString; + } + return ''; + } +} + +extension TypeParameterElementImplExtension on TypeParameterElementImpl { + TypeParameterElementImpl2 get asElement2 { + return element; + } +} diff --git a/packages/reactive_forms_generator/lib/src/reactive_form_generator_method.dart b/packages/reactive_forms_generator/lib/src/reactive_form_generator_method.dart index b789811b..01c83d2e 100644 --- a/packages/reactive_forms_generator/lib/src/reactive_form_generator_method.dart +++ b/packages/reactive_forms_generator/lib/src/reactive_form_generator_method.dart @@ -1,10 +1,10 @@ -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:code_builder/code_builder.dart'; import 'package:reactive_forms_generator/src/extensions.dart'; import 'package:reactive_forms_generator/src/types.dart'; abstract class ReactiveFormGeneratorMethod { - final ParameterElement field; + final FormalParameterElement field; final bool output; final List requiredValidators; diff --git a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_builder.dart b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_builder.dart index 76850533..ed21ca02 100644 --- a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_builder.dart +++ b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_builder.dart @@ -1,4 +1,4 @@ -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:code_builder/code_builder.dart'; import 'package:reactive_forms_generator/src/extensions.dart'; import 'package:reactive_forms_generator/src/reactive_forms/reactive_form.dart'; @@ -13,7 +13,7 @@ class ReactiveFormBuilder { String get _log => reactiveForm.reactiveInheritedStreamer.formGenerator.log; - ClassElement get _element => + ClassElement2 get _element => reactiveForm.reactiveInheritedStreamer.formGenerator.element; String get className => '${_baseName}Builder'; diff --git a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_update_value_method.dart b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_update_value_method.dart index 7530f0fb..66086f3c 100644 --- a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_update_value_method.dart +++ b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_form_update_value_method.dart @@ -25,7 +25,7 @@ class ReactiveFormUpdateValueMethod extends ReactiveFormGeneratorMethod { localValue.asMap().forEach((k, v) { final values = ${field.fieldControlName}.controls.map((e) => e.value).toList(); - if (${field.name}${field.className}.asMap().containsKey(k) && + if (${field.name3}${field.className}.asMap().containsKey(k) && values.asMap().containsKey(k)) { toUpdate.add(v); } else { diff --git a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_forms_clear_method.dart b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_forms_clear_method.dart index dc1632e0..8a9b6472 100644 --- a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_forms_clear_method.dart +++ b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_forms_clear_method.dart @@ -12,7 +12,7 @@ class ReactiveFormClearMethod extends ReactiveFormGeneratorMethod { @override Method? formGroupArrayMethod() { return methodEntity.rebuild((b) => b..body = Code(''' - ${field.name}${field.className}.clear(); + ${field.name3}${field.className}.clear(); ${field.fieldControlName}.clear( updateParent: updateParent, emitEvent: emitEvent); diff --git a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_forms_patch_value_method.dart b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_forms_patch_value_method.dart index 95cd32a2..f8e48ad8 100644 --- a/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_forms_patch_value_method.dart +++ b/packages/reactive_forms_generator/lib/src/reactive_forms/reactive_forms_patch_value_method.dart @@ -12,7 +12,7 @@ class ReactiveFormPatchValueMethod extends ReactiveFormGeneratorMethod { @override Method formGroupArrayMethod() { final code = ''' - final keys = ${field.name}${field.className}.asMap().keys; + final keys = ${field.name3}${field.className}.asMap().keys; final toPatch = <${field.typeParameter}>[]; (value ${field.isNullable ? '?? []' : ''}).asMap() diff --git a/packages/reactive_forms_generator/lib/src/reactive_forms_generator/extended_control_method.dart b/packages/reactive_forms_generator/lib/src/reactive_forms_generator/extended_control_method.dart index 934ae989..6133348d 100644 --- a/packages/reactive_forms_generator/lib/src/reactive_forms_generator/extended_control_method.dart +++ b/packages/reactive_forms_generator/lib/src/reactive_forms_generator/extended_control_method.dart @@ -21,7 +21,7 @@ class ExtendedControlMethod extends ReactiveFormGeneratorMethod { ExtendedControl?>, List<${type}Form>>( form.control(${field.fieldControlPath}()) as FormArray>, - () => ${field.name}${field.className}) + () => ${field.name3}${field.className}) '''; return Method( diff --git a/packages/reactive_forms_generator/lib/src/reactive_forms_generator/field_value_method.dart b/packages/reactive_forms_generator/lib/src/reactive_forms_generator/field_value_method.dart index 7b5b99b4..b363fe29 100644 --- a/packages/reactive_forms_generator/lib/src/reactive_forms_generator/field_value_method.dart +++ b/packages/reactive_forms_generator/lib/src/reactive_forms_generator/field_value_method.dart @@ -1,6 +1,6 @@ // ignore_for_file: implementation_imports -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:code_builder/code_builder.dart'; @@ -45,7 +45,7 @@ class FieldValueMethod extends ReactiveFormGeneratorMethod { Method? formGroupArrayMethod() => methodEntity.rebuild( (b) => b ..body = Code( - '${field.name}${field.className}.map((e) => e.$fieldModelName).toList()', + '${field.name3}${field.className}.map((e) => e.$fieldModelName).toList()', ), ); @@ -116,9 +116,12 @@ class FieldRawValueMethod extends FieldValueMethod { } } -extension Care on ClassElement { +extension Care on ClassElement2 { String get toReferenceType { - var builder = ElementDisplayStringBuilder2(withNullability: true); + var builder = ElementDisplayStringBuilder2( + withNullability: true, + preferTypeAlias: false, + ); (thisType as TypeImpl).appendTo(builder); return builder.toString(); } diff --git a/packages/reactive_forms_generator/lib/src/types.dart b/packages/reactive_forms_generator/lib/src/types.dart index 32b90c55..ef15f1b2 100644 --- a/packages/reactive_forms_generator/lib/src/types.dart +++ b/packages/reactive_forms_generator/lib/src/types.dart @@ -1,6 +1,6 @@ // ignore_for_file: implementation_imports import 'package:analyzer/dart/constant/value.dart'; -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:reactive_forms_generator/src/form_elements/form_element_generator.dart'; import 'package:source_gen/source_gen.dart'; import 'package:analyzer/src/dart/element/element.dart'; @@ -78,28 +78,17 @@ extension NodeListImplAnnotationImplExt on NodeListImpl { } } -extension ElementRfExt on Element { - bool get hasRfGroupAnnotation { - return formGroupChecker.hasAnnotationOfExact(this); - } - - bool get hasRfAnnotation { - return _formChecker.hasAnnotationOfExact(this); - } - - bool get hasRfControlAnnotation { - return formControlChecker.hasAnnotationOfExact(this); - } - - Map annotationParams(TypeChecker? typeChecker) { +extension on Annotatable { + Map annotationParams1(TypeChecker? typeChecker) { final result = {}; final annotation = typeChecker?.firstAnnotationOf(this); try { if (annotation != null) { - for (final meta in metadata) { + for (final meta in metadata2.annotations) { final obj = meta.computeConstantValue()!; - if (typeChecker?.isExactlyType(obj.type!) == true) { + final isExactlyType = typeChecker?.isExactlyType(obj.type!) ?? false; + if (isExactlyType) { final argumentList = (meta as ElementAnnotationImpl) .annotationAst .arguments as ArgumentListImpl; @@ -125,7 +114,103 @@ extension ElementRfExt on Element { } } -extension ParameterElementAnnotationExt on ParameterElement { +// extension FormalParameterElementExt on FormalParameterElement { +// Map annotationParams(TypeChecker? typeChecker) { +// final result = {}; +// final annotation = typeChecker?.firstAnnotationOf(this); +// try { +// if (annotation != null) { +// final x = this; +// +// final p = this.firstFragment; +// p.metadata2; +// +// print(x); +// // for (final meta in metadata) { +// // final obj = meta.computeConstantValue()!; +// // +// // if (typeChecker?.isExactlyType(obj.type!) == true) { +// // final argumentList = (meta as ElementAnnotationImpl) +// // .annotationAst +// // .arguments as ArgumentListImpl; +// // for (var argument in argumentList.arguments) { +// // final argumentNamedExpression = argument as NamedExpressionImpl; +// // result.addEntries( +// // [ +// // MapEntry( +// // argumentNamedExpression.name.label.toSource(), +// // argumentNamedExpression.expression.toSource(), +// // ), +// // ], +// // ); +// // } +// // } +// // } +// } +// +// return result; +// } catch (e) { +// return result; +// } +// } +// } + +extension ElementRfExt on Element2 { + bool get hasRfGroupAnnotation { + return formGroupChecker.hasAnnotationOfExact(this); + } + + bool get hasRfAnnotation { + return _formChecker.hasAnnotationOfExact(this); + } + + bool get hasRfControlAnnotation { + return formControlChecker.hasAnnotationOfExact(this); + } + + Map annotationParams(TypeChecker? typeChecker) { + final result = {}; + if (this is Annotatable) { + return (this as Annotatable).annotationParams1(typeChecker); + } + + return result; + // final annotation = typeChecker?.firstAnnotationOf(this); + // try { + // if (annotation != null) { + // final x = this; + // + // print(x); + // // for (final meta in metadata) { + // // final obj = meta.computeConstantValue()!; + // // + // // if (typeChecker?.isExactlyType(obj.type!) == true) { + // // final argumentList = (meta as ElementAnnotationImpl) + // // .annotationAst + // // .arguments as ArgumentListImpl; + // // for (var argument in argumentList.arguments) { + // // final argumentNamedExpression = argument as NamedExpressionImpl; + // // result.addEntries( + // // [ + // // MapEntry( + // // argumentNamedExpression.name.label.toSource(), + // // argumentNamedExpression.expression.toSource(), + // // ), + // // ], + // // ); + // // } + // // } + // // } + // } + // + // return result; + // } catch (e) { + // return result; + // } + } +} + +extension ParameterElementAnnotationExt on FormalParameterElement { bool get hasRfAnnotation { return _formChecker.hasAnnotationOfExact(this); } @@ -138,13 +223,13 @@ extension ParameterElementAnnotationExt on ParameterElement { } } -extension FieldElementAnnotationExt on FieldElement { +extension FieldElementAnnotationExt on FieldElement2 { bool get hasRfAnnotation { return _formChecker.hasAnnotationOfExact(this); } } -extension ClassElementAnnotationExt on ClassElement { +extension ClassElementAnnotationExt on ClassElement2 { bool get hasRfAnnotation { return _formChecker.hasAnnotationOfExact(this); } diff --git a/packages/reactive_forms_generator/lib/utils.dart b/packages/reactive_forms_generator/lib/utils.dart index 7cc37a22..b73c2aca 100644 --- a/packages/reactive_forms_generator/lib/utils.dart +++ b/packages/reactive_forms_generator/lib/utils.dart @@ -1,13 +1,13 @@ -import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; import 'package:source_gen/source_gen.dart'; -void throwIf(bool condition, String message, {Element? element}) { +void throwIf(bool condition, String message, {Element2? element}) { if (condition) { throwError(message, element: element); } } -void throwError(String message, {Element? element}) { +void throwError(String message, {Element2? element}) { throw InvalidGenerationSourceError( message, element: element, diff --git a/packages/reactive_forms_generator/pubspec.yaml b/packages/reactive_forms_generator/pubspec.yaml index 4b2b1e1d..59774727 100644 --- a/packages/reactive_forms_generator/pubspec.yaml +++ b/packages/reactive_forms_generator/pubspec.yaml @@ -2,28 +2,28 @@ name: reactive_forms_generator description: Generator for reactive_forms. Generates form classes based on model. repository: https://github.com/artflutter/reactive_forms_generator -version: 7.0.6 +version: 7.1.0-beta0 environment: - sdk: ">=3.6.0 <4.0.0" + sdk: ">=3.8.0 <4.0.0" resolution: workspace dependencies: - build: ^2.4.2 - source_gen: ^2.0.0 - _fe_analyzer_shared: ^80.0.0 - analyzer: ^7.3.0 + build: ^3.0.2 + source_gen: ^3.1.0 + _fe_analyzer_shared: ^85.0.0 + analyzer: ^7.5.9 path: ^1.8.1 - build_runner: ^2.4.15 + build_runner: ^2.7.0 code_builder: ^4.10.1 collection: ">=1.0.0 <2.0.0" - dart_style: ^3.0.1 + dart_style: ^3.0.0 recase: ^4.1.0 dev_dependencies: - build_test: ^2.2.3 + build_test: ^3.3.3 logging: ^1.2.0 - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 #dependency_overrides: # build_resolvers: ^2.1.0 diff --git a/pubspec.lock b/pubspec.lock index e44e16cb..27a9e6c0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: dc27559385e905ad30838356c5f5d574014ba39872d732111cd07ac0beff4c57 + sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f url: "https://pub.dev" source: hosted - version: "80.0.0" + version: "85.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "192d1c5b944e7e53b24b5586db760db934b177d4147c42fbca8c8c5f1eb8d11e" + sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" url: "https://pub.dev" source: hosted - version: "7.3.0" + version: "7.7.1" ansi_styles: dependency: transitive description: @@ -53,18 +53,18 @@ packages: dependency: transitive description: name: build - sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0 + sha256: ce76b1d48875e3233fde17717c23d1f60a91cc631597e49a400c89b475395b1d url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "3.1.0" build_config: dependency: transitive description: name: build_config - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" + sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.0" build_daemon: dependency: transitive description: @@ -77,34 +77,34 @@ packages: dependency: transitive description: name: build_resolvers - sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0 + sha256: d1d57f7807debd7349b4726a19fd32ec8bc177c71ad0febf91a20f84cd2d4b46 url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "3.0.3" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99" + sha256: b24597fceb695969d47025c958f3837f9f0122e237c6a22cb082a5ac66c3ca30 url: "https://pub.dev" source: hosted - version: "2.4.15" + version: "2.7.1" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021" + sha256: "066dda7f73d8eb48ba630a55acb50c4a84a2e6b453b1cb4567f581729e794f7b" url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "9.3.1" build_test: dependency: transitive description: name: build_test - sha256: a580c76c28440d0006b75c6746bbbb3c1648959ba9e1afae2c2b0f2c26acdf3d + sha256: "054eef426951304e127e800e0f76c3c978e7522d990532949380ae5e7224e65f" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "3.3.3" built_collection: dependency: transitive description: @@ -117,10 +117,10 @@ packages: dependency: transitive description: name: built_value - sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2" + sha256: a30f0a0e38671e89a492c44d005b5545b830a961575bbd8336d42869ff71066d url: "https://pub.dev" source: hosted - version: "8.9.3" + version: "8.12.0" characters: dependency: transitive description: @@ -282,10 +282,10 @@ packages: dependency: transitive description: name: flutter_lints - sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "6.0.0" flutter_localizations: dependency: transitive description: flutter @@ -300,18 +300,18 @@ packages: dependency: transitive description: name: freezed - sha256: "6022db4c7bfa626841b2a10f34dd1e1b68e8f8f9650db6112dcdeeca45ca793c" + sha256: "13065f10e135263a4f5a4391b79a8efc5fb8106f8dd555a9e49b750b45393d77" url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.2.3" freezed_annotation: dependency: transitive description: name: freezed_annotation - sha256: c87ff004c8aa6af2d531668b46a4ea379f7191dc6dfa066acd53d506da6e044b + sha256: "7294967ff0a6d98638e7acb774aac3af2550777accd8149c90af5b014e6d44d8" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.1.0" frontend_server_client: dependency: transitive description: @@ -404,42 +404,42 @@ packages: dependency: transitive description: name: json_serializable - sha256: c50ef5fc083d5b5e12eef489503ba3bf5ccc899e487d691584699b4bdefeea8c + sha256: "33a040668b31b320aafa4822b7b1e177e163fc3c1e835c6750319d4ab23aa6fe" url: "https://pub.dev" source: hosted - version: "6.9.5" + version: "6.11.1" leak_tracker: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" lints: dependency: transitive description: name: lints - sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0 url: "https://pub.dev" source: hosted - version: "5.1.1" + version: "6.0.0" logging: dependency: transitive description: @@ -564,10 +564,10 @@ packages: dependency: transitive description: name: pub_semver - sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.2.0" pub_updater: dependency: transitive description: @@ -596,10 +596,10 @@ packages: dependency: transitive description: name: reactive_forms_lbc - sha256: "62e714eef3e257b1f51111f7b1f92d5a2ecb96ecc531efd95e4c24e4b9a6b6c5" + sha256: "908a0a0cacb650838c01a88661836ef11386675a261f6c8f53881896a36ea0ac" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.0.6" recase: dependency: transitive description: @@ -649,18 +649,18 @@ packages: dependency: transitive description: name: source_gen - sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" + sha256: "7b19d6ba131c6eb98bfcbf8d56c1a7002eba438af2e7ae6f8398b2b0f4f381e3" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.1.0" source_helper: dependency: transitive description: name: source_helper - sha256: "86d247119aedce8e63f4751bd9626fc9613255935558447569ad42f9f5b48b3c" + sha256: "6a3c6cc82073a8797f8c4dc4572146114a39652851c157db37e964d9c7038723" url: "https://pub.dev" source: hosted - version: "1.3.5" + version: "1.3.8" source_map_stack_trace: dependency: transitive description: @@ -769,10 +769,10 @@ packages: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" vm_service: dependency: transitive description: @@ -838,5 +838,5 @@ packages: source: hosted version: "2.2.2" sdks: - dart: ">=3.7.0-0 <4.0.0" + dart: ">=3.8.0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/pubspec.yaml b/pubspec.yaml index cf636bb4..968298c5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,7 +7,7 @@ workspace: - packages/reactive_forms_generator/example environment: - sdk: ">=3.6.0 <4.0.0" + sdk: ">=3.8.0 <4.0.0" dependency_overrides: test_api: 0.7.4