File tree Expand file tree Collapse file tree 1 file changed +18
-9
lines changed
built_value_generator/lib/src Expand file tree Collapse file tree 1 file changed +18
-9
lines changed Original file line number Diff line number Diff line change @@ -1202,15 +1202,24 @@ abstract class ValueSourceClass
12021202 if (comparedFields.isEmpty) {
12031203 result.writeln ('return ${name .hashCode };' );
12041204 } else {
1205- result.writeln (
1206- 'return ${generateMemoizedHashCode ? '__hashCode ??= ' : '' }\$ jf(' );
1207- result.writeln (r'$jc(' * comparedFields.length);
1208- // Use a different seed for builders than for values, so they do not have
1209- // identical hashCodes if the values are identical.
1210- result.writeln (forBuilder ? '1, ' : '0, ' );
1211- result.write (
1212- comparedFields.map ((field) => '${field .name }.hashCode' ).join ('), ' ));
1213- result.writeln ('));' );
1205+ if (generateMemoizedHashCode) {
1206+ result.writeln ('if (__hashCode != null) return __hashCode$notNull ;' );
1207+ }
1208+
1209+ final seed = forBuilder ? 1 : 0 ;
1210+ result.writeln ('int hash = $seed ;' );
1211+
1212+ for (var field in comparedFields) {
1213+ result.writeln ('hash = \$ jc(hash, ${field .name }.hashCode);' );
1214+ }
1215+
1216+ result.writeln ('hash = \$ jf(hash);' );
1217+
1218+ if (generateMemoizedHashCode) {
1219+ result.writeln ('return __hashCode ??= hash;' );
1220+ } else {
1221+ result.writeln ('return hash;' );
1222+ }
12141223 }
12151224 result.writeln ('}' );
12161225 result.writeln ();
You can’t perform that action at this time.
0 commit comments