From 5395c1e9ba4d757705ffafbb2cd4d0a8afe6610e Mon Sep 17 00:00:00 2001 From: Chunmyong Park Date: Thu, 2 Jul 2020 10:50:47 +0000 Subject: [PATCH] Fix grader --- examples/c/cond_and_loop.c | 2 +- examples/c/fibonacci.c | 2 +- examples/c/foo3.c | 2 +- examples/c/simple.c | 2 +- examples/c/while_continue_break.c | 2 +- examples/ir0/cond_and_loop.ir | 2 +- examples/ir0/fibonacci.ir | 2 +- examples/ir0/foo3.ir | 2 +- examples/ir0/simple.ir | 2 +- examples/ir0/while_continue_break.ir | 2 +- examples/ir1/cond_and_loop.ir | 2 +- examples/ir1/fibonacci.ir | 2 +- examples/ir1/foo3.ir | 2 +- examples/ir1/simple.ir | 2 +- examples/ir1/while_continue_break.ir | 2 +- examples/ir2/cond_and_loop.ir | 2 +- examples/ir2/fibonacci.ir | 2 +- examples/ir2/foo3.ir | 2 +- examples/ir2/simple.ir | 2 +- examples/ir2/while_continue_break.ir | 2 +- examples/ir3/cond_and_loop.ir | 2 +- examples/ir3/fibonacci.ir | 2 +- examples/ir3/foo3.ir | 2 +- examples/ir3/simple.ir | 2 +- examples/ir3/while_continue_break.ir | 2 +- examples/ir4/cond_and_loop.ir | 2 +- examples/ir4/fibonacci.ir | 2 +- examples/ir4/foo3.ir | 2 +- examples/ir4/simple.ir | 2 +- examples/ir4/while_continue_break.ir | 2 +- src/tests.rs | 10 ++++------ 31 files changed, 34 insertions(+), 36 deletions(-) diff --git a/examples/c/cond_and_loop.c b/examples/c/cond_and_loop.c index 57d247d..94f6508 100644 --- a/examples/c/cond_and_loop.c +++ b/examples/c/cond_and_loop.c @@ -1,4 +1,4 @@ -int nonce; // For random input +int nonce = 0; // For random input int main() { int i; diff --git a/examples/c/fibonacci.c b/examples/c/fibonacci.c index 537f73c..b075716 100644 --- a/examples/c/fibonacci.c +++ b/examples/c/fibonacci.c @@ -1,4 +1,4 @@ -int nonce; // For random input +int nonce = 0; // For random input int fibonacci(int n) { if (n < 2) { diff --git a/examples/c/foo3.c b/examples/c/foo3.c index f86010c..6082508 100644 --- a/examples/c/foo3.c +++ b/examples/c/foo3.c @@ -1,4 +1,4 @@ -int nonce; // For random input +int nonce = 0; // For random input int g = 10; int foo(int, int k); diff --git a/examples/c/simple.c b/examples/c/simple.c index a95da05..99d18c3 100644 --- a/examples/c/simple.c +++ b/examples/c/simple.c @@ -1,4 +1,4 @@ -int nonce; // For random input +int nonce = 0; // For random input int main() { diff --git a/examples/c/while_continue_break.c b/examples/c/while_continue_break.c index 940c008..6dd9de6 100644 --- a/examples/c/while_continue_break.c +++ b/examples/c/while_continue_break.c @@ -1,4 +1,4 @@ -int nonce; // For random input +int nonce = 0; // For random input int foo() { int sum = 0; diff --git a/examples/ir0/cond_and_loop.ir b/examples/ir0/cond_and_loop.ir index 60dc5b9..a560e57 100644 --- a/examples/ir0/cond_and_loop.ir +++ b/examples/ir0/cond_and_loop.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @main () { init: diff --git a/examples/ir0/fibonacci.ir b/examples/ir0/fibonacci.ir index 61eca03..b8e07d3 100644 --- a/examples/ir0/fibonacci.ir +++ b/examples/ir0/fibonacci.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @fibonacci (i32) { init: diff --git a/examples/ir0/foo3.ir b/examples/ir0/foo3.ir index 667fa2b..5966874 100644 --- a/examples/ir0/foo3.ir +++ b/examples/ir0/foo3.ir @@ -1,5 +1,5 @@ var i32 @g = 10 -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @foo (i32, i32) { init: diff --git a/examples/ir0/simple.ir b/examples/ir0/simple.ir index d81c15e..fdbc6ff 100644 --- a/examples/ir0/simple.ir +++ b/examples/ir0/simple.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @main () { init: diff --git a/examples/ir0/while_continue_break.ir b/examples/ir0/while_continue_break.ir index a737174..c95fb3e 100644 --- a/examples/ir0/while_continue_break.ir +++ b/examples/ir0/while_continue_break.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @foo () { init: diff --git a/examples/ir1/cond_and_loop.ir b/examples/ir1/cond_and_loop.ir index 6eb7081..4bbfaf0 100644 --- a/examples/ir1/cond_and_loop.ir +++ b/examples/ir1/cond_and_loop.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @main () { init: diff --git a/examples/ir1/fibonacci.ir b/examples/ir1/fibonacci.ir index fc78988..4a8aa1a 100644 --- a/examples/ir1/fibonacci.ir +++ b/examples/ir1/fibonacci.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @fibonacci (i32) { init: diff --git a/examples/ir1/foo3.ir b/examples/ir1/foo3.ir index 3090014..244e6b7 100644 --- a/examples/ir1/foo3.ir +++ b/examples/ir1/foo3.ir @@ -1,5 +1,5 @@ var i32 @g = 10 -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @foo (i32, i32) { init: diff --git a/examples/ir1/simple.ir b/examples/ir1/simple.ir index f449776..aa4e58e 100644 --- a/examples/ir1/simple.ir +++ b/examples/ir1/simple.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @main () { init: diff --git a/examples/ir1/while_continue_break.ir b/examples/ir1/while_continue_break.ir index 4eaabd7..b8a7650 100644 --- a/examples/ir1/while_continue_break.ir +++ b/examples/ir1/while_continue_break.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @foo () { init: diff --git a/examples/ir2/cond_and_loop.ir b/examples/ir2/cond_and_loop.ir index 9b08ef2..550f7d9 100644 --- a/examples/ir2/cond_and_loop.ir +++ b/examples/ir2/cond_and_loop.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @main () { init: diff --git a/examples/ir2/fibonacci.ir b/examples/ir2/fibonacci.ir index 1d477cf..b010132 100644 --- a/examples/ir2/fibonacci.ir +++ b/examples/ir2/fibonacci.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @fibonacci (i32) { init: diff --git a/examples/ir2/foo3.ir b/examples/ir2/foo3.ir index f57d193..f9c66db 100644 --- a/examples/ir2/foo3.ir +++ b/examples/ir2/foo3.ir @@ -1,5 +1,5 @@ var i32 @g = 10 -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @foo (i32, i32) { init: diff --git a/examples/ir2/simple.ir b/examples/ir2/simple.ir index ac91ca6..08f729c 100644 --- a/examples/ir2/simple.ir +++ b/examples/ir2/simple.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @main () { init: diff --git a/examples/ir2/while_continue_break.ir b/examples/ir2/while_continue_break.ir index 8bf32c4..d5a70a6 100644 --- a/examples/ir2/while_continue_break.ir +++ b/examples/ir2/while_continue_break.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @foo () { init: diff --git a/examples/ir3/cond_and_loop.ir b/examples/ir3/cond_and_loop.ir index 03ca775..483b5d1 100644 --- a/examples/ir3/cond_and_loop.ir +++ b/examples/ir3/cond_and_loop.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @main () { init: diff --git a/examples/ir3/fibonacci.ir b/examples/ir3/fibonacci.ir index 49c3a68..3f8bbf9 100644 --- a/examples/ir3/fibonacci.ir +++ b/examples/ir3/fibonacci.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @fibonacci (i32) { init: diff --git a/examples/ir3/foo3.ir b/examples/ir3/foo3.ir index 226097f..a74d49c 100644 --- a/examples/ir3/foo3.ir +++ b/examples/ir3/foo3.ir @@ -1,5 +1,5 @@ var i32 @g = 10 -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @foo (i32, i32) { init: diff --git a/examples/ir3/simple.ir b/examples/ir3/simple.ir index 1d4accf..ce4de28 100644 --- a/examples/ir3/simple.ir +++ b/examples/ir3/simple.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @main () { init: diff --git a/examples/ir3/while_continue_break.ir b/examples/ir3/while_continue_break.ir index 15156c9..7256593 100644 --- a/examples/ir3/while_continue_break.ir +++ b/examples/ir3/while_continue_break.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @foo () { init: diff --git a/examples/ir4/cond_and_loop.ir b/examples/ir4/cond_and_loop.ir index 6815c89..4c93388 100644 --- a/examples/ir4/cond_and_loop.ir +++ b/examples/ir4/cond_and_loop.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @main () { init: diff --git a/examples/ir4/fibonacci.ir b/examples/ir4/fibonacci.ir index 49c3a68..3f8bbf9 100644 --- a/examples/ir4/fibonacci.ir +++ b/examples/ir4/fibonacci.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @fibonacci (i32) { init: diff --git a/examples/ir4/foo3.ir b/examples/ir4/foo3.ir index 226097f..a74d49c 100644 --- a/examples/ir4/foo3.ir +++ b/examples/ir4/foo3.ir @@ -1,5 +1,5 @@ var i32 @g = 10 -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @foo (i32, i32) { init: diff --git a/examples/ir4/simple.ir b/examples/ir4/simple.ir index 1d4accf..ce4de28 100644 --- a/examples/ir4/simple.ir +++ b/examples/ir4/simple.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @main () { init: diff --git a/examples/ir4/while_continue_break.ir b/examples/ir4/while_continue_break.ir index 15156c9..7256593 100644 --- a/examples/ir4/while_continue_break.ir +++ b/examples/ir4/while_continue_break.ir @@ -1,4 +1,4 @@ -var i32 @nonce = default +var i32 @nonce = 0 fun i32 @foo () { init: diff --git a/src/tests.rs b/src/tests.rs index 84cb608..b9adf8a 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -9,7 +9,6 @@ use wait_timeout::ChildExt; use crate::*; -const NONCE_DTYPE: &str = "int"; const NONCE_NAME: &str = "nonce"; fn modify_c(path: &Path, rand_num: i32) -> String { @@ -19,8 +18,8 @@ fn modify_c(path: &Path, rand_num: i32) -> String { .expect("`src` must be converted to string"); drop(src); - let from = format!("{} {}", NONCE_DTYPE, NONCE_NAME); - let to = format!("{} = {}", from, rand_num); + let from = format!("int {} = 0", NONCE_NAME); + let to = format!("int {} = {}", NONCE_NAME, rand_num); data.replace(&from, &to) } @@ -44,9 +43,7 @@ fn ast_initializer(number: i32) -> ast::Initializer { fn modify_ir(unit: &mut ir::TranslationUnit, rand_num: i32) { for (name, decl) in &mut unit.decls { if name == NONCE_NAME { - let (dtype, initializer) = decl.get_variable().expect("`decl` must be variable"); - assert!(initializer.is_none()); - + let (dtype, _) = decl.get_variable().expect("`decl` must be variable"); let initializer = ast_initializer(rand_num); let new_decl = ir::Declaration::Variable { dtype: dtype.clone(), @@ -110,6 +107,7 @@ pub fn test_irgen(path: &Path) { let rand_num = rand::thread_rng().gen(); let new_c = modify_c(path, rand_num); modify_ir(&mut ir, rand_num); + println!("{}", new_c); // compile recolved c example let temp_dir = tempdir().expect("temp dir creation failed");