mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 08:31:04 +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
@@ -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