diff --git a/executable_semantics/BUILD b/executable_semantics/BUILD index 5d63b4de0d4a..4d29246b1751 100644 --- a/executable_semantics/BUILD +++ b/executable_semantics/BUILD @@ -81,7 +81,9 @@ EXAMPLES = [ "fun6_fail_type", "funptr1", "if1", - "if2", + # (Temporarily disabled pending + # https://github.com/carbon-language/carbon-lang/issues/311) + # "if2", "if3", "match_int_default", "match_int", @@ -107,7 +109,7 @@ EXAMPLES = [ srcs = ["testdata/%s.6c" % e], outs = ["testdata/%s.out" % e], # Suppress command errors. - cmd = "$(location executable_semantics) $< > $@ 2>&1 || true", + cmd = "$(location executable_semantics) $< > $@ 2>&1 || echo EXIT CODE: $$? >> $@", tools = [":executable_semantics"], ) for e in EXAMPLES] diff --git a/executable_semantics/interpreter/interpreter.cpp b/executable_semantics/interpreter/interpreter.cpp index 959f32acaa47..a0334c426dde 100644 --- a/executable_semantics/interpreter/interpreter.cpp +++ b/executable_semantics/interpreter/interpreter.cpp @@ -4,6 +4,7 @@ #include "executable_semantics/interpreter/interpreter.h" +#include #include #include #include @@ -744,7 +745,8 @@ auto IsBlockAct(Action* act) -> bool { void StepStmt() { Frame* frame = state->stack.Top(); Action* act = frame->todo.Top(); - Statement* stmt = act->u.stmt; + Statement* const stmt = act->u.stmt; + assert(stmt != nullptr && "null statement!"); std::cout << "--- step stmt "; PrintStatement(stmt, 1); std::cout << " --->" << std::endl; diff --git a/executable_semantics/testdata/choice1.golden b/executable_semantics/testdata/choice1.golden index 94e198ca614b..1ccf47425002 100644 --- a/executable_semantics/testdata/choice1.golden +++ b/executable_semantics/testdata/choice1.golden @@ -41,3 +41,4 @@ return n; 13: type error in call expected: Int actual: Tuple(0 = Int) +EXIT CODE: 255 diff --git a/executable_semantics/testdata/fun1.golden b/executable_semantics/testdata/fun1.golden index 387c3d0f1fc6..f1f18d2ba160 100644 --- a/executable_semantics/testdata/fun1.golden +++ b/executable_semantics/testdata/fun1.golden @@ -17,3 +17,4 @@ return f(0 = 1); 10: type error in call expected: Int actual: Tuple(0 = Int) +EXIT CODE: 255 diff --git a/executable_semantics/testdata/fun2.golden b/executable_semantics/testdata/fun2.golden index 8eec81ee819f..9c440fa9482c 100644 --- a/executable_semantics/testdata/fun2.golden +++ b/executable_semantics/testdata/fun2.golden @@ -23,3 +23,4 @@ return b; 15: type error in call expected: Int actual: Tuple(0 = Int) +EXIT CODE: 255 diff --git a/executable_semantics/testdata/fun6_fail_type.golden b/executable_semantics/testdata/fun6_fail_type.golden index 94b1a6bcc7ba..62f598f1b87f 100644 --- a/executable_semantics/testdata/fun6_fail_type.golden +++ b/executable_semantics/testdata/fun6_fail_type.golden @@ -25,3 +25,4 @@ return f(0 = xy); 10: type error in call expected: Tuple(0 = Int, 1 = Int) actual: Tuple(0 = Tuple(0 = Int, 1 = Int)) +EXIT CODE: 255 diff --git a/executable_semantics/testdata/fun_recur.golden b/executable_semantics/testdata/fun_recur.golden index 83e98b9cf3c3..783bf684ae0c 100644 --- a/executable_semantics/testdata/fun_recur.golden +++ b/executable_semantics/testdata/fun_recur.golden @@ -19,3 +19,4 @@ return f(0 = 2); 9: type error in call expected: Int actual: Tuple(0 = Int) +EXIT CODE: 255 diff --git a/executable_semantics/testdata/funptr1.golden b/executable_semantics/testdata/funptr1.golden index 1902f0933fb8..b4ee8bfcb6bd 100644 --- a/executable_semantics/testdata/funptr1.golden +++ b/executable_semantics/testdata/funptr1.golden @@ -23,3 +23,4 @@ return f(0 = (- 1)); 11: type error in call expected: Int actual: Tuple(0 = Int) +EXIT CODE: 255 diff --git a/executable_semantics/testdata/undef1.golden b/executable_semantics/testdata/undef1.golden index 90b8af3fd78a..8da37a654b5d 100644 --- a/executable_semantics/testdata/undef1.golden +++ b/executable_semantics/testdata/undef1.golden @@ -1 +1,2 @@ executable_semantics/testdata/undef1.6c:8: syntax error +EXIT CODE: 255 diff --git a/executable_semantics/testdata/undef2.golden b/executable_semantics/testdata/undef2.golden index 138b901faa90..5d2dd4058a0c 100644 --- a/executable_semantics/testdata/undef2.golden +++ b/executable_semantics/testdata/undef2.golden @@ -1,3 +1,4 @@ ********** source program ********** ********** type checking ********** error, program must contain a function named `main` +EXIT CODE: 255