4 Commits
Author SHA1 Message Date
dualfroz ffe7e7b3f1 Fix #3702: Don't rewrite GetValueOrDefault() to == true in ?. chains
Turning bool?.GetValueOrDefault() into `== true` ends an enclosing
null-conditional chain, so `c?.Flag.GetValueOrDefault()` became
`(c?.Flag == true)` of type bool instead of bool?. A following `?? false`
then fails to compile (CS0019), and a following `.ToString()` yields
"False" instead of null when c is null. Keep the call when its target is
part of a ?. chain.
2026-10-16 10:07:54 +02:00
upstream 8e3e41fedb Upstream icsharpcode/ILSpy state of the touched files before 53822318d9 2026-10-10 13:03:54 +02:00
dualfroz 8c8b8caad8 Fix #3180: Spell out type arguments of a null-conditional extension call
When the extension method call cannot be written without type arguments
(another extension method with the same name and a different arity is
found first), the call falls back to the static form. For 'a?.M()' that
fallback produced 'Enumerable.Count(s?)', which is not valid C#. Writing
the type arguments excludes the extension methods of a different arity,
so for a null-conditional target the type arguments are tried before
giving up.
2026-10-03 11:46:13 +02:00
upstream a6526a1dab Upstream icsharpcode/ILSpy state of the touched files before 1e0fba1611 2026-10-03 11:46:13 +02:00