Skip to content

Commit 50ee964

Browse files
ptasevangularsen
andauthored
Added some nullability annotations to v4 (#1323)
In my project I treat warnings as errors, and when using the source generator from `System.Text.Json` for a type that has `UnitsNet` properties, it was generating code that had nullability warnings on `BaseDimensions` and `BaseUnits` for `operator ==`. Since there's no good way to suppress this warning only for source generated code, the only way to fix this, short of disabling the warnings-as-errors across my whole project, is to add these annotations. Co-authored-by: Andreas Gullberg Larsen <[email protected]>
1 parent fe0e0f2 commit 50ee964

File tree

240 files changed

+2613
-2613
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

240 files changed

+2613
-2613
lines changed

CodeGen/Generators/UnitsNetGen/QuantityGenerator.cs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -799,7 +799,7 @@ private void GenerateEqualityAndComparison()
799799
}}
800800
801801
/// <inheritdoc />
802-
public int CompareTo(object obj)
802+
public int CompareTo(object? obj)
803803
{{
804804
if (obj is null) throw new ArgumentNullException(nameof(obj));
805805
if (!(obj is {_quantity.Name} obj{_quantity.Name})) throw new ArgumentException(""Expected type {_quantity.Name}."", nameof(obj));
@@ -815,7 +815,7 @@ public int CompareTo({_quantity.Name} other)
815815
816816
/// <inheritdoc />
817817
/// <remarks>Consider using <see cref=""Equals({_quantity.Name}, double, ComparisonType)""/> for safely comparing floating point values.</remarks>
818-
public override bool Equals(object obj)
818+
public override bool Equals(object? obj)
819819
{{
820820
if (obj is null || !(obj is {_quantity.Name} obj{_quantity.Name}))
821821
return false;
@@ -1128,7 +1128,7 @@ public string ToString(IFormatProvider? provider, [NotNull] string format, [NotN
11281128
/// </summary>
11291129
/// <param name=""format"">The format string.</param>
11301130
/// <returns>The string representation.</returns>
1131-
public string ToString(string format)
1131+
public string ToString(string? format)
11321132
{{
11331133
return ToString(format, CultureInfo.CurrentUICulture);
11341134
}}
@@ -1140,7 +1140,7 @@ public string ToString(string format)
11401140
/// <param name=""format"">The format string.</param>
11411141
/// <param name=""provider"">Format to use for localization and number formatting. Defaults to <see cref=""CultureInfo.CurrentUICulture"" /> if null.</param>
11421142
/// <returns>The string representation.</returns>
1143-
public string ToString(string format, IFormatProvider? provider)
1143+
public string ToString(string? format, IFormatProvider? provider)
11441144
{{
11451145
return QuantityFormatter.Format<{_unitEnumName}>(this, format, provider);
11461146
}}
@@ -1159,67 +1159,67 @@ TypeCode IConvertible.GetTypeCode()
11591159
return TypeCode.Object;
11601160
}}
11611161
1162-
bool IConvertible.ToBoolean(IFormatProvider provider)
1162+
bool IConvertible.ToBoolean(IFormatProvider? provider)
11631163
{{
11641164
throw new InvalidCastException($""Converting {{typeof({_quantity.Name})}} to bool is not supported."");
11651165
}}
11661166
1167-
byte IConvertible.ToByte(IFormatProvider provider)
1167+
byte IConvertible.ToByte(IFormatProvider? provider)
11681168
{{
11691169
return Convert.ToByte(_value);
11701170
}}
11711171
1172-
char IConvertible.ToChar(IFormatProvider provider)
1172+
char IConvertible.ToChar(IFormatProvider? provider)
11731173
{{
11741174
throw new InvalidCastException($""Converting {{typeof({_quantity.Name})}} to char is not supported."");
11751175
}}
11761176
1177-
DateTime IConvertible.ToDateTime(IFormatProvider provider)
1177+
DateTime IConvertible.ToDateTime(IFormatProvider? provider)
11781178
{{
11791179
throw new InvalidCastException($""Converting {{typeof({_quantity.Name})}} to DateTime is not supported."");
11801180
}}
11811181
1182-
decimal IConvertible.ToDecimal(IFormatProvider provider)
1182+
decimal IConvertible.ToDecimal(IFormatProvider? provider)
11831183
{{
11841184
return Convert.ToDecimal(_value);
11851185
}}
11861186
1187-
double IConvertible.ToDouble(IFormatProvider provider)
1187+
double IConvertible.ToDouble(IFormatProvider? provider)
11881188
{{
11891189
return Convert.ToDouble(_value);
11901190
}}
11911191
1192-
short IConvertible.ToInt16(IFormatProvider provider)
1192+
short IConvertible.ToInt16(IFormatProvider? provider)
11931193
{{
11941194
return Convert.ToInt16(_value);
11951195
}}
11961196
1197-
int IConvertible.ToInt32(IFormatProvider provider)
1197+
int IConvertible.ToInt32(IFormatProvider? provider)
11981198
{{
11991199
return Convert.ToInt32(_value);
12001200
}}
12011201
1202-
long IConvertible.ToInt64(IFormatProvider provider)
1202+
long IConvertible.ToInt64(IFormatProvider? provider)
12031203
{{
12041204
return Convert.ToInt64(_value);
12051205
}}
12061206
1207-
sbyte IConvertible.ToSByte(IFormatProvider provider)
1207+
sbyte IConvertible.ToSByte(IFormatProvider? provider)
12081208
{{
12091209
return Convert.ToSByte(_value);
12101210
}}
12111211
1212-
float IConvertible.ToSingle(IFormatProvider provider)
1212+
float IConvertible.ToSingle(IFormatProvider? provider)
12131213
{{
12141214
return Convert.ToSingle(_value);
12151215
}}
12161216
1217-
string IConvertible.ToString(IFormatProvider provider)
1217+
string IConvertible.ToString(IFormatProvider? provider)
12181218
{{
12191219
return ToString(""g"", provider);
12201220
}}
12211221
1222-
object IConvertible.ToType(Type conversionType, IFormatProvider provider)
1222+
object IConvertible.ToType(Type conversionType, IFormatProvider? provider)
12231223
{{
12241224
if (conversionType == typeof({_quantity.Name}))
12251225
return this;
@@ -1235,17 +1235,17 @@ object IConvertible.ToType(Type conversionType, IFormatProvider provider)
12351235
throw new InvalidCastException($""Converting {{typeof({_quantity.Name})}} to {{conversionType}} is not supported."");
12361236
}}
12371237
1238-
ushort IConvertible.ToUInt16(IFormatProvider provider)
1238+
ushort IConvertible.ToUInt16(IFormatProvider? provider)
12391239
{{
12401240
return Convert.ToUInt16(_value);
12411241
}}
12421242
1243-
uint IConvertible.ToUInt32(IFormatProvider provider)
1243+
uint IConvertible.ToUInt32(IFormatProvider? provider)
12441244
{{
12451245
return Convert.ToUInt32(_value);
12461246
}}
12471247
1248-
ulong IConvertible.ToUInt64(IFormatProvider provider)
1248+
ulong IConvertible.ToUInt64(IFormatProvider? provider)
12491249
{{
12501250
return Convert.ToUInt64(_value);
12511251
}}

CodeGen/Generators/UnitsNetWrcGen/QuantityGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ private void GenerateEqualityAndComparison()
531531
Writer.WL($@"
532532
#region Equality / IComparable
533533
534-
public int CompareTo(object obj)
534+
public int CompareTo(object? obj)
535535
{{
536536
if (obj is null) throw new ArgumentNullException(nameof(obj));
537537
if (!(obj is {_quantity.Name} obj{_quantity.Name})) throw new ArgumentException(""Expected type {_quantity.Name}."", nameof(obj));
@@ -546,7 +546,7 @@ internal int CompareTo({_quantity.Name} other)
546546
}}
547547
548548
[Windows.Foundation.Metadata.DefaultOverload]
549-
public override bool Equals(object obj)
549+
public override bool Equals(object? obj)
550550
{{
551551
if (obj is null || !(obj is {_quantity.Name} obj{_quantity.Name}))
552552
return false;

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Acceleration.g.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/AmountOfSubstance.g.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/AmplitudeRatio.g.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Angle.g.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/ApparentEnergy.g.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/ApparentPower.g.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Area.g.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/AreaDensity.g.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)