mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-28 22:02:37 +01:00
* Add assertion to detect UB in interpreter.cpp This change, applied to6e5070d("Adapting jsiek's executable semantics tooling for commit. (#237)"), causes the if2.6c test to segfault. Becase the assertion fires only when `stmt == nullptr` and no code has permission to change `stmt` (it is `const`) before it is dereferenced in the `switch`, and nothiing in `PrintStatement` is supposed to exit the program, the assertion is a valid change that detects a bug. The crash was originally manifest in29a5994("Executable Semantics: 1st-class stacks (#296)"). * Temporarily disable the if2 test pending #311 See https://github.com/carbon-language/carbon-lang/issues/311 * [executable semantics] Record exit code on expected error. This will prevent a final segfault from sneaking by, detected as a passing test. A more principled follow-up commit would bottleneck detected error exit reporting and have it write something to std::cerr that can be recognized.
27 lines
584 B
Plaintext
27 lines
584 B
Plaintext
********** source program **********
|
|
fn add1 Int: x -> Int {
|
|
return (x + 1);
|
|
|
|
}
|
|
fn main () -> Int {
|
|
var fn Int -> Int: f = add1;
|
|
return f(0 = (- 1));
|
|
|
|
}
|
|
********** type checking **********
|
|
--- step exp Int --->
|
|
--- step exp Int --->
|
|
--- step exp Int --->
|
|
--- step exp Int --->
|
|
--- step exp Int --->
|
|
--- step exp Int --->
|
|
--- step exp fn Int -> Int --->
|
|
--- step exp Int --->
|
|
--- handle value Int with fn Int -> Int<1>(Int,) --->
|
|
--- step exp Int --->
|
|
--- handle value Int with fn Int -> Int<2>(Int,Int,) --->
|
|
11: type error in call
|
|
expected: Int
|
|
actual: Tuple(0 = Int)
|
|
EXIT CODE: 255
|