generate unchecked((int)0x91234567)
instead of int.MinValue + 0x11234567
#1115
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
#1064
For
&H80040E19
we getint.MinValue + 0x00040E19
. With this PR, we'd getunchecked((int)0x80040E19)
instead, thus preserving the hex literal value.Solution
Corresponding code in LiteralConversion.cs was adjusted.
Additionally, I had to change
CsWouldBeSimplifiedIncorrectly
to return true forCastExpressionSyntax
withParent
that's aCheckedExpressionSyntax
, because otherwise it would've caused CS0266: "Cannot implicitly convert type 'uint' to 'int'".Note this rule is a bit too aggressive:
(and many more cases with different types)
I'm reasonable sure it doesn't matter though: this PR introduces the very first call to
SyntaxFactory.CheckedExpression
.