1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-23 23:32:55 +00:00

Added test illustrating problem with bitwise not and literal number type inference. #199

This commit is contained in:
Jesper Gravgaard 2019-08-27 13:26:55 +02:00
parent 5b71c50a90
commit fc3b7bd5c0
2 changed files with 28 additions and 13 deletions

View File

@ -575,11 +575,12 @@ public class TestPrograms {
compileAndCompare("unused-irq"); compileAndCompare("unused-irq");
} }
/** TODO: Fix error with number resolving /**
@Test * TODO: Fix error with number resolving
public void testNumberTernaryFail() throws IOException, URISyntaxException { *
compileAndCompare("number-ternary-fail"); * @Test public void testNumberTernaryFail() throws IOException, URISyntaxException {
} * compileAndCompare("number-ternary-fail");
* }
*/ */
@Test @Test
@ -1457,7 +1458,7 @@ public class TestPrograms {
@Test @Test
public void testPointerPointer1() throws IOException, URISyntaxException { public void testPointerPointer1() throws IOException, URISyntaxException {
compileAndCompare("pointer-pointer-1" ); compileAndCompare("pointer-pointer-1");
} }
@Test @Test
@ -1704,7 +1705,6 @@ public class TestPrograms {
*/ */
@Test @Test
public void testInlineKasmRefout() throws IOException, URISyntaxException { public void testInlineKasmRefout() throws IOException, URISyntaxException {
compileAndCompare("inline-kasm-refout"); compileAndCompare("inline-kasm-refout");
@ -1975,6 +1975,14 @@ public class TestPrograms {
compileAndCompare("min-fmul-16"); compileAndCompare("min-fmul-16");
} }
// Fix literal number type conversion (also over the bitwise NOT operator). https://gitlab.com/camelot/kickc/issues/199
/*
@Test
public void testBitwiseNot1() throws IOException, URISyntaxException {
compileAndCompare("bitwise-not-1");
}
*/
@Test @Test
public void testBitwiseNot() throws IOException, URISyntaxException { public void testBitwiseNot() throws IOException, URISyntaxException {
compileAndCompare("bitwise-not"); compileAndCompare("bitwise-not");
@ -2082,7 +2090,7 @@ public class TestPrograms {
@Test @Test
public void testMultiplexer() throws IOException, URISyntaxException { public void testMultiplexer() throws IOException, URISyntaxException {
compileAndCompare("examples/multiplexer/simple-multiplexer",10); compileAndCompare("examples/multiplexer/simple-multiplexer", 10);
} }
@Test @Test
@ -3092,7 +3100,7 @@ public class TestPrograms {
private void testFile(String fileName, Integer upliftCombinations, CompileLog compileLog) throws IOException, URISyntaxException { private void testFile(String fileName, Integer upliftCombinations, CompileLog compileLog) throws IOException, URISyntaxException {
System.out.println("Testing output for " + fileName); System.out.println("Testing output for " + fileName);
Compiler compiler = new Compiler(); Compiler compiler = new Compiler();
if(compileLog!=null) { if(compileLog != null) {
compiler.setLog(compileLog); compiler.setLog(compileLog);
} }
compiler.addImportPath(stdlibPath); compiler.addImportPath(stdlibPath);
@ -3106,7 +3114,7 @@ public class TestPrograms {
boolean success = true; boolean success = true;
ReferenceHelper helper = new ReferenceHelperFolder(refPath); ReferenceHelper helper = new ReferenceHelperFolder(refPath);
success &= helper.testOutput(fileName, ".asm", program.getAsm().toString(new AsmProgram.AsmPrintState(false, false, false, false),program )); success &= helper.testOutput(fileName, ".asm", program.getAsm().toString(new AsmProgram.AsmPrintState(false, false, false, false), program));
success &= helper.testOutput(fileName, ".sym", program.getScope().toString(program, null)); success &= helper.testOutput(fileName, ".sym", program.getScope().toString(program, null));
success &= helper.testOutput(fileName, ".cfg", program.getGraph().toString(program)); success &= helper.testOutput(fileName, ".cfg", program.getGraph().toString(program));
success &= helper.testOutput(fileName, ".log", program.getLog().toString()); success &= helper.testOutput(fileName, ".log", program.getLog().toString());
@ -3118,7 +3126,7 @@ public class TestPrograms {
} }
private void compileAsm(String fileName, Program program) throws IOException { private void compileAsm(String fileName, Program program) throws IOException {
writeBinFile(fileName, ".asm", program.getAsm().toString(new AsmProgram.AsmPrintState(false), program )); writeBinFile(fileName, ".asm", program.getAsm().toString(new AsmProgram.AsmPrintState(false), program));
for(Path asmResourceFile : program.getAsmResourceFiles()) { for(Path asmResourceFile : program.getAsmResourceFiles()) {
File asmFile = getBinFile(fileName, ".asm"); File asmFile = getBinFile(fileName, ".asm");
String asmFolder = asmFile.getParent(); String asmFolder = asmFile.getParent();

View File

@ -0,0 +1,7 @@
// Test that bitwise NOT (~) is handled correctly
void main() {
const char* screen = 0x0400;
char b = ~0x10;
*screen = b;
}