mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
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:
committed by
GitHub
co-authored by
Geoff Romer
parent
c1d651fc15
commit
e89b8daad7
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
result: 0
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
result: 0
|
||||
+8
@@ -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
@@ -0,0 +1 @@
|
||||
result: 0
|
||||
+13
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
result: 0
|
||||
+13
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
result: 0
|
||||
Reference in New Issue
Block a user