blob: d9a283f581e65ea6f2d0147fef3ef2baa62e0ed3 [file] [log] [blame]
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Test simple tuple return
public class TupleTest {
public func getNothing() -> () {
return ()
}
public func getSingleValue() -> (Int) {
return (42)
}
public func getCoordinates() -> (Int, Int) {
return (10, 20)
}
public func getLabeledTuple() -> (id: Int, name: String) {
return (id: 42, name: "Alice")
}
public func getMixedTuple() -> (Int, value: String, Bool) {
return (1, value: "test", true)
}
// Tuple with optional elements
// TODO(https://github.com/dart-lang/native/issues/1743): Enable this when optional primitives are supported.
// public func getTupleWithOptionals() -> (Int?, String?) {
// return (nil, "test")
// }
// Deeply nested tuple (3 levels)
public func getDeeplyNestedTuple() -> (Int, (String, (Bool, Double))) {
return (1, ("test", (true, 3.14)))
}
// Large tuple with many elements
public func getLargeTuple() -> (Int, Int, Int, Int, Int) {
return (1, 2, 3, 4, 5)
}
// All labeled elements
public func getAllLabeledTuple() -> (x: Int, y: Int, z: String) {
return (x: 10, y: 20, z: "point")
}
public class NestedTupleTest {
public func getNestedTuple() -> (Int, (String, Bool)) {
return (42, ("test", true))
}
}
// Test repeated nested tuples (both elements have the same tuple type)
public func getRepeatedNestedTuple() -> ((Int, String), (Int, String)) {
return ((1, "a"), (2, "b"))
}
// Test tuple with cycle
// TODO(https://github.com/dart-lang/native/issues/1358): Enable this when the bug is fixed.
/*
public func getCircularTuple() -> (Foo, Bar)? {
return nil
}
public class Foo {
public func getCycle() -> (Foo, Bar) {
return (self, Bar())
}
}
public class Bar {
public func getCycle() -> (Foo, Bar) {
return (Foo(), self)
}
}
*/
// TODO(https://github.com/dart-lang/native/issues/1743): Enable this when optional return types are fully supported.
// public class OptionalTupleTest {
// public func getOptionalTuple() -> (Int, String)? {
// return (1, "test")
// }
// // Optional nested tuple
// public func getOptionalNestedTuple() -> (Int, (String, Bool)?) {
// return (42, nil)
// }
// }
}