fix more typecasting issues

This commit is contained in:
Irmen de Jong
2022-01-08 17:04:25 +01:00
parent 7dd7e562bc
commit d99d977d2b
8 changed files with 259 additions and 105 deletions

View File

@@ -14,9 +14,10 @@ import prog8.ast.base.ParentSentinel
import prog8.ast.base.Position
import prog8.ast.expressions.*
import prog8.ast.statements.*
import prog8.compiler.BeforeAsmGenerationAstChanger
import prog8.compiler.printProgram
import prog8.codegen.target.C64Target
import prog8.compiler.BeforeAsmGenerationAstChanger
import prog8.compiler.BeforeAsmTypecastCleaner
import prog8.compilerinterface.*
import prog8tests.helpers.*
import prog8tests.helpers.DummyFunctions
@@ -304,16 +305,16 @@ class TestOptimization: FunSpec({
expr.inferType(result.program).getOrElse { fail("dt") } shouldBe DataType.UBYTE
val options = CompilationOptions(OutputType.RAW, LauncherType.NONE, ZeropageType.DONTUSE, emptyList(), false, true, C64Target)
val changer = BeforeAsmGenerationAstChanger(result.program,
options,
ErrorReporterForTests()
)
val changer = BeforeAsmGenerationAstChanger(result.program, options, ErrorReporterForTests())
changer.visit(result.program)
while(changer.applyModifications()>0) {
changer.visit(result.program)
}
val cleaner = BeforeAsmTypecastCleaner(result.program, ErrorReporterForTests())
cleaner.visit(result.program)
while(cleaner.applyModifications()>0) {
cleaner.visit(result.program)
}
// assignment is now split into:
// bb = not bb
// bb = (bb or not ww)