From 0521890dbc19f97922ca1a9ab68fb3c13df9654a Mon Sep 17 00:00:00 2001 From: Geoff Romer Date: Wed, 8 Sep 2021 11:36:16 -0700 Subject: [PATCH] Clarify the copy semantics of continuations (#816) --- executable_semantics/README.md | 3 +++ executable_semantics/test_list.bzl | 1 - .../experimental_continuation8.carbon | 27 ------------------- .../experimental_continuation8.golden | 1 - 4 files changed, 3 insertions(+), 29 deletions(-) delete mode 100644 executable_semantics/testdata/experimental_continuation8.carbon delete mode 100644 executable_semantics/testdata/experimental_continuation8.golden diff --git a/executable_semantics/README.md b/executable_semantics/README.md index 1557c1a1b006..c18ea63e0981 100644 --- a/executable_semantics/README.md +++ b/executable_semantics/README.md @@ -198,6 +198,9 @@ the continuation. After the first `__run`, the control state is just after the `__await`. After the second `__run`, the control state is at the end of the continuation. +Continuation variables are currently copyable, but that operation is "shallow": +the two values are aliases for the same underlying continuation object. + The delimited continuation feature described here is based on the `shift`/`reset` style of delimited continuations created by Danvy and Filinsky (Abstracting control, ACM Conference on Lisp and Functional Programming, 1990). diff --git a/executable_semantics/test_list.bzl b/executable_semantics/test_list.bzl index 038ad64bc5a4..3d0cfbb701b7 100644 --- a/executable_semantics/test_list.bzl +++ b/executable_semantics/test_list.bzl @@ -25,7 +25,6 @@ TEST_LIST = [ "experimental_continuation5", "experimental_continuation6", "experimental_continuation7", - "experimental_continuation8", "experimental_continuation9", "fun1", "fun2", diff --git a/executable_semantics/testdata/experimental_continuation8.carbon b/executable_semantics/testdata/experimental_continuation8.carbon deleted file mode 100644 index aad639c2fe62..000000000000 --- a/executable_semantics/testdata/experimental_continuation8.carbon +++ /dev/null @@ -1,27 +0,0 @@ -// 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 - -package ExecutableSemanticsTest api; - -// Test the way in which copying of continuations interacts with data -// on the stack such as the variable `x`. In this example the copy -// happens before the variable `x` is created, so each continuation -// creates a different `x`. - -var y: i32 = 0; - -fn main() -> i32 { - __continuation k1 { - var x: i32 = 0; - x = x + 1; - __await; - y = x; - } - var k2: __Continuation = k1; - __run k1; - __run k2; - __run k1; - __run k2; - return y; -} diff --git a/executable_semantics/testdata/experimental_continuation8.golden b/executable_semantics/testdata/experimental_continuation8.golden deleted file mode 100644 index 0c204052cb21..000000000000 --- a/executable_semantics/testdata/experimental_continuation8.golden +++ /dev/null @@ -1 +0,0 @@ -result: 1