mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-03 22:02:51 +01:00
improved checking for liveness when reading and writing memory (#448)
* improved checking for liveness when reading and writing memory * moving some functions to be methods of State * finished moving functions into State * Update executable_semantics/interpreter/interpreter.h Co-authored-by: Geoff Romer <gromer@google.com> * moved some comments, other minor edits Co-authored-by: Geoff Romer <gromer@google.com>
This commit is contained in:
committed by
GitHub
co-authored by
Geoff Romer
parent
7e81fb9c62
commit
27fd9de5bf
@@ -0,0 +1,21 @@
|
||||
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
// Test that the read from x triggers an error because x is dead.
|
||||
// This test also demonstrates how by-reference free-variable capture
|
||||
// is dangerous and can happen inside continuations.
|
||||
|
||||
fn capture() -> __Continuation {
|
||||
var Int: x = 1;
|
||||
__continuation k {
|
||||
var Int: y = x;
|
||||
}
|
||||
return k;
|
||||
}
|
||||
|
||||
fn main() -> Int {
|
||||
var __Continuation: k = capture();
|
||||
__run k; // error, lifetime of x is over
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
12: undefined behavior: access to dead value 1
|
||||
EXIT CODE: 255
|
||||
Reference in New Issue
Block a user