Kaynağa Gözat

Clarify the copy semantics of continuations (#816)

Geoff Romer 4 yıl önce
ebeveyn
işleme
0521890dbc

+ 3 - 0
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).

+ 0 - 1
executable_semantics/test_list.bzl

@@ -25,7 +25,6 @@ TEST_LIST = [
     "experimental_continuation5",
     "experimental_continuation6",
     "experimental_continuation7",
-    "experimental_continuation8",
     "experimental_continuation9",
     "fun1",
     "fun2",

+ 0 - 27
executable_semantics/testdata/experimental_continuation8.carbon

@@ -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;
-}

+ 0 - 1
executable_semantics/testdata/experimental_continuation8.golden

@@ -1 +0,0 @@
-result: 1