diff --git a/packages/freezed/lib/src/templates/abstract_template.dart b/packages/freezed/lib/src/templates/abstract_template.dart index 32851ade..df8250c3 100644 --- a/packages/freezed/lib/src/templates/abstract_template.dart +++ b/packages/freezed/lib/src/templates/abstract_template.dart @@ -50,7 +50,8 @@ ${copyWith?.commonConcreteImpl ?? ''} data.genericsParameterTemplate, data.genericArgumentFactories); String get _toJson { if (!data.generateToJson) return ''; - return 'Map toJson($_toJsonParams)' + return '/// Serializes this ${data.name} to a JSON map.\n' + 'Map toJson($_toJsonParams)' ' => throw $privConstUsedErrorVarName;'; } diff --git a/packages/freezed/lib/src/templates/concrete_template.dart b/packages/freezed/lib/src/templates/concrete_template.dart index 70a1eadb..8bc704a7 100644 --- a/packages/freezed/lib/src/templates/concrete_template.dart +++ b/packages/freezed/lib/src/templates/concrete_template.dart @@ -424,7 +424,7 @@ ${whenOrNullPrototype(data.constructors)} { return constructor.impliedProperties.expand((p) { return [ if (commonProperties.any((element) => element.name == p.name)) - '@override ${p.abstractGetter}' + p.abstractGetter.toString(shouldOverride: true) else '${p.abstractGetter}', if (!p.isFinal) p.abstractSetter, diff --git a/packages/freezed/lib/src/templates/copy_with.dart b/packages/freezed/lib/src/templates/copy_with.dart index ac4b5515..c1af5f15 100644 --- a/packages/freezed/lib/src/templates/copy_with.dart +++ b/packages/freezed/lib/src/templates/copy_with.dart @@ -61,17 +61,19 @@ ${_abstractDeepCopyMethods().join()} String get abstractCopyWithGetter { if (cloneableProperties.isEmpty) return ''; - return _maybeOverride( - ''' -@JsonKey(ignore: true) + return ''' +/// Create a copy of ${data.name} +/// with the given fields replaced by the non-null parameter values. +${_hasSuperClass ? '@override\n' : ''}@JsonKey(ignore: true) $_abstractClassName${genericsParameter.append('$clonedClassName$genericsParameter')} get copyWith => throw $privConstUsedErrorVarName; -''', - ); +'''; } String get concreteCopyWithGetter { if (cloneableProperties.isEmpty) return ''; return ''' +/// Create a copy of ${data.name} +/// with the given fields replaced by the non-null parameter values. @JsonKey(ignore: true) @override @pragma('vm:prefer-inline') diff --git a/packages/freezed/lib/src/templates/properties.dart b/packages/freezed/lib/src/templates/properties.dart index a925718a..6094c59f 100644 --- a/packages/freezed/lib/src/templates/properties.dart +++ b/packages/freezed/lib/src/templates/properties.dart @@ -192,8 +192,9 @@ class Getter { final String body; @override - String toString() { - return '$doc${decorators.join()} $type get $name$body'; + String toString({bool shouldOverride = false}) { + final finalDecorators = [if(shouldOverride)'@override', ...decorators]; + return '$doc${finalDecorators.join()} $type get $name$body'; } }