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
+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