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.
IDeclarationScope
is inaccessible during Lower call. I put explicit typecasts during emit phase. That require subsequet changes inIExpression
interface and possible in theToIntermediate
as well.BinaryOperatorExpression.EmitConversion
consult nowCTypeSystem
, I plan to remove that method altogether and replace it by insertion of correspondingTypeCastExpression
when needed.PrimitiveTypes
test is artifact of typecast insertion. Once constant evaluation would start appearing, I expect changes in these area again. Same forFloatConstTest2
, it will emit ldc.r4 becasue(float)1.5
would be folded directly to1.5f
I did not close #246 with that PR because I need to invest in more tests for conversions, and rework of
ArithmeticBinaryOperatorExpression
to insertTypeCastExpression
. Basically I expect during lowering following conversionIntConstant(1) + CharConstant('c')
=>IntegerConstant(1) + IntegerConstant(99)
, but introduction ofTypeCastExpression
is allow to work on that issue.Closes: #243