@@ -463,3 +463,106 @@ class NonNullableTypes {
463463 required this .number,
464464 });
465465}
466+
467+ class SuperClass {
468+ String ? superField;
469+ }
470+
471+ @ShouldGenerate (r'''
472+ SubClass _$parseSubClassResult(ArgResults result) => SubClass()
473+ ..superField = result['super-field'] as String?
474+ ..yLocal = result['y-local'] as String?
475+ ..xLocal = result['x-local'] as String?
476+ ..wExplicitSetter = result['w-explicit-setter'] as String?
477+ ..subclassField = result['subclass-field'] as String?;
478+
479+ ArgParser _$populateSubClassParser(ArgParser parser) => parser
480+ ..addOption(
481+ 'super-field',
482+ )
483+ ..addOption(
484+ 'y-local',
485+ )
486+ ..addOption(
487+ 'x-local',
488+ )
489+ ..addOption(
490+ 'w-explicit-setter',
491+ )
492+ ..addOption(
493+ 'subclass-field',
494+ );
495+
496+ final _$parserForSubClass = _$populateSubClassParser(ArgParser());
497+
498+ SubClass parseSubClass(List<String> args) {
499+ final result = _$parserForSubClass.parse(args);
500+ return _$parseSubClassResult(result);
501+ }
502+ ''' )
503+ @CliOptions ()
504+ class SubClass extends SuperClass {
505+ String ? yLocal;
506+ String ? xLocal;
507+ String ? get wExplicitSetter => null ;
508+ set wExplicitSetter (String ? value) {}
509+ String ? subclassField;
510+ }
511+
512+ abstract class GenericSuperClass <T > {
513+ T ? bField;
514+ T ? aField;
515+ }
516+
517+ @ShouldGenerate (r'''
518+ T _$badNumberFormat<T extends num>(
519+ String source,
520+ String type,
521+ String argName,
522+ ) =>
523+ throw FormatException(
524+ 'Cannot parse "$source" into `$type` for option "$argName".',
525+ );
526+
527+ GenericSubClass _$parseGenericSubClassResult(ArgResults result) =>
528+ GenericSubClass()
529+ ..bField = result['b-field'] != null
530+ ? int.tryParse(result['b-field'] as String) ??
531+ _$badNumberFormat(
532+ result['b-field'] as String,
533+ 'int',
534+ 'b-field',
535+ )
536+ : null
537+ ..aField = result['a-field'] != null
538+ ? int.tryParse(result['a-field'] as String) ??
539+ _$badNumberFormat(
540+ result['a-field'] as String,
541+ 'int',
542+ 'a-field',
543+ )
544+ : null
545+ ..subclassField = result['subclass-field'] as String?;
546+
547+ ArgParser _$populateGenericSubClassParser(ArgParser parser) => parser
548+ ..addOption(
549+ 'b-field',
550+ )
551+ ..addOption(
552+ 'a-field',
553+ )
554+ ..addOption(
555+ 'subclass-field',
556+ );
557+
558+ final _$parserForGenericSubClass = _$populateGenericSubClassParser(ArgParser());
559+
560+ GenericSubClass parseGenericSubClass(List<String> args) {
561+ final result = _$parserForGenericSubClass.parse(args);
562+ return _$parseGenericSubClassResult(result);
563+ }
564+ ''' )
565+ @CliOptions ()
566+ class GenericSubClass extends GenericSuperClass <int > {
567+ String ? subclassField;
568+ }
0 commit comments