more tests of tuples, mixing positional and explicit field names (#480)

* more tests of tuples, especially mixing positional and explicit field names

* test of match with nested tuple

* Update executable_semantics/testdata/fun_named_params2.6c

Co-authored-by: Geoff Romer <gromer@google.com>

Co-authored-by: Geoff Romer <gromer@google.com>
This commit is contained in:
Jeremy G. Siek
2021-04-21 17:23:16 -04:00
committed by GitHub
co-authored by Geoff Romer
parent c1d651fc15
commit e89b8daad7
13 changed files with 75 additions and 0 deletions
+6
View File
@@ -32,6 +32,8 @@ EXAMPLES = [
"break1",
"choice1",
"continue1",
"fun_named_params",
"fun_named_params2",
"fun_recur",
"fun1",
"fun2",
@@ -51,6 +53,7 @@ EXAMPLES = [
"if1",
"if2",
"if3",
"match_any_int",
"match_int_default",
"match_int",
"match_type",
@@ -66,8 +69,11 @@ EXAMPLES = [
"tuple_equality2",
"tuple_equality3",
"tuple_match",
"tuple_match2",
"tuple_match3",
"tuple1",
"tuple2",
"tuple3",
"while1",
"zero",
"experimental_continuation1",
+9
View File
@@ -0,0 +1,9 @@
// 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
fn f(Int: x, .d = Int: y) => x + y;
fn main() -> Int {
return f(1, .d = 2) - 3;
}
+1
View File
@@ -0,0 +1 @@
result: 0
+9
View File
@@ -0,0 +1,9 @@
// 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
fn f(Int: x, .d = Int: y, Int: z, .e = Int: a) => (x + y) - (z + a);
fn main() -> Int {
return f(.e = 2, 1, 3, .d = 4);
}
@@ -0,0 +1 @@
result: 0
+11
View File
@@ -0,0 +1,11 @@
// 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
fn main() -> Int {
var auto: t = 5;
match (t) {
case Int: x =>
return x - 5;
}
}
+1
View File
@@ -0,0 +1 @@
result: 0
+8
View File
@@ -0,0 +1,8 @@
// 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
fn main() -> Int {
var (.x = Int, Int): t = (3, .x = 2);
return t.x + 1 - t[0];
}
+1
View File
@@ -0,0 +1 @@
result: 0
+13
View File
@@ -0,0 +1,13 @@
// 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 matching with a mixture of positional and named fields.
fn main() -> Int {
var auto: t = (.x = 5, 2);
match (t) {
case (auto: a, .x = auto: b) =>
return a - b + 3;
}
}
+1
View File
@@ -0,0 +1 @@
result: 0
+13
View File
@@ -0,0 +1,13 @@
// 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 matching of a tuple inside a tuple.
fn main() -> Int {
var auto: t = ((1,2),(3,4));
match (t) {
case ((auto: a, auto: b), auto: c) =>
return a - b + c[0] - c[1] + 2;
}
}
+1
View File
@@ -0,0 +1 @@
result: 0