#![allow(missing_docs)]
#![allow(clippy::collapsible_match)]
use ruchy::runtime::interpreter::Value;
use ruchy::runtime::repl::Repl;
use std::path::PathBuf;
#[test]
fn test_sqlite_001_stack_overflow_infinite_recursion() {
let prog = r"
fun infinite() {
infinite()
}
infinite()
";
let result = std::panic::catch_unwind(|| execute_program(prog));
assert!(result.is_ok(), "Runtime should not panic on stack overflow");
if let Ok(exec_result) = result {
if let Err(e) = exec_result {
let err_msg = format!("{e:?}");
assert!(
err_msg.contains("recursion")
|| err_msg.contains("stack")
|| err_msg.contains("depth"),
"Error should mention recursion/stack, got: {err_msg}"
);
} else {
}
}
}
#[test]
fn test_sqlite_002_stack_overflow_mutual_recursion() {
let prog = r"
fun foo() { bar() }
fun bar() { foo() }
foo()
";
let result = std::panic::catch_unwind(|| execute_program(prog));
assert!(
result.is_ok(),
"Runtime should not panic on mutual recursion"
);
}
#[test]
fn test_sqlite_003_deep_call_stack() {
let prog = r"
fun countdown(n) {
if n == 0 {
0
} else {
countdown(n - 1)
}
}
countdown(10000)
";
let result = std::panic::catch_unwind(|| execute_program(prog));
assert!(
result.is_ok(),
"Runtime should handle deep recursion gracefully"
);
}
#[test]
fn test_sqlite_010_division_by_zero_integer() {
assert_runtime_error_or_special("1 / 0", &["division by zero", "infinity", "inf"]);
assert_runtime_error_or_special("42 / 0", &["division by zero", "infinity", "inf"]);
}
#[test]
fn test_sqlite_011_division_by_zero_float() {
let result = execute_program("1.0 / 0.0");
assert!(result.is_ok(), "Float division by zero should not panic");
}
#[test]
fn test_sqlite_012_modulo_by_zero() {
assert_runtime_error_or_special("1 % 0", &["modulo by zero", "division by zero", "infinity"]);
assert_runtime_error_or_special(
"42 % 0",
&["modulo by zero", "division by zero", "infinity"],
);
}
#[test]
fn test_sqlite_013_integer_overflow_add() {
let prog = "9223372036854775807 + 1";
let result = std::panic::catch_unwind(|| execute_program(prog));
assert!(result.is_ok(), "Integer overflow should not panic");
}
#[test]
fn test_sqlite_014_integer_overflow_sub() {
let prog = "-9223372036854775808 - 1";
let result = std::panic::catch_unwind(|| execute_program(prog));
assert!(result.is_ok(), "Integer underflow should not panic");
}
#[test]
fn test_sqlite_015_integer_overflow_mul() {
let prog = "9223372036854775807 * 2";
let result = std::panic::catch_unwind(|| execute_program(prog));
assert!(
result.is_ok(),
"Integer multiplication overflow should not panic"
);
}
#[test]
fn test_sqlite_016_float_nan() {
let result = execute_program("0.0 / 0.0");
assert!(result.is_ok(), "NaN generation should not fail");
let result = execute_program("let x = 0.0 / 0.0; x + 1.0");
assert!(result.is_ok(), "NaN propagation should work");
}
#[test]
fn test_sqlite_017_float_infinity() {
let result = execute_program("1.0 / 0.0");
assert!(result.is_ok(), "Infinity generation should not fail");
let result = execute_program("-1.0 / 0.0");
assert!(result.is_ok(), "Negative infinity should work");
}
#[test]
#[ignore = "Runtime limitation: calling non-function doesn't produce expected error - needs [RUNTIME-002] ticket"]
fn test_sqlite_020_call_non_function() {
assert_runtime_error("let x = 42; x()", &["not a function", "not callable"]);
}
#[test]
#[ignore = "Runtime limitation: field access on non-object doesn't produce expected error - needs [RUNTIME-003] ticket"]
fn test_sqlite_021_field_access_non_object() {
assert_runtime_error(
"let x = 42; x.field",
&["no field", "not an object", "has no member"],
);
}
#[test]
fn test_sqlite_022_index_non_indexable() {
assert_runtime_error("let x = 42; x[0]", &["cannot index", "not indexable"]);
}
#[test]
#[ignore = "negative array index error handling needs update"]
fn test_sqlite_030_negative_array_index() {
assert_runtime_error(
"let arr = [1, 2, 3]; arr[-1]",
&["out of bounds", "invalid index", "negative"],
);
}
#[test]
fn test_sqlite_031_array_out_of_bounds() {
assert_runtime_error("let arr = [1, 2, 3]; arr[10]", &["out of bounds", "index"]);
}
#[test]
fn test_sqlite_032_empty_array_access() {
assert_runtime_error("let arr = []; arr[0]", &["out of bounds", "index", "empty"]);
}
#[test]
fn test_sqlite_040_string_index_out_of_bounds() {
let result = std::panic::catch_unwind(|| execute_program(r#"let s = "hello"; s[100]"#));
assert!(
result.is_ok(),
"String index out of bounds should not panic"
);
}
#[test]
fn test_sqlite_041_string_slice_out_of_bounds() {
let result = std::panic::catch_unwind(|| execute_program(r#"let s = "hello"; s[0..100]"#));
assert!(
result.is_ok(),
"String slice out of bounds should not panic"
);
}
#[test]
fn test_sqlite_042_invalid_utf8_handling() {
let result = std::panic::catch_unwind(|| execute_program(r#"let s = "\xFF\xFF""#));
assert!(result.is_ok(), "Invalid UTF-8 should not panic");
}
#[test]
fn test_sqlite_043_string_method_on_non_string() {
assert_runtime_error(
"let x = 42; x.to_uppercase()",
&["unknown", "method", "to_uppercase"],
);
}
#[test]
fn test_sqlite_044_very_long_string() {
let result = std::panic::catch_unwind(|| execute_program(r#"let s = "x".repeat(100000000)"#));
assert!(result.is_ok(), "Long string allocation should not panic");
}
#[test]
fn test_sqlite_050_undefined_object_field() {
let result = execute_program("let obj = {x: 1, y: 2}; obj.z");
assert!(
result.is_ok() || result.is_err(),
"Undefined field access should not panic"
);
}
#[test]
fn test_sqlite_051_circular_object_reference() {
let result = std::panic::catch_unwind(|| {
execute_program(
r"
let obj = {x: 1};
obj.self = obj;
obj
",
)
});
assert!(result.is_ok(), "Circular references should not panic");
}
#[test]
fn test_sqlite_052_object_many_fields() {
let result = std::panic::catch_unwind(|| {
execute_program(
r"
let obj = {};
for i in 1..1000 {
obj[i.to_string()] = i;
}
obj
",
)
});
assert!(result.is_ok(), "Object with many fields should not panic");
}
#[test]
fn test_sqlite_053_hash_collision() {
let result = execute_program(
r"
let obj = {key1: 1, key2: 2, key3: 3};
obj.key1
",
);
assert!(result.is_ok(), "Hash operations should not panic");
if let Ok(value) = result {
assert_eq!(format!("{value:?}"), "Integer(1)");
}
}
#[test]
#[ignore = "arity error message format needs update"]
fn test_sqlite_060_function_too_many_args() {
assert_runtime_error(
"fun add(a, b) { a + b }; add(1, 2, 3)",
&["expects 2 arguments, got 3", "argument count", "arity"],
);
}
#[test]
#[ignore = "arity error message format needs update"]
fn test_sqlite_061_function_too_few_args() {
assert_runtime_error(
"fun add(a, b) { a + b }; add(1)",
&["expects 2 arguments, got 1", "argument count", "arity"],
);
}
#[test]
fn test_sqlite_062_undefined_function() {
let result = execute_program("undefined_function()");
assert!(
result.is_ok(),
"Undefined function call should not panic (message constructor behavior)"
);
}
#[test]
fn test_sqlite_063_deeply_nested_calls_within_limit() {
let result = execute_program(
r"
fun countdown(n) {
if n == 0 {
0
} else {
countdown(n - 1)
}
}
countdown(50)
",
);
assert!(result.is_ok(), "Deep calls within limit should succeed");
}
#[test]
fn test_sqlite_070_break_outside_loop() {
assert_runtime_error("break", &["break outside", "no loop"]);
}
#[test]
fn test_sqlite_071_continue_outside_loop() {
assert_runtime_error("continue", &["continue outside", "no loop"]);
}
#[test]
fn test_sqlite_072_return_outside_function() {
let result = execute_program("return 42");
assert!(
result.is_ok() || result.is_err(),
"Return outside function should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: labeled break validation not implemented - needs [RUNTIME-005] ticket"]
fn test_sqlite_073_break_wrong_label() {
assert_runtime_error(
r"
'outer: loop {
loop {
break 'inner;
}
}
",
&["label", "not found", "undefined"],
);
}
#[test]
#[ignore = "Test would run indefinitely - infinite loop detection not yet implemented - needs [RUNTIME-004] ticket"]
fn test_sqlite_074_infinite_loop_detection() {
let result = std::panic::catch_unwind(|| execute_program("loop { let x = 1; }"));
assert!(result.is_ok(), "Infinite loop should not panic runtime");
}
#[test]
fn test_sqlite_080_variable_shadowing() {
let result = execute_program(
r"
let x = 1;
{
let x = 2;
x
}
",
);
assert!(result.is_ok(), "Variable shadowing should work");
}
#[test]
#[ignore = "Runtime limitation: block scope not enforced - needs [RUNTIME-006] ticket"]
fn test_sqlite_081_variable_out_of_scope() {
assert_runtime_error(
r"
{
let x = 42;
}
x
",
&["undefined", "not found", "not defined"],
);
}
#[test]
#[ignore = "Runtime limitation: immutability not enforced - needs [RUNTIME-007] ticket"]
fn test_sqlite_082_immutable_assignment() {
assert_runtime_error(
r"
let x = 1;
x = 2
",
&["immutable", "cannot assign", "not mutable"],
);
}
#[test]
fn test_sqlite_083_undefined_variable() {
assert_runtime_error(
"undefined_var + 1",
&["undefined", "not found", "not defined"],
);
}
#[test]
fn test_sqlite_084_double_declaration() {
let result = execute_program(
r"
let x = 1;
let x = 2;
x
",
);
assert!(
result.is_ok() || result.is_err(),
"Double declaration should not panic"
);
}
#[test]
fn test_sqlite_090_for_loop_invalid_range() {
let result = execute_program("for i in 10..1 { i }");
assert!(
result.is_ok() || result.is_err(),
"Invalid range should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: type checking for iterables not enforced - needs [RUNTIME-008] ticket"]
fn test_sqlite_091_for_loop_non_iterable() {
assert_runtime_error(
"for i in 42 { i }",
&["not iterable", "cannot iterate", "not a collection"],
);
}
#[test]
#[ignore = "Runtime limitation: type checking for while conditions not enforced - needs [RUNTIME-009] ticket"]
fn test_sqlite_092_while_non_boolean() {
assert_runtime_error(
"while 42 { break }",
&["not a boolean", "type error", "expected bool"],
);
}
#[test]
fn test_sqlite_093_nested_loops_same_var() {
let result = execute_program(
r"
for i in 1..3 {
for i in 1..3 {
i
}
}
",
);
assert!(
result.is_ok(),
"Nested loops with same variable should work"
);
}
#[test]
fn test_sqlite_100_and_short_circuit() {
let result = execute_program(
r#"
let x = false && panic("should not execute");
x
"#,
);
assert!(result.is_ok(), "AND should short-circuit on false");
}
#[test]
fn test_sqlite_101_or_short_circuit() {
let result = execute_program(
r#"
let x = true || panic("should not execute");
x
"#,
);
assert!(result.is_ok(), "OR should short-circuit on true");
}
#[test]
#[ignore = "Runtime limitation: type checking for boolean operators not enforced - needs [RUNTIME-010] ticket"]
fn test_sqlite_102_not_non_boolean() {
assert_runtime_error("!42", &["not a boolean", "type error", "expected bool"]);
}
#[test]
#[ignore = "Runtime limitation: type checking for boolean operators not enforced - needs [RUNTIME-011] ticket"]
fn test_sqlite_103_and_non_boolean() {
assert_runtime_error(
"42 && true",
&["not a boolean", "type error", "expected bool"],
);
}
#[test]
#[ignore = "Runtime limitation: type checking for boolean operators not enforced - needs [RUNTIME-012] ticket"]
fn test_sqlite_104_or_non_boolean() {
assert_runtime_error(
"\"string\" || false",
&["not a boolean", "type error", "expected bool"],
);
}
#[test]
#[ignore = "Runtime limitation: type checking for comparisons not enforced - needs [RUNTIME-013] ticket"]
fn test_sqlite_110_compare_incompatible_types() {
assert_runtime_error(
"42 == \"string\"",
&["type mismatch", "cannot compare", "incompatible types"],
);
}
#[test]
#[ignore = "Runtime limitation: type checking for ordering not enforced - needs [RUNTIME-014] ticket"]
fn test_sqlite_111_order_incomparable() {
assert_runtime_error(
"[1, 2] < [3, 4]",
&["cannot compare", "not comparable", "no ordering"],
);
}
#[test]
fn test_sqlite_112_nan_equality() {
let result = execute_program(
r"
let nan = 0.0 / 0.0;
nan == nan
",
);
assert!(result.is_ok(), "NaN equality check should work");
}
#[test]
fn test_sqlite_113_infinity_comparisons() {
let result = execute_program(
r"
let inf = 1.0 / 0.0;
inf > 1000.0
",
);
assert!(result.is_ok(), "Infinity comparisons should work");
}
#[test]
fn test_sqlite_114_none_comparison() {
let result = execute_program("None == None");
assert!(result.is_ok(), "None equality check should work");
}
#[test]
#[ignore = "Runtime limitation: exhaustiveness checking not enforced - needs [RUNTIME-015] ticket"]
fn test_sqlite_120_match_non_exhaustive() {
assert_runtime_error(
r#"
match 42 {
1 => "one",
2 => "two"
}
"#,
&["no pattern matched", "non-exhaustive", "match failed"],
);
}
#[test]
#[ignore = "Runtime limitation: unreachable pattern detection not implemented - needs [RUNTIME-016] ticket"]
fn test_sqlite_121_match_unreachable_pattern() {
let result = execute_program(
r#"
match 42 {
_ => "any",
1 => "one"
}
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Unreachable pattern should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: pattern match validation not enforced - needs [RUNTIME-017] ticket"]
fn test_sqlite_122_destructure_wrong_structure() {
assert_runtime_error(
r"
let (x, y, z) = (1, 2);
",
&["pattern mismatch", "wrong structure", "tuple size"],
);
}
#[test]
#[ignore = "Runtime limitation: if-let expressions not implemented - needs [RUNTIME-022] ticket"]
fn test_sqlite_123_if_let_no_match() {
let result = execute_program(
r"
if let Some(x) = None {
x
} else {
0
}
",
);
assert!(
result.is_ok(),
"if-let with no match should execute else branch"
);
}
#[test]
fn test_sqlite_124_match_on_integer() {
let result = execute_program(
r#"
match 42 {
42 => "found",
_ => "other"
}
"#,
);
assert!(result.is_ok(), "Match on integer should work");
}
#[test]
#[ignore = "Runtime limitation: closure capture validation not enforced - needs [RUNTIME-023] ticket"]
fn test_sqlite_130_closure_capture_undefined() {
assert_runtime_error(
"|x| x + undefined_var",
&["undefined", "not found", "not defined"],
);
}
#[test]
#[ignore = "Runtime limitation: arity checking for closures not enforced - needs [RUNTIME-018] ticket"]
fn test_sqlite_131_closure_wrong_arity() {
assert_runtime_error(
r"
let f = |x, y| x + y;
f(1)
",
&["wrong number of arguments", "expected 2", "arity"],
);
}
#[test]
#[ignore = "Runtime limitation: return scope validation not enforced - needs [RUNTIME-019] ticket"]
fn test_sqlite_132_closure_return_outer() {
assert_runtime_error(
r"
fun outer() {
let f = || return 42;
f()
}
outer()
",
&["return outside function", "invalid return", "scope error"],
);
}
#[test]
fn test_sqlite_133_nested_closure_capture() {
let result = execute_program(
r"
let x = 1;
let f = |y| {
let g = |z| x + y + z;
g(3)
};
f(2)
",
);
assert!(result.is_ok(), "Nested closure captures should work");
}
#[test]
#[ignore = "Runtime limitation: mutable capture validation not enforced - needs [RUNTIME-020] ticket"]
fn test_sqlite_134_closure_modify_capture() {
let result = execute_program(
r"
let mut x = 1;
let f = || { x = 2; };
f();
x
",
);
assert!(
result.is_ok() || result.is_err(),
"Closure modifying capture should not panic"
);
}
#[test]
fn test_sqlite_140_max_integer() {
let result = execute_program("9223372036854775807"); assert!(result.is_ok(), "Maximum integer should parse");
}
#[test]
#[ignore = "Runtime limitation: i64::MIN literal not supported - needs [RUNTIME-024] ticket"]
fn test_sqlite_141_min_integer() {
let result = execute_program("-9223372036854775808"); assert!(result.is_ok(), "Minimum integer should parse");
}
#[test]
#[ignore = "Runtime limitation: integer overflow detection not enforced - needs [RUNTIME-021] ticket"]
fn test_sqlite_142_integer_overflow_edge() {
assert_runtime_error("9223372036854775807 + 1", &["overflow", "out of range"]);
}
#[test]
fn test_sqlite_143_long_variable_name() {
let long_name = "a".repeat(1000);
let program = format!("let {long_name} = 42; {long_name}");
let result = execute_program(&program);
assert!(result.is_ok(), "Long variable names should work");
}
#[test]
fn test_sqlite_144_deeply_nested_data() {
let result = execute_program(
r"
let nested = [[[[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]]]]
",
);
assert!(result.is_ok(), "Deeply nested data structures should work");
}
#[test]
fn test_sqlite_145_empty_program() {
let result = execute_program("");
assert!(
result.is_ok() || result.is_err(),
"Unexpected end of input should not panic"
);
}
#[test]
fn test_sqlite_146_whitespace_only() {
let result = execute_program(" \n\t\r\n ");
assert!(
result.is_ok() || result.is_err(),
"Whitespace-only program should not panic"
);
}
#[test]
fn test_sqlite_147_comments_only() {
let result = execute_program(
r"
// This is a comment
/* This is a block comment */
",
);
assert!(
result.is_ok() || result.is_err(),
"Comments-only program should not panic"
);
}
#[test]
fn test_sqlite_148_empty_string() {
let result = execute_program(r#""""#);
assert!(result.is_ok(), "Empty string should work");
}
#[test]
fn test_sqlite_149_empty_array() {
let result = execute_program("[]");
assert!(result.is_ok(), "Empty array should work");
}
#[test]
#[ignore = "Runtime limitation: async functions not implemented - needs [RUNTIME-025] ticket"]
fn test_sqlite_150_async_function() {
let result = execute_program(
r"
async fun fetch_data() {
42
}
",
);
assert!(result.is_ok(), "Async function should be defined");
}
#[test]
#[ignore = "Runtime limitation: await expressions not implemented - needs [RUNTIME-026] ticket"]
fn test_sqlite_151_await_expression() {
let result = execute_program(
r"
async fun get_value() { 42 }
await get_value()
",
);
assert!(result.is_ok(), "Await expression should work");
}
#[test]
#[ignore = "Runtime limitation: Pin basic not implemented - needs [RUNTIME-794] ticket"]
fn test_sqlite_941_pin_basic() {
let result = execute_program(
r"
use std::pin::Pin;
let x = Box::pin(42);
",
);
assert!(result.is_ok(), "Pin basic should work");
}
#[test]
#[ignore = "Runtime limitation: Pin deref not implemented - needs [RUNTIME-795] ticket"]
fn test_sqlite_942_pin_deref() {
let result = execute_program(
r"
use std::pin::Pin;
let x = Box::pin(42);
let y = *x;
",
);
assert!(result.is_ok(), "Pin deref should work");
}
#[test]
#[ignore = "Runtime limitation: Unpin trait not implemented - needs [RUNTIME-796] ticket"]
fn test_sqlite_943_unpin_trait() {
let result = execute_program(
r"
fun foo<T: Unpin>(x: T) {}
foo(42);
",
);
assert!(result.is_ok(), "Unpin trait should work");
}
#[test]
#[ignore = "Runtime limitation: Pin as_ref not implemented - needs [RUNTIME-797] ticket"]
fn test_sqlite_944_pin_as_ref() {
let result = execute_program(
r"
use std::pin::Pin;
let x = Box::pin(42);
let r = Pin::as_ref(&x);
",
);
assert!(result.is_ok(), "Pin as_ref should work");
}
#[test]
#[ignore = "Runtime limitation: Pin new_unchecked not implemented - needs [RUNTIME-798] ticket"]
fn test_sqlite_945_pin_new_unchecked() {
let result = execute_program(
r"
use std::pin::Pin;
let x = unsafe { Pin::new_unchecked(&mut 42) };
",
);
assert!(result.is_ok(), "Pin new_unchecked should work");
}
#[test]
#[ignore = "Runtime limitation: Future trait not implemented - needs [RUNTIME-799] ticket"]
fn test_sqlite_946_future_trait() {
let result = execute_program(
r"
use std::future::Future;
use std::pin::Pin;
use std::task::{Context, Poll};
struct MyFuture;
impl Future for MyFuture {
type Output = i32;
fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<i32> {
Poll::Ready(42)
}
}
",
);
assert!(result.is_ok(), "Future trait should work");
}
#[test]
#[ignore = "Runtime limitation: Poll enum not implemented - needs [RUNTIME-800] ticket"]
fn test_sqlite_947_poll_enum() {
let result = execute_program(
r"
use std::task::Poll;
let p = Poll::Ready(42);
",
);
assert!(result.is_ok(), "Poll enum should work");
}
#[test]
#[ignore = "Runtime limitation: Poll is_ready not implemented - needs [RUNTIME-801] ticket"]
fn test_sqlite_948_poll_is_ready() {
let result = execute_program(
r"
use std::task::Poll;
let p = Poll::Ready(42);
let ready = p.is_ready();
",
);
assert!(result.is_ok(), "Poll is_ready should work");
}
#[test]
#[ignore = "Runtime limitation: Poll is_pending not implemented - needs [RUNTIME-802] ticket"]
fn test_sqlite_949_poll_is_pending() {
let result = execute_program(
r"
use std::task::Poll;
let p: Poll<i32> = Poll::Pending;
let pending = p.is_pending();
",
);
assert!(result.is_ok(), "Poll is_pending should work");
}
#[test]
#[ignore = "Runtime limitation: Poll map not implemented - needs [RUNTIME-803] ticket"]
fn test_sqlite_950_poll_map() {
let result = execute_program(
r"
use std::task::Poll;
let p = Poll::Ready(42);
let q = p.map(|x| x + 1);
",
);
assert!(result.is_ok(), "Poll map should work");
}
#[test]
#[ignore = "Runtime limitation: Waker basic not implemented - needs [RUNTIME-804] ticket"]
fn test_sqlite_951_waker_basic() {
let result = execute_program(
r"
use std::task::Waker;
let waker: Waker;
",
);
assert!(result.is_ok(), "Waker basic should work");
}
#[test]
#[ignore = "Runtime limitation: Waker wake not implemented - needs [RUNTIME-805] ticket"]
fn test_sqlite_952_waker_wake() {
let result = execute_program(
r"
use std::task::Waker;
let waker: Waker;
waker.wake();
",
);
assert!(result.is_ok(), "Waker wake should work");
}
#[test]
#[ignore = "Runtime limitation: Context from_waker not implemented - needs [RUNTIME-806] ticket"]
fn test_sqlite_953_context_from_waker() {
let result = execute_program(
r"
use std::task::{Context, Waker};
let waker: Waker;
let cx = Context::from_waker(&waker);
",
);
assert!(result.is_ok(), "Context from_waker should work");
}
#[test]
#[ignore = "Runtime limitation: Context waker not implemented - needs [RUNTIME-807] ticket"]
fn test_sqlite_954_context_waker() {
let result = execute_program(
r"
use std::task::Context;
let cx: Context;
let w = cx.waker();
",
);
assert!(result.is_ok(), "Context waker should work");
}
#[test]
#[ignore = "Runtime limitation: Waker clone not implemented - needs [RUNTIME-808] ticket"]
fn test_sqlite_955_waker_clone() {
let result = execute_program(
r"
use std::task::Waker;
let waker: Waker;
let waker2 = waker.clone();
",
);
assert!(result.is_ok(), "Waker clone should work");
}
#[test]
#[ignore = "Runtime limitation: Stream trait not implemented - needs [RUNTIME-809] ticket"]
fn test_sqlite_956_stream_trait() {
let result = execute_program(
r"
use std::pin::Pin;
use std::task::{Context, Poll};
trait Stream {
type Item;
fn poll_next(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Option<Self::Item>>;
}
",
);
assert!(result.is_ok(), "Stream trait should work");
}
#[test]
#[ignore = "Runtime limitation: Stream poll_next not implemented - needs [RUNTIME-810] ticket"]
fn test_sqlite_957_stream_poll_next() {
let result = execute_program(
r"
use std::pin::Pin;
use std::task::{Context, Poll};
let s: Stream<Item = i32>;
let item = s.poll_next(cx);
",
);
assert!(result.is_ok(), "Stream poll_next should work");
}
#[test]
#[ignore = "Runtime limitation: Stream size_hint not implemented - needs [RUNTIME-811] ticket"]
fn test_sqlite_958_stream_size_hint() {
let result = execute_program(
r"
let s: Stream<Item = i32>;
let (lower, upper) = s.size_hint();
",
);
assert!(result.is_ok(), "Stream size_hint should work");
}
#[test]
#[ignore = "Runtime limitation: Stream next not implemented - needs [RUNTIME-812] ticket"]
fn test_sqlite_959_stream_next() {
let result = execute_program(
r"
let s: Stream<Item = i32>;
let item = s.next().await;
",
);
assert!(result.is_ok(), "Stream next should work");
}
#[test]
#[ignore = "Runtime limitation: Stream map not implemented - needs [RUNTIME-813] ticket"]
fn test_sqlite_960_stream_map() {
let result = execute_program(
r"
let s: Stream<Item = i32>;
let t = s.map(|x| x + 1);
",
);
assert!(result.is_ok(), "Stream map should work");
}
#[test]
#[ignore = "Runtime limitation: AsyncIterator trait not implemented - needs [RUNTIME-814] ticket"]
fn test_sqlite_961_async_iterator_trait() {
let result = execute_program(
r"
trait AsyncIterator {
type Item;
async fn next(&mut self) -> Option<Self::Item>;
}
",
);
assert!(result.is_ok(), "AsyncIterator trait should work");
}
#[test]
#[ignore = "Runtime limitation: AsyncIterator for_each not implemented - needs [RUNTIME-815] ticket"]
fn test_sqlite_962_async_iterator_for_each() {
let result = execute_program(
r#"
let iter: AsyncIterator<Item = i32>;
iter.for_each(|x| println!("{}", x)).await;
"#,
);
assert!(result.is_ok(), "AsyncIterator for_each should work");
}
#[test]
#[ignore = "Runtime limitation: AsyncIterator collect not implemented - needs [RUNTIME-816] ticket"]
fn test_sqlite_963_async_iterator_collect() {
let result = execute_program(
r"
let iter: AsyncIterator<Item = i32>;
let vec = iter.collect::<Vec<_>>().await;
",
);
assert!(result.is_ok(), "AsyncIterator collect should work");
}
#[test]
#[ignore = "Runtime limitation: AsyncIterator filter not implemented - needs [RUNTIME-817] ticket"]
fn test_sqlite_964_async_iterator_filter() {
let result = execute_program(
r"
let iter: AsyncIterator<Item = i32>;
let filtered = iter.filter(|x| *x > 0);
",
);
assert!(result.is_ok(), "AsyncIterator filter should work");
}
#[test]
#[ignore = "Runtime limitation: AsyncIterator take not implemented - needs [RUNTIME-818] ticket"]
fn test_sqlite_965_async_iterator_take() {
let result = execute_program(
r"
let iter: AsyncIterator<Item = i32>;
let taken = iter.take(5);
",
);
assert!(result.is_ok(), "AsyncIterator take should work");
}
#[test]
#[ignore = "Runtime limitation: select macro not implemented - needs [RUNTIME-819] ticket"]
fn test_sqlite_966_select_macro() {
let result = execute_program(
r#"
use tokio::select;
select! {
x = async { 42 } => println!("{}", x),
y = async { 43 } => println!("{}", y),
}
"#,
);
assert!(result.is_ok(), "select macro should work");
}
#[test]
#[ignore = "Runtime limitation: join macro not implemented - needs [RUNTIME-820] ticket"]
fn test_sqlite_967_join_macro() {
let result = execute_program(
r"
use tokio::join;
let (a, b) = join!(async { 42 }, async { 43 });
",
);
assert!(result.is_ok(), "join macro should work");
}
#[test]
#[ignore = "Runtime limitation: try_join not implemented - needs [RUNTIME-821] ticket"]
fn test_sqlite_968_try_join() {
let result = execute_program(
r"
use tokio::try_join;
let (a, b) = try_join!(async { Ok(42) }, async { Ok(43) })?;
",
);
assert!(result.is_ok(), "try_join should work");
}
#[test]
#[ignore = "Runtime limitation: from simple not implemented - needs [RUNTIME-1094] ticket"]
fn test_sqlite_1241_from_simple() {
let result = execute_program(
r#"
let s: String = String::from("hello");
"#,
);
assert!(result.is_ok(), "from simple should work");
}
#[test]
#[ignore = "Runtime limitation: into conversion not implemented - needs [RUNTIME-1095] ticket"]
fn test_sqlite_1242_into_conversion() {
let result = execute_program(
r#"
let s: String = "hello".into();
"#,
);
assert!(result.is_ok(), "into conversion should work");
}
#[test]
#[ignore = "Runtime limitation: from custom not implemented - needs [RUNTIME-1096] ticket"]
fn test_sqlite_1243_from_custom() {
let result = execute_program(
r"
struct Foo(i32);
impl From<i32> for Foo {
fn from(x: i32) -> Self { Foo(x) }
}
let f = Foo::from(42);
",
);
assert!(result.is_ok(), "from custom should work");
}
#[test]
#[ignore = "Runtime limitation: into custom not implemented - needs [RUNTIME-1097] ticket"]
fn test_sqlite_1244_into_custom() {
let result = execute_program(
r"
struct Foo(i32);
impl From<i32> for Foo {
fn from(x: i32) -> Self { Foo(x) }
}
let f: Foo = 42.into();
",
);
assert!(result.is_ok(), "into custom should work");
}
#[test]
#[ignore = "Runtime limitation: from error not implemented - needs [RUNTIME-1098] ticket"]
fn test_sqlite_1245_from_error() {
let result = execute_program(
r#"
use std::error::Error;
struct MyError;
impl std::fmt::Display for MyError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { write!(f, "error") }
}
impl std::fmt::Debug for MyError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { write!(f, "error") }
}
impl Error for MyError {}
"#,
);
assert!(result.is_ok(), "from error should work");
}
#[test]
#[ignore = "Runtime limitation: tryfrom simple not implemented - needs [RUNTIME-1099] ticket"]
fn test_sqlite_1246_tryfrom_simple() {
let result = execute_program(
r"
use std::convert::TryFrom;
let x = i32::try_from(42u32).unwrap();
",
);
assert!(result.is_ok(), "tryfrom simple should work");
}
#[test]
#[ignore = "Runtime limitation: tryinto conversion not implemented - needs [RUNTIME-1100] ticket"]
fn test_sqlite_1247_tryinto_conversion() {
let result = execute_program(
r"
use std::convert::TryInto;
let x: i32 = 42u32.try_into().unwrap();
",
);
assert!(result.is_ok(), "tryinto conversion should work");
}
#[test]
#[ignore = "Runtime limitation: tryfrom custom not implemented - needs [RUNTIME-1101] ticket"]
fn test_sqlite_1248_tryfrom_custom() {
let result = execute_program(
r#"
use std::convert::TryFrom;
struct Foo(i32);
impl TryFrom<i32> for Foo {
type Error = String;
fn try_from(x: i32) -> Result<Self, Self::Error> {
if x >= 0 { Ok(Foo(x)) } else { Err("negative".to_string()) }
}
}
let f = Foo::try_from(42).unwrap();
"#,
);
assert!(result.is_ok(), "tryfrom custom should work");
}
#[test]
#[ignore = "Runtime limitation: tryinto custom not implemented - needs [RUNTIME-1102] ticket"]
fn test_sqlite_1249_tryinto_custom() {
let result = execute_program(
r#"
use std::convert::TryFrom;
struct Foo(i32);
impl TryFrom<i32> for Foo {
type Error = String;
fn try_from(x: i32) -> Result<Self, Self::Error> {
if x >= 0 { Ok(Foo(x)) } else { Err("negative".to_string()) }
}
}
let f: Result<Foo, _> = 42.try_into();
"#,
);
assert!(result.is_ok(), "tryinto custom should work");
}
#[test]
#[ignore = "Runtime limitation: tryfrom error not implemented - needs [RUNTIME-1103] ticket"]
fn test_sqlite_1250_tryfrom_error() {
let result = execute_program(
r#"
use std::convert::TryFrom;
struct Foo(i32);
impl TryFrom<i32> for Foo {
type Error = String;
fn try_from(x: i32) -> Result<Self, Self::Error> {
if x >= 0 { Ok(Foo(x)) } else { Err("negative".to_string()) }
}
}
let f = Foo::try_from(-1);
assert!(f.is_err());
"#,
);
assert!(result.is_ok(), "tryfrom error should work");
}
#[test]
#[ignore = "Runtime limitation: display simple not implemented - needs [RUNTIME-1104] ticket"]
fn test_sqlite_1251_display_simple() {
let result = execute_program(
r#"
use std::fmt;
struct Foo(i32);
impl fmt::Display for Foo {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Foo({})", self.0)
}
}
let s = format!("{}", Foo(42));
"#,
);
assert!(result.is_ok(), "display simple should work");
}
#[test]
#[ignore = "Runtime limitation: debug simple not implemented - needs [RUNTIME-1105] ticket"]
fn test_sqlite_1252_debug_simple() {
let result = execute_program(
r#"
use std::fmt;
struct Foo(i32);
impl fmt::Debug for Foo {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Foo({:?})", self.0)
}
}
let s = format!("{:?}", Foo(42));
"#,
);
assert!(result.is_ok(), "debug simple should work");
}
#[test]
#[ignore = "Runtime limitation: debug derive not implemented - needs [RUNTIME-1106] ticket"]
fn test_sqlite_1253_debug_derive() {
let result = execute_program(
r#"
#[derive(Debug)]
struct Foo { x: i32 }
let s = format!("{:?}", Foo { x: 42 });
"#,
);
assert!(result.is_ok(), "debug derive should work");
}
#[test]
#[ignore = "Runtime limitation: display format not implemented - needs [RUNTIME-1107] ticket"]
fn test_sqlite_1254_display_format() {
let result = execute_program(
r#"
use std::fmt;
struct Point { x: i32, y: i32 }
impl fmt::Display for Point {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "({}, {})", self.x, self.y)
}
}
let s = format!("{}", Point { x: 1, y: 2 });
"#,
);
assert!(result.is_ok(), "display format should work");
}
#[test]
#[ignore = "Runtime limitation: debug format not implemented - needs [RUNTIME-1108] ticket"]
fn test_sqlite_1255_debug_format() {
let result = execute_program(
r#"
use std::fmt;
struct Point { x: i32, y: i32 }
impl fmt::Debug for Point {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("Point")
.field("x", &self.x)
.field("y", &self.y)
.finish()
}
}
let s = format!("{:#?}", Point { x: 1, y: 2 });
"#,
);
assert!(result.is_ok(), "debug format should work");
}
#[test]
#[ignore = "Runtime limitation: iterator custom not implemented - needs [RUNTIME-1109] ticket"]
fn test_sqlite_1256_iterator_custom() {
let result = execute_program(
r"
struct Counter { count: i32 }
impl Iterator for Counter {
type Item = i32;
fn next(&mut self) -> Option<Self::Item> {
self.count += 1;
if self.count < 5 { Some(self.count) } else { None }
}
}
let mut c = Counter { count: 0 };
let sum: i32 = c.sum();
",
);
assert!(result.is_ok(), "iterator custom should work");
}
#[test]
#[ignore = "Runtime limitation: iterator map not implemented - needs [RUNTIME-1110] ticket"]
fn test_sqlite_1257_iterator_map() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let doubled: Vec<_> = v.iter().map(|x| x * 2).collect();
",
);
assert!(result.is_ok(), "iterator map should work");
}
#[test]
#[ignore = "Runtime limitation: iterator filter not implemented - needs [RUNTIME-1111] ticket"]
fn test_sqlite_1258_iterator_filter() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4];
let evens: Vec<_> = v.iter().filter(|x| *x % 2 == 0).collect();
",
);
assert!(result.is_ok(), "iterator filter should work");
}
#[test]
#[ignore = "Runtime limitation: iterator fold not implemented - needs [RUNTIME-1112] ticket"]
fn test_sqlite_1259_iterator_fold() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4];
let sum = v.iter().fold(0, |acc, x| acc + x);
",
);
assert!(result.is_ok(), "iterator fold should work");
}
#[test]
#[ignore = "Runtime limitation: iterator chain not implemented - needs [RUNTIME-1113] ticket"]
fn test_sqlite_1260_iterator_chain() {
let result = execute_program(
r"
let v1 = vec![1, 2];
let v2 = vec![3, 4];
let chained: Vec<_> = v1.iter().chain(v2.iter()).collect();
",
);
assert!(result.is_ok(), "iterator chain should work");
}
#[test]
#[ignore = "Runtime limitation: drop simple not implemented - needs [RUNTIME-1114] ticket"]
fn test_sqlite_1261_drop_simple() {
let result = execute_program(
r#"
struct Foo;
impl Drop for Foo {
fn drop(&mut self) {
println!("dropping");
}
}
let f = Foo;
"#,
);
assert!(result.is_ok(), "drop simple should work");
}
#[test]
#[ignore = "Runtime limitation: drop order not implemented - needs [RUNTIME-1115] ticket"]
fn test_sqlite_1262_drop_order() {
let result = execute_program(
r#"
struct Foo(i32);
impl Drop for Foo {
fn drop(&mut self) {
println!("dropping {}", self.0);
}
}
let _a = Foo(1);
let _b = Foo(2);
"#,
);
assert!(result.is_ok(), "drop order should work");
}
#[test]
#[ignore = "Runtime limitation: drop scope not implemented - needs [RUNTIME-1116] ticket"]
fn test_sqlite_1263_drop_scope() {
let result = execute_program(
r#"
struct Foo;
impl Drop for Foo {
fn drop(&mut self) {
println!("dropping");
}
}
{
let _f = Foo;
}
println!("after scope");
"#,
);
assert!(result.is_ok(), "drop scope should work");
}
#[test]
#[ignore = "Runtime limitation: drop manual not implemented - needs [RUNTIME-1117] ticket"]
fn test_sqlite_1264_drop_manual() {
let result = execute_program(
r#"
struct Foo;
impl Drop for Foo {
fn drop(&mut self) {
println!("dropping");
}
}
let f = Foo;
drop(f);
"#,
);
assert!(result.is_ok(), "drop manual should work");
}
#[test]
#[ignore = "Runtime limitation: drop trait bound not implemented - needs [RUNTIME-1118] ticket"]
fn test_sqlite_1265_drop_trait_bound() {
let result = execute_program(
r"
fn needs_drop<T: Drop>(_x: T) {}
struct Foo;
impl Drop for Foo {
fn drop(&mut self) {}
}
needs_drop(Foo);
",
);
assert!(result.is_ok(), "drop trait bound should work");
}
#[test]
#[ignore = "Runtime limitation: deref simple not implemented - needs [RUNTIME-1119] ticket"]
fn test_sqlite_1266_deref_simple() {
let result = execute_program(
r"
use std::ops::Deref;
struct MyBox<T>(T);
impl<T> Deref for MyBox<T> {
type Target = T;
fn deref(&self) -> &T { &self.0 }
}
let b = MyBox(42);
let x = *b;
",
);
assert!(result.is_ok(), "deref simple should work");
}
#[test]
#[ignore = "Runtime limitation: deref coercion not implemented - needs [RUNTIME-1120] ticket"]
fn test_sqlite_1267_deref_coercion() {
let result = execute_program(
r"
use std::ops::Deref;
struct MyBox<T>(T);
impl<T> Deref for MyBox<T> {
type Target = T;
fn deref(&self) -> &T { &self.0 }
}
fn takes_ref(x: &i32) {}
let b = MyBox(42);
takes_ref(&b);
",
);
assert!(result.is_ok(), "deref coercion should work");
}
#[test]
#[ignore = "Runtime limitation: derefmut simple not implemented - needs [RUNTIME-1121] ticket"]
fn test_sqlite_1268_derefmut_simple() {
let result = execute_program(
r"
use std::ops::{Deref, DerefMut};
struct MyBox<T>(T);
impl<T> Deref for MyBox<T> {
type Target = T;
fn deref(&self) -> &T { &self.0 }
}
impl<T> DerefMut for MyBox<T> {
fn deref_mut(&mut self) -> &mut T { &mut self.0 }
}
let mut b = MyBox(42);
*b = 43;
",
);
assert!(result.is_ok(), "derefmut simple should work");
}
#[test]
#[ignore = "Runtime limitation: deref method not implemented - needs [RUNTIME-1122] ticket"]
fn test_sqlite_1269_deref_method() {
let result = execute_program(
r#"
use std::ops::Deref;
struct MyBox<T>(T);
impl<T> Deref for MyBox<T> {
type Target = T;
fn deref(&self) -> &T { &self.0 }
}
let b = MyBox(String::from("hello"));
let len = b.len();
"#,
);
assert!(result.is_ok(), "deref method should work");
}
#[test]
#[ignore = "Runtime limitation: deref chain not implemented - needs [RUNTIME-1123] ticket"]
fn test_sqlite_1270_deref_chain() {
let result = execute_program(
r"
use std::ops::Deref;
struct Wrapper1<T>(T);
impl<T> Deref for Wrapper1<T> {
type Target = T;
fn deref(&self) -> &T { &self.0 }
}
struct Wrapper2<T>(T);
impl<T> Deref for Wrapper2<T> {
type Target = T;
fn deref(&self) -> &T { &self.0 }
}
let w = Wrapper1(Wrapper2(42));
let x = **w;
",
);
assert!(result.is_ok(), "deref chain should work");
}
#[test]
#[ignore = "Runtime limitation: index simple not implemented - needs [RUNTIME-1124] ticket"]
fn test_sqlite_1271_index_simple() {
let result = execute_program(
r"
use std::ops::Index;
struct MyVec<T>(Vec<T>);
impl<T> Index<usize> for MyVec<T> {
type Output = T;
fn index(&self, idx: usize) -> &T { &self.0[idx] }
}
let v = MyVec(vec![1, 2, 3]);
let x = v[0];
",
);
assert!(result.is_ok(), "index simple should work");
}
#[test]
#[ignore = "Runtime limitation: indexmut simple not implemented - needs [RUNTIME-1125] ticket"]
fn test_sqlite_1272_indexmut_simple() {
let result = execute_program(
r"
use std::ops::{Index, IndexMut};
struct MyVec<T>(Vec<T>);
impl<T> Index<usize> for MyVec<T> {
type Output = T;
fn index(&self, idx: usize) -> &T { &self.0[idx] }
}
impl<T> IndexMut<usize> for MyVec<T> {
fn index_mut(&mut self, idx: usize) -> &mut T { &mut self.0[idx] }
}
let mut v = MyVec(vec![1, 2, 3]);
v[0] = 42;
",
);
assert!(result.is_ok(), "indexmut simple should work");
}
#[test]
#[ignore = "Runtime limitation: index range not implemented - needs [RUNTIME-1126] ticket"]
fn test_sqlite_1273_index_range() {
let result = execute_program(
r"
use std::ops::{Index, Range};
struct MyVec<T>(Vec<T>);
impl<T: Clone> Index<Range<usize>> for MyVec<T> {
type Output = [T];
fn index(&self, range: Range<usize>) -> &[T] { &self.0[range] }
}
let v = MyVec(vec![1, 2, 3]);
let s = &v[0..2];
",
);
assert!(result.is_ok(), "index range should work");
}
#[test]
#[ignore = "Runtime limitation: index custom not implemented - needs [RUNTIME-1127] ticket"]
fn test_sqlite_1274_index_custom() {
let result = execute_program(
r"
use std::ops::Index;
struct Grid { data: Vec<i32>, width: usize }
impl Index<(usize, usize)> for Grid {
type Output = i32;
fn index(&self, (x, y): (usize, usize)) -> &i32 {
&self.data[y * self.width + x]
}
}
let g = Grid { data: vec![1, 2, 3, 4], width: 2 };
let x = g[(0, 1)];
",
);
assert!(result.is_ok(), "index custom should work");
}
#[test]
#[ignore = "Runtime limitation: index bounds not implemented - needs [RUNTIME-1128] ticket"]
fn test_sqlite_1275_index_bounds() {
let result = execute_program(
r#"
use std::ops::Index;
struct MyVec<T>(Vec<T>);
impl<T> Index<usize> for MyVec<T> {
type Output = T;
fn index(&self, idx: usize) -> &T {
if idx < self.0.len() {
&self.0[idx]
} else {
panic!("index out of bounds");
}
}
}
let v = MyVec(vec![1, 2, 3]);
let x = v[5];
"#,
);
assert!(result.is_err(), "index bounds should panic");
}
#[test]
#[ignore = "Runtime limitation: add custom not implemented - needs [RUNTIME-1129] ticket"]
fn test_sqlite_1276_add_custom() {
let result = execute_program(
r"
use std::ops::Add;
struct Point { x: i32, y: i32 }
impl Add for Point {
type Output = Point;
fn add(self, other: Point) -> Point {
Point { x: self.x + other.x, y: self.y + other.y }
}
}
let p = Point { x: 1, y: 2 } + Point { x: 3, y: 4 };
",
);
assert!(result.is_ok(), "add custom should work");
}
#[test]
#[ignore = "Runtime limitation: sub custom not implemented - needs [RUNTIME-1130] ticket"]
fn test_sqlite_1277_sub_custom() {
let result = execute_program(
r"
use std::ops::Sub;
struct Point { x: i32, y: i32 }
impl Sub for Point {
type Output = Point;
fn sub(self, other: Point) -> Point {
Point { x: self.x - other.x, y: self.y - other.y }
}
}
let p = Point { x: 3, y: 4 } - Point { x: 1, y: 2 };
",
);
assert!(result.is_ok(), "sub custom should work");
}
#[test]
#[ignore = "Runtime limitation: mul custom not implemented - needs [RUNTIME-1131] ticket"]
fn test_sqlite_1278_mul_custom() {
let result = execute_program(
r"
use std::ops::Mul;
struct Point { x: i32, y: i32 }
impl Mul<i32> for Point {
type Output = Point;
fn mul(self, scalar: i32) -> Point {
Point { x: self.x * scalar, y: self.y * scalar }
}
}
let p = Point { x: 2, y: 3 } * 4;
",
);
assert!(result.is_ok(), "mul custom should work");
}
#[test]
#[ignore = "Runtime limitation: div custom not implemented - needs [RUNTIME-1132] ticket"]
fn test_sqlite_1279_div_custom() {
let result = execute_program(
r"
use std::ops::Div;
struct Point { x: i32, y: i32 }
impl Div<i32> for Point {
type Output = Point;
fn div(self, scalar: i32) -> Point {
Point { x: self.x / scalar, y: self.y / scalar }
}
}
let p = Point { x: 8, y: 12 } / 4;
",
);
assert!(result.is_ok(), "div custom should work");
}
#[test]
#[ignore = "Runtime limitation: rem custom not implemented - needs [RUNTIME-1133] ticket"]
fn test_sqlite_1280_rem_custom() {
let result = execute_program(
r"
use std::ops::Rem;
struct Point { x: i32, y: i32 }
impl Rem<i32> for Point {
type Output = Point;
fn rem(self, scalar: i32) -> Point {
Point { x: self.x % scalar, y: self.y % scalar }
}
}
let p = Point { x: 10, y: 15 } % 3;
",
);
assert!(result.is_ok(), "rem custom should work");
}
#[test]
#[ignore = "Runtime limitation: neg custom not implemented - needs [RUNTIME-1134] ticket"]
fn test_sqlite_1281_neg_custom() {
let result = execute_program(
r"
use std::ops::Neg;
struct Point { x: i32, y: i32 }
impl Neg for Point {
type Output = Point;
fn neg(self) -> Point {
Point { x: -self.x, y: -self.y }
}
}
let p = -Point { x: 1, y: 2 };
",
);
assert!(result.is_ok(), "neg custom should work");
}
#[test]
#[ignore = "Runtime limitation: not custom not implemented - needs [RUNTIME-1135] ticket"]
fn test_sqlite_1282_not_custom() {
let result = execute_program(
r"
use std::ops::Not;
struct Flags(u8);
impl Not for Flags {
type Output = Flags;
fn not(self) -> Flags {
Flags(!self.0)
}
}
let f = !Flags(0b1010);
",
);
assert!(result.is_ok(), "not custom should work");
}
#[test]
#[ignore = "Runtime limitation: bitand custom not implemented - needs [RUNTIME-1136] ticket"]
fn test_sqlite_1283_bitand_custom() {
let result = execute_program(
r"
use std::ops::BitAnd;
struct Flags(u8);
impl BitAnd for Flags {
type Output = Flags;
fn bitand(self, other: Flags) -> Flags {
Flags(self.0 & other.0)
}
}
let f = Flags(0b1010) & Flags(0b1100);
",
);
assert!(result.is_ok(), "bitand custom should work");
}
#[test]
#[ignore = "Runtime limitation: bitor custom not implemented - needs [RUNTIME-1137] ticket"]
fn test_sqlite_1284_bitor_custom() {
let result = execute_program(
r"
use std::ops::BitOr;
struct Flags(u8);
impl BitOr for Flags {
type Output = Flags;
fn bitor(self, other: Flags) -> Flags {
Flags(self.0 | other.0)
}
}
let f = Flags(0b1010) | Flags(0b0101);
",
);
assert!(result.is_ok(), "bitor custom should work");
}
#[test]
#[ignore = "Runtime limitation: bitxor custom not implemented - needs [RUNTIME-1138] ticket"]
fn test_sqlite_1285_bitxor_custom() {
let result = execute_program(
r"
use std::ops::BitXor;
struct Flags(u8);
impl BitXor for Flags {
type Output = Flags;
fn bitxor(self, other: Flags) -> Flags {
Flags(self.0 ^ other.0)
}
}
let f = Flags(0b1010) ^ Flags(0b1100);
",
);
assert!(result.is_ok(), "bitxor custom should work");
}
#[test]
#[ignore = "Runtime limitation: shl custom not implemented - needs [RUNTIME-1139] ticket"]
fn test_sqlite_1286_shl_custom() {
let result = execute_program(
r"
use std::ops::Shl;
struct Bits(u32);
impl Shl<u32> for Bits {
type Output = Bits;
fn shl(self, rhs: u32) -> Bits {
Bits(self.0 << rhs)
}
}
let b = Bits(0b1010) << 2;
",
);
assert!(result.is_ok(), "shl custom should work");
}
#[test]
#[ignore = "Runtime limitation: shr custom not implemented - needs [RUNTIME-1140] ticket"]
fn test_sqlite_1287_shr_custom() {
let result = execute_program(
r"
use std::ops::Shr;
struct Bits(u32);
impl Shr<u32> for Bits {
type Output = Bits;
fn shr(self, rhs: u32) -> Bits {
Bits(self.0 >> rhs)
}
}
let b = Bits(0b1010) >> 2;
",
);
assert!(result.is_ok(), "shr custom should work");
}
#[test]
#[ignore = "Runtime limitation: shl assign not implemented - needs [RUNTIME-1141] ticket"]
fn test_sqlite_1288_shl_assign() {
let result = execute_program(
r"
use std::ops::ShlAssign;
struct Bits(u32);
impl ShlAssign<u32> for Bits {
fn shl_assign(&mut self, rhs: u32) {
self.0 <<= rhs;
}
}
let mut b = Bits(0b1010);
b <<= 2;
",
);
assert!(result.is_ok(), "shl assign should work");
}
#[test]
#[ignore = "Runtime limitation: shr assign not implemented - needs [RUNTIME-1142] ticket"]
fn test_sqlite_1289_shr_assign() {
let result = execute_program(
r"
use std::ops::ShrAssign;
struct Bits(u32);
impl ShrAssign<u32> for Bits {
fn shr_assign(&mut self, rhs: u32) {
self.0 >>= rhs;
}
}
let mut b = Bits(0b1010);
b >>= 2;
",
);
assert!(result.is_ok(), "shr assign should work");
}
#[test]
#[ignore = "Runtime limitation: bit operator chain not implemented - needs [RUNTIME-1143] ticket"]
fn test_sqlite_1290_bit_operator_chain() {
let result = execute_program(
r"
use std::ops::{BitAnd, BitOr, Shl};
struct Bits(u32);
impl BitAnd for Bits {
type Output = Bits;
fn bitand(self, other: Bits) -> Bits { Bits(self.0 & other.0) }
}
impl BitOr for Bits {
type Output = Bits;
fn bitor(self, other: Bits) -> Bits { Bits(self.0 | other.0) }
}
impl Shl<u32> for Bits {
type Output = Bits;
fn shl(self, rhs: u32) -> Bits { Bits(self.0 << rhs) }
}
let b = (Bits(0b1010) & Bits(0b1100)) | (Bits(0b0011) << 2);
",
);
assert!(result.is_ok(), "bit operator chain should work");
}
#[test]
#[ignore = "Runtime limitation: add assign custom not implemented - needs [RUNTIME-1144] ticket"]
fn test_sqlite_1291_add_assign_custom() {
let result = execute_program(
r"
use std::ops::AddAssign;
struct Point { x: i32, y: i32 }
impl AddAssign for Point {
fn add_assign(&mut self, other: Point) {
self.x += other.x;
self.y += other.y;
}
}
let mut p = Point { x: 1, y: 2 };
p += Point { x: 3, y: 4 };
",
);
assert!(result.is_ok(), "add assign custom should work");
}
#[test]
#[ignore = "Runtime limitation: sub assign custom not implemented - needs [RUNTIME-1145] ticket"]
fn test_sqlite_1292_sub_assign_custom() {
let result = execute_program(
r"
use std::ops::SubAssign;
struct Point { x: i32, y: i32 }
impl SubAssign for Point {
fn sub_assign(&mut self, other: Point) {
self.x -= other.x;
self.y -= other.y;
}
}
let mut p = Point { x: 5, y: 6 };
p -= Point { x: 1, y: 2 };
",
);
assert!(result.is_ok(), "sub assign custom should work");
}
#[test]
#[ignore = "Runtime limitation: mul assign custom not implemented - needs [RUNTIME-1146] ticket"]
fn test_sqlite_1293_mul_assign_custom() {
let result = execute_program(
r"
use std::ops::MulAssign;
struct Point { x: i32, y: i32 }
impl MulAssign<i32> for Point {
fn mul_assign(&mut self, scalar: i32) {
self.x *= scalar;
self.y *= scalar;
}
}
let mut p = Point { x: 2, y: 3 };
p *= 4;
",
);
assert!(result.is_ok(), "mul assign custom should work");
}
#[test]
#[ignore = "Runtime limitation: div assign custom not implemented - needs [RUNTIME-1147] ticket"]
fn test_sqlite_1294_div_assign_custom() {
let result = execute_program(
r"
use std::ops::DivAssign;
struct Point { x: i32, y: i32 }
impl DivAssign<i32> for Point {
fn div_assign(&mut self, scalar: i32) {
self.x /= scalar;
self.y /= scalar;
}
}
let mut p = Point { x: 8, y: 12 };
p /= 4;
",
);
assert!(result.is_ok(), "div assign custom should work");
}
#[test]
#[ignore = "Runtime limitation: rem assign custom not implemented - needs [RUNTIME-1148] ticket"]
fn test_sqlite_1295_rem_assign_custom() {
let result = execute_program(
r"
use std::ops::RemAssign;
struct Point { x: i32, y: i32 }
impl RemAssign<i32> for Point {
fn rem_assign(&mut self, scalar: i32) {
self.x %= scalar;
self.y %= scalar;
}
}
let mut p = Point { x: 10, y: 15 };
p %= 3;
",
);
assert!(result.is_ok(), "rem assign custom should work");
}
#[test]
#[ignore = "Runtime limitation: range full runtime not implemented - needs [RUNTIME-1149] ticket"]
fn test_sqlite_1296_range_full_runtime() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4, 5];
let s = &v[1..4];
",
);
assert!(result.is_ok(), "range full runtime should work");
}
#[test]
#[ignore = "Runtime limitation: range inclusive runtime not implemented - needs [RUNTIME-1150] ticket"]
fn test_sqlite_1297_range_inclusive_runtime() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4, 5];
let s = &v[1..=3];
",
);
assert!(result.is_ok(), "range inclusive runtime should work");
}
#[test]
#[ignore = "Runtime limitation: range from runtime not implemented - needs [RUNTIME-1151] ticket"]
fn test_sqlite_1298_range_from_runtime() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4, 5];
let s = &v[2..];
",
);
assert!(result.is_ok(), "range from runtime should work");
}
#[test]
#[ignore = "Runtime limitation: range to runtime not implemented - needs [RUNTIME-1152] ticket"]
fn test_sqlite_1299_range_to_runtime() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4, 5];
let s = &v[..3];
",
);
assert!(result.is_ok(), "range to runtime should work");
}
#[test]
#[ignore = "Runtime limitation: range full unbounded runtime not implemented - needs [RUNTIME-1153] ticket"]
fn test_sqlite_1300_range_full_unbounded_runtime() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4, 5];
let s = &v[..];
",
);
assert!(result.is_ok(), "range full unbounded runtime should work");
}
#[test]
#[ignore = "Runtime limitation: box new not implemented - needs [RUNTIME-1154] ticket"]
fn test_sqlite_1301_box_new() {
let result = execute_program(
r"
let b = Box::new(42);
",
);
assert!(result.is_ok(), "box new should work");
}
#[test]
#[ignore = "Runtime limitation: box deref not implemented - needs [RUNTIME-1155] ticket"]
fn test_sqlite_1302_box_deref() {
let result = execute_program(
r"
let b = Box::new(42);
let x = *b;
",
);
assert!(result.is_ok(), "box deref should work");
}
#[test]
#[ignore = "Runtime limitation: rc new not implemented - needs [RUNTIME-1156] ticket"]
fn test_sqlite_1303_rc_new() {
let result = execute_program(
r"
use std::rc::Rc;
let r = Rc::new(42);
",
);
assert!(result.is_ok(), "rc new should work");
}
#[test]
#[ignore = "Runtime limitation: rc clone not implemented - needs [RUNTIME-1157] ticket"]
fn test_sqlite_1304_rc_clone() {
let result = execute_program(
r"
use std::rc::Rc;
let r1 = Rc::new(42);
let r2 = Rc::clone(&r1);
",
);
assert!(result.is_ok(), "rc clone should work");
}
#[test]
#[ignore = "Runtime limitation: arc new not implemented - needs [RUNTIME-1158] ticket"]
fn test_sqlite_1305_arc_new() {
let result = execute_program(
r"
use std::sync::Arc;
let a = Arc::new(42);
",
);
assert!(result.is_ok(), "arc new should work");
}
#[test]
#[ignore = "Runtime limitation: cell new not implemented - needs [RUNTIME-1159] ticket"]
fn test_sqlite_1306_cell_new() {
let result = execute_program(
r"
use std::cell::Cell;
let c = Cell::new(42);
",
);
assert!(result.is_ok(), "cell new should work");
}
#[test]
#[ignore = "Runtime limitation: cell get not implemented - needs [RUNTIME-1160] ticket"]
fn test_sqlite_1307_cell_get() {
let result = execute_program(
r"
use std::cell::Cell;
let c = Cell::new(42);
let x = c.get();
",
);
assert!(result.is_ok(), "cell get should work");
}
#[test]
#[ignore = "Runtime limitation: cell set not implemented - needs [RUNTIME-1161] ticket"]
fn test_sqlite_1308_cell_set() {
let result = execute_program(
r"
use std::cell::Cell;
let c = Cell::new(42);
c.set(43);
",
);
assert!(result.is_ok(), "cell set should work");
}
#[test]
#[ignore = "Runtime limitation: refcell new not implemented - needs [RUNTIME-1162] ticket"]
fn test_sqlite_1309_refcell_new() {
let result = execute_program(
r"
use std::cell::RefCell;
let r = RefCell::new(42);
",
);
assert!(result.is_ok(), "refcell new should work");
}
#[test]
#[ignore = "Runtime limitation: refcell borrow not implemented - needs [RUNTIME-1163] ticket"]
fn test_sqlite_1310_refcell_borrow() {
let result = execute_program(
r"
use std::cell::RefCell;
let r = RefCell::new(42);
let borrowed = r.borrow();
",
);
assert!(result.is_ok(), "refcell borrow should work");
}
#[test]
#[ignore = "Runtime limitation: mutex new not implemented - needs [RUNTIME-1164] ticket"]
fn test_sqlite_1311_mutex_new() {
let result = execute_program(
r"
use std::sync::Mutex;
let m = Mutex::new(42);
",
);
assert!(result.is_ok(), "mutex new should work");
}
#[test]
#[ignore = "Runtime limitation: mutex lock not implemented - needs [RUNTIME-1165] ticket"]
fn test_sqlite_1312_mutex_lock() {
let result = execute_program(
r"
use std::sync::Mutex;
let m = Mutex::new(42);
let guard = m.lock().unwrap();
",
);
assert!(result.is_ok(), "mutex lock should work");
}
#[test]
#[ignore = "Runtime limitation: mutex unlock not implemented - needs [RUNTIME-1166] ticket"]
fn test_sqlite_1313_mutex_unlock() {
let result = execute_program(
r"
use std::sync::Mutex;
let m = Mutex::new(42);
{
let guard = m.lock().unwrap();
}
let guard2 = m.lock().unwrap();
",
);
assert!(result.is_ok(), "mutex unlock should work");
}
#[test]
#[ignore = "Runtime limitation: rwlock new not implemented - needs [RUNTIME-1167] ticket"]
fn test_sqlite_1314_rwlock_new() {
let result = execute_program(
r"
use std::sync::RwLock;
let rw = RwLock::new(42);
",
);
assert!(result.is_ok(), "rwlock new should work");
}
#[test]
#[ignore = "Runtime limitation: rwlock read not implemented - needs [RUNTIME-1168] ticket"]
fn test_sqlite_1315_rwlock_read() {
let result = execute_program(
r"
use std::sync::RwLock;
let rw = RwLock::new(42);
let guard = rw.read().unwrap();
",
);
assert!(result.is_ok(), "rwlock read should work");
}
#[test]
#[ignore = "Runtime limitation: channel create not implemented - needs [RUNTIME-1169] ticket"]
fn test_sqlite_1316_channel_create() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
",
);
assert!(result.is_ok(), "channel create should work");
}
#[test]
#[ignore = "Runtime limitation: channel send not implemented - needs [RUNTIME-1170] ticket"]
fn test_sqlite_1317_channel_send() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
tx.send(42).unwrap();
",
);
assert!(result.is_ok(), "channel send should work");
}
#[test]
#[ignore = "Runtime limitation: channel recv not implemented - needs [RUNTIME-1171] ticket"]
fn test_sqlite_1318_channel_recv() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
tx.send(42).unwrap();
let x = rx.recv().unwrap();
",
);
assert!(result.is_ok(), "channel recv should work");
}
#[test]
#[ignore = "Runtime limitation: channel try_recv not implemented - needs [RUNTIME-1172] ticket"]
fn test_sqlite_1319_channel_try_recv() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
let result = rx.try_recv();
assert!(result.is_err());
",
);
assert!(result.is_ok(), "channel try_recv should work");
}
#[test]
#[ignore = "Runtime limitation: channel iter not implemented - needs [RUNTIME-1173] ticket"]
fn test_sqlite_1320_channel_iter() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
tx.send(1).unwrap();
tx.send(2).unwrap();
drop(tx);
for x in rx { }
",
);
assert!(result.is_ok(), "channel iter should work");
}
#[test]
#[ignore = "Runtime limitation: thread spawn not implemented - needs [RUNTIME-1174] ticket"]
fn test_sqlite_1321_thread_spawn() {
let result = execute_program(
r"
use std::thread;
let handle = thread::spawn(|| { 42 });
",
);
assert!(result.is_ok(), "thread spawn should work");
}
#[test]
#[ignore = "Runtime limitation: thread join not implemented - needs [RUNTIME-1175] ticket"]
fn test_sqlite_1322_thread_join() {
let result = execute_program(
r"
use std::thread;
let handle = thread::spawn(|| { 42 });
let result = handle.join().unwrap();
",
);
assert!(result.is_ok(), "thread join should work");
}
#[test]
#[ignore = "Runtime limitation: thread sleep not implemented - needs [RUNTIME-1176] ticket"]
fn test_sqlite_1323_thread_sleep() {
let result = execute_program(
r"
use std::thread;
use std::time::Duration;
thread::sleep(Duration::from_millis(10));
",
);
assert!(result.is_ok(), "thread sleep should work");
}
#[test]
#[ignore = "Runtime limitation: thread current not implemented - needs [RUNTIME-1177] ticket"]
fn test_sqlite_1324_thread_current() {
let result = execute_program(
r"
use std::thread;
let current = thread::current();
",
);
assert!(result.is_ok(), "thread current should work");
}
#[test]
#[ignore = "Runtime limitation: thread builder not implemented - needs [RUNTIME-1178] ticket"]
fn test_sqlite_1325_thread_builder() {
let result = execute_program(
r#"
use std::thread;
let handle = thread::Builder::new()
.name("worker".to_string())
.spawn(|| { 42 })
.unwrap();
"#,
);
assert!(result.is_ok(), "thread builder should work");
}
#[test]
#[ignore = "Runtime limitation: future poll not implemented - needs [RUNTIME-1179] ticket"]
fn test_sqlite_1326_future_poll() {
let result = execute_program(
r"
use std::future::Future;
use std::pin::Pin;
use std::task::{Context, Poll};
async fn foo() -> i32 { 42 }
",
);
assert!(result.is_ok(), "future poll should work");
}
#[test]
#[ignore = "Runtime limitation: future ready not implemented - needs [RUNTIME-1180] ticket"]
fn test_sqlite_1327_future_ready() {
let result = execute_program(
r"
use std::future;
let f = future::ready(42);
",
);
assert!(result.is_ok(), "future ready should work");
}
#[test]
#[ignore = "Runtime limitation: future pending not implemented - needs [RUNTIME-1181] ticket"]
fn test_sqlite_1328_future_pending() {
let result = execute_program(
r"
use std::future;
let f: std::future::Pending<i32> = future::pending();
",
);
assert!(result.is_ok(), "future pending should work");
}
#[test]
#[ignore = "Runtime limitation: pin new not implemented - needs [RUNTIME-1182] ticket"]
fn test_sqlite_1329_pin_new() {
let result = execute_program(
r"
use std::pin::Pin;
let x = 42;
let pinned = Pin::new(&x);
",
);
assert!(result.is_ok(), "pin new should work");
}
#[test]
#[ignore = "Runtime limitation: waker not implemented - needs [RUNTIME-1183] ticket"]
fn test_sqlite_1330_waker() {
let result = execute_program(
r"
use std::task::{Waker, RawWaker, RawWakerVTable};
use std::ptr;
",
);
assert!(result.is_ok(), "waker should work");
}
#[test]
#[ignore = "Runtime limitation: file open not implemented - needs [RUNTIME-1184] ticket"]
fn test_sqlite_1331_file_open() {
let result = execute_program(
r#"
use std::fs::File;
let f = File::open("/dev/null");
"#,
);
assert!(result.is_ok(), "file open should work");
}
#[test]
#[ignore = "Runtime limitation: file create not implemented - needs [RUNTIME-1185] ticket"]
fn test_sqlite_1332_file_create() {
let result = execute_program(
r#"
use std::fs::File;
let f = File::create("/tmp/test.txt");
"#,
);
assert!(result.is_ok(), "file create should work");
}
#[test]
#[ignore = "Runtime limitation: file read not implemented - needs [RUNTIME-1186] ticket"]
fn test_sqlite_1333_file_read() {
let result = execute_program(
r#"
use std::fs::File;
use std::io::Read;
let mut f = File::open("/dev/null").unwrap();
let mut buf = vec![0; 10];
f.read(&mut buf).unwrap();
"#,
);
assert!(result.is_ok(), "file read should work");
}
#[test]
#[ignore = "Runtime limitation: file write not implemented - needs [RUNTIME-1187] ticket"]
fn test_sqlite_1334_file_write() {
let result = execute_program(
r#"
use std::fs::File;
use std::io::Write;
let mut f = File::create("/tmp/test.txt").unwrap();
f.write_all(b"hello").unwrap();
"#,
);
assert!(result.is_ok(), "file write should work");
}
#[test]
#[ignore = "Runtime limitation: file metadata not implemented - needs [RUNTIME-1188] ticket"]
fn test_sqlite_1335_file_metadata() {
let result = execute_program(
r#"
use std::fs::File;
let f = File::open("/dev/null").unwrap();
let metadata = f.metadata().unwrap();
"#,
);
assert!(result.is_ok(), "file metadata should work");
}
#[test]
#[ignore = "Runtime limitation: path new not implemented - needs [RUNTIME-1189] ticket"]
fn test_sqlite_1336_path_new() {
let result = execute_program(
r#"
use std::path::Path;
let p = Path::new("/tmp");
"#,
);
assert!(result.is_ok(), "path new should work");
}
#[test]
#[ignore = "Runtime limitation: pathbuf new not implemented - needs [RUNTIME-1190] ticket"]
fn test_sqlite_1337_pathbuf_new() {
let result = execute_program(
r"
use std::path::PathBuf;
let pb = PathBuf::new();
",
);
assert!(result.is_ok(), "pathbuf new should work");
}
#[test]
#[ignore = "Runtime limitation: path join not implemented - needs [RUNTIME-1191] ticket"]
fn test_sqlite_1338_path_join() {
let result = execute_program(
r#"
use std::path::Path;
let p = Path::new("/tmp");
let joined = p.join("file.txt");
"#,
);
assert!(result.is_ok(), "path join should work");
}
#[test]
#[ignore = "Runtime limitation: path exists not implemented - needs [RUNTIME-1192] ticket"]
fn test_sqlite_1339_path_exists() {
let result = execute_program(
r#"
use std::path::Path;
let p = Path::new("/tmp");
let exists = p.exists();
"#,
);
assert!(result.is_ok(), "path exists should work");
}
#[test]
#[ignore = "Runtime limitation: path extension not implemented - needs [RUNTIME-1193] ticket"]
fn test_sqlite_1340_path_extension() {
let result = execute_program(
r#"
use std::path::Path;
let p = Path::new("file.txt");
let ext = p.extension();
"#,
);
assert!(result.is_ok(), "path extension should work");
}
#[test]
#[ignore = "Runtime limitation: string len not implemented - needs [RUNTIME-1194] ticket"]
fn test_sqlite_1341_string_len() {
let result = execute_program(
r#"
let s = String::from("hello");
let len = s.len();
"#,
);
assert!(result.is_ok(), "string len should work");
}
#[test]
#[ignore = "Runtime limitation: string push not implemented - needs [RUNTIME-1195] ticket"]
fn test_sqlite_1342_string_push() {
let result = execute_program(
r#"
let mut s = String::from("hello");
s.push('!');
"#,
);
assert!(result.is_ok(), "string push should work");
}
#[test]
#[ignore = "Runtime limitation: string push_str not implemented - needs [RUNTIME-1196] ticket"]
fn test_sqlite_1343_string_push_str() {
let result = execute_program(
r#"
let mut s = String::from("hello");
s.push_str(" world");
"#,
);
assert!(result.is_ok(), "string push_str should work");
}
#[test]
#[ignore = "Runtime limitation: string pop not implemented - needs [RUNTIME-1197] ticket"]
fn test_sqlite_1344_string_pop() {
let result = execute_program(
r#"
let mut s = String::from("hello");
let c = s.pop();
"#,
);
assert!(result.is_ok(), "string pop should work");
}
#[test]
#[ignore = "Runtime limitation: string chars not implemented - needs [RUNTIME-1198] ticket"]
fn test_sqlite_1345_string_chars() {
let result = execute_program(
r#"
let s = String::from("hello");
for c in s.chars() { }
"#,
);
assert!(result.is_ok(), "string chars should work");
}
#[test]
#[ignore = "Runtime limitation: vec push not implemented - needs [RUNTIME-1199] ticket"]
fn test_sqlite_1346_vec_push() {
let result = execute_program(
r"
let mut v = vec![1, 2, 3];
v.push(4);
",
);
assert!(result.is_ok(), "vec push should work");
}
#[test]
#[ignore = "Runtime limitation: vec pop not implemented - needs [RUNTIME-1200] ticket"]
fn test_sqlite_1347_vec_pop() {
let result = execute_program(
r"
let mut v = vec![1, 2, 3];
let x = v.pop();
",
);
assert!(result.is_ok(), "vec pop should work");
}
#[test]
#[ignore = "Runtime limitation: vec len not implemented - needs [RUNTIME-1201] ticket"]
fn test_sqlite_1348_vec_len() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let len = v.len();
",
);
assert!(result.is_ok(), "vec len should work");
}
#[test]
#[ignore = "Runtime limitation: vec capacity not implemented - needs [RUNTIME-1202] ticket"]
fn test_sqlite_1349_vec_capacity() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let cap = v.capacity();
",
);
assert!(result.is_ok(), "vec capacity should work");
}
#[test]
#[ignore = "Runtime limitation: vec clear not implemented - needs [RUNTIME-1203] ticket"]
fn test_sqlite_1350_vec_clear() {
let result = execute_program(
r"
let mut v = vec![1, 2, 3];
v.clear();
",
);
assert!(result.is_ok(), "vec clear should work");
}
#[test]
#[ignore = "Runtime limitation: hashmap insert not implemented - needs [RUNTIME-1204] ticket"]
fn test_sqlite_1351_hashmap_insert() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key", 42);
"#,
);
assert!(result.is_ok(), "hashmap insert should work");
}
#[test]
#[ignore = "Runtime limitation: hashmap get not implemented - needs [RUNTIME-1205] ticket"]
fn test_sqlite_1352_hashmap_get() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key", 42);
let val = map.get("key");
"#,
);
assert!(result.is_ok(), "hashmap get should work");
}
#[test]
#[ignore = "Runtime limitation: hashmap remove not implemented - needs [RUNTIME-1206] ticket"]
fn test_sqlite_1353_hashmap_remove() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key", 42);
map.remove("key");
"#,
);
assert!(result.is_ok(), "hashmap remove should work");
}
#[test]
#[ignore = "Runtime limitation: hashmap contains_key not implemented - needs [RUNTIME-1207] ticket"]
fn test_sqlite_1354_hashmap_contains_key() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key", 42);
let exists = map.contains_key("key");
"#,
);
assert!(result.is_ok(), "hashmap contains_key should work");
}
#[test]
#[ignore = "Runtime limitation: hashmap len not implemented - needs [RUNTIME-1208] ticket"]
fn test_sqlite_1355_hashmap_len() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key", 42);
let len = map.len();
"#,
);
assert!(result.is_ok(), "hashmap len should work");
}
#[test]
#[ignore = "Runtime limitation: option unwrap not implemented - needs [RUNTIME-1209] ticket"]
fn test_sqlite_1356_option_unwrap() {
let result = execute_program(
r"
let opt = Some(42);
let x = opt.unwrap();
",
);
assert!(result.is_ok(), "option unwrap should work");
}
#[test]
#[ignore = "Runtime limitation: option unwrap_or not implemented - needs [RUNTIME-1210] ticket"]
fn test_sqlite_1357_option_unwrap_or() {
let result = execute_program(
r"
let opt: Option<i32> = None;
let x = opt.unwrap_or(0);
",
);
assert!(result.is_ok(), "option unwrap_or should work");
}
#[test]
#[ignore = "Runtime limitation: option is_some not implemented - needs [RUNTIME-1211] ticket"]
fn test_sqlite_1358_option_is_some() {
let result = execute_program(
r"
let opt = Some(42);
let is_some = opt.is_some();
",
);
assert!(result.is_ok(), "option is_some should work");
}
#[test]
#[ignore = "Runtime limitation: option is_none not implemented - needs [RUNTIME-1212] ticket"]
fn test_sqlite_1359_option_is_none() {
let result = execute_program(
r"
let opt: Option<i32> = None;
let is_none = opt.is_none();
",
);
assert!(result.is_ok(), "option is_none should work");
}
#[test]
#[ignore = "Runtime limitation: option map not implemented - needs [RUNTIME-1213] ticket"]
fn test_sqlite_1360_option_map() {
let result = execute_program(
r"
let opt = Some(42);
let doubled = opt.map(|x| x * 2);
",
);
assert!(result.is_ok(), "option map should work");
}
#[test]
#[ignore = "Runtime limitation: result unwrap not implemented - needs [RUNTIME-1214] ticket"]
fn test_sqlite_1361_result_unwrap() {
let result = execute_program(
r"
let res: Result<i32, String> = Ok(42);
let x = res.unwrap();
",
);
assert!(result.is_ok(), "result unwrap should work");
}
#[test]
#[ignore = "Runtime limitation: result unwrap_or not implemented - needs [RUNTIME-1215] ticket"]
fn test_sqlite_1362_result_unwrap_or() {
let result = execute_program(
r#"
let res: Result<i32, String> = Err("error".to_string());
let x = res.unwrap_or(0);
"#,
);
assert!(result.is_ok(), "result unwrap_or should work");
}
#[test]
#[ignore = "Runtime limitation: result is_ok not implemented - needs [RUNTIME-1216] ticket"]
fn test_sqlite_1363_result_is_ok() {
let result = execute_program(
r"
let res: Result<i32, String> = Ok(42);
let is_ok = res.is_ok();
",
);
assert!(result.is_ok(), "result is_ok should work");
}
#[test]
#[ignore = "Runtime limitation: result is_err not implemented - needs [RUNTIME-1217] ticket"]
fn test_sqlite_1364_result_is_err() {
let result = execute_program(
r#"
let res: Result<i32, String> = Err("error".to_string());
let is_err = res.is_err();
"#,
);
assert!(result.is_ok(), "result is_err should work");
}
#[test]
#[ignore = "Runtime limitation: result map not implemented - needs [RUNTIME-1218] ticket"]
fn test_sqlite_1365_result_map() {
let result = execute_program(
r"
let res: Result<i32, String> = Ok(42);
let doubled = res.map(|x| x * 2);
",
);
assert!(result.is_ok(), "result map should work");
}
#[test]
#[ignore = "Runtime limitation: slice len not implemented - needs [RUNTIME-1219] ticket"]
fn test_sqlite_1366_slice_len() {
let result = execute_program(
r"
let arr = [1, 2, 3, 4, 5];
let s = &arr[1..4];
let len = s.len();
",
);
assert!(result.is_ok(), "slice len should work");
}
#[test]
#[ignore = "Runtime limitation: slice is_empty not implemented - needs [RUNTIME-1220] ticket"]
fn test_sqlite_1367_slice_is_empty() {
let result = execute_program(
r"
let arr = [1, 2, 3];
let s = &arr[0..0];
let empty = s.is_empty();
",
);
assert!(result.is_ok(), "slice is_empty should work");
}
#[test]
#[ignore = "Runtime limitation: slice first not implemented - needs [RUNTIME-1221] ticket"]
fn test_sqlite_1368_slice_first() {
let result = execute_program(
r"
let arr = [1, 2, 3];
let s = &arr[..];
let first = s.first();
",
);
assert!(result.is_ok(), "slice first should work");
}
#[test]
#[ignore = "Runtime limitation: slice last not implemented - needs [RUNTIME-1222] ticket"]
fn test_sqlite_1369_slice_last() {
let result = execute_program(
r"
let arr = [1, 2, 3];
let s = &arr[..];
let last = s.last();
",
);
assert!(result.is_ok(), "slice last should work");
}
#[test]
#[ignore = "Runtime limitation: slice iter not implemented - needs [RUNTIME-1223] ticket"]
fn test_sqlite_1370_slice_iter() {
let result = execute_program(
r"
let arr = [1, 2, 3];
let s = &arr[..];
for x in s.iter() { }
",
);
assert!(result.is_ok(), "slice iter should work");
}
#[test]
#[ignore = "Runtime limitation: iter map not implemented - needs [RUNTIME-1224] ticket"]
fn test_sqlite_1371_iter_map() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let doubled: Vec<_> = v.iter().map(|x| x * 2).collect();
",
);
assert!(result.is_ok(), "iter map should work");
}
#[test]
#[ignore = "Runtime limitation: iter filter not implemented - needs [RUNTIME-1225] ticket"]
fn test_sqlite_1372_iter_filter() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4];
let evens: Vec<_> = v.iter().filter(|x| *x % 2 == 0).collect();
",
);
assert!(result.is_ok(), "iter filter should work");
}
#[test]
#[ignore = "Runtime limitation: iter fold not implemented - needs [RUNTIME-1226] ticket"]
fn test_sqlite_1373_iter_fold() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4];
let sum = v.iter().fold(0, |acc, x| acc + x);
",
);
assert!(result.is_ok(), "iter fold should work");
}
#[test]
#[ignore = "Runtime limitation: iter collect not implemented - needs [RUNTIME-1227] ticket"]
fn test_sqlite_1374_iter_collect() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let collected: Vec<_> = v.iter().collect();
",
);
assert!(result.is_ok(), "iter collect should work");
}
#[test]
#[ignore = "Runtime limitation: iter count not implemented - needs [RUNTIME-1228] ticket"]
fn test_sqlite_1375_iter_count() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4, 5];
let count = v.iter().count();
",
);
assert!(result.is_ok(), "iter count should work");
}
#[test]
#[ignore = "Runtime limitation: abs not implemented - needs [RUNTIME-1229] ticket"]
fn test_sqlite_1376_abs() {
let result = execute_program(
r"
let x = -42;
let abs_x = x.abs();
",
);
assert!(result.is_ok(), "abs should work");
}
#[test]
#[ignore = "Runtime limitation: pow not implemented - needs [RUNTIME-1230] ticket"]
fn test_sqlite_1377_pow() {
let result = execute_program(
r"
let x = 2;
let squared = x.pow(2);
",
);
assert!(result.is_ok(), "pow should work");
}
#[test]
#[ignore = "Runtime limitation: sqrt not implemented - needs [RUNTIME-1231] ticket"]
fn test_sqlite_1378_sqrt() {
let result = execute_program(
r"
let x = 16.0;
let root = x.sqrt();
",
);
assert!(result.is_ok(), "sqrt should work");
}
#[test]
#[ignore = "Runtime limitation: min not implemented - needs [RUNTIME-1232] ticket"]
fn test_sqlite_1379_min() {
let result = execute_program(
r"
use std::cmp::min;
let x = min(3, 5);
",
);
assert!(result.is_ok(), "min should work");
}
#[test]
#[ignore = "Runtime limitation: max not implemented - needs [RUNTIME-1233] ticket"]
fn test_sqlite_1380_max() {
let result = execute_program(
r"
use std::cmp::max;
let x = max(3, 5);
",
);
assert!(result.is_ok(), "max should work");
}
#[test]
#[ignore = "Runtime limitation: to_string not implemented - needs [RUNTIME-1234] ticket"]
fn test_sqlite_1381_to_string() {
let result = execute_program(
r"
let x = 42;
let s = x.to_string();
",
);
assert!(result.is_ok(), "to_string should work");
}
#[test]
#[ignore = "Runtime limitation: parse not implemented - needs [RUNTIME-1235] ticket"]
fn test_sqlite_1382_parse() {
let result = execute_program(
r#"
let s = "42";
let x: i32 = s.parse().unwrap();
"#,
);
assert!(result.is_ok(), "parse should work");
}
#[test]
#[ignore = "Runtime limitation: as_bytes not implemented - needs [RUNTIME-1236] ticket"]
fn test_sqlite_1383_as_bytes() {
let result = execute_program(
r#"
let s = "hello";
let bytes = s.as_bytes();
"#,
);
assert!(result.is_ok(), "as_bytes should work");
}
#[test]
#[ignore = "Runtime limitation: from_utf8 not implemented - needs [RUNTIME-1237] ticket"]
fn test_sqlite_1384_from_utf8() {
let result = execute_program(
r"
use std::str;
let bytes = vec![104, 101, 108, 108, 111];
let s = str::from_utf8(&bytes).unwrap();
",
);
assert!(result.is_ok(), "from_utf8 should work");
}
#[test]
#[ignore = "Runtime limitation: as_str not implemented - needs [RUNTIME-1238] ticket"]
fn test_sqlite_1385_as_str() {
let result = execute_program(
r#"
let s = String::from("hello");
let str_ref = s.as_str();
"#,
);
assert!(result.is_ok(), "as_str should work");
}
#[test]
#[ignore = "Runtime limitation: format simple not implemented - needs [RUNTIME-1239] ticket"]
fn test_sqlite_1386_format_simple() {
let result = execute_program(
r#"
let s = format!("x = {}", 42);
"#,
);
assert!(result.is_ok(), "format simple should work");
}
#[test]
#[ignore = "Runtime limitation: format multi not implemented - needs [RUNTIME-1240] ticket"]
fn test_sqlite_1387_format_multi() {
let result = execute_program(
r#"
let s = format!("x = {}, y = {}", 42, 43);
"#,
);
assert!(result.is_ok(), "format multi should work");
}
#[test]
#[ignore = "Runtime limitation: println not implemented - needs [RUNTIME-1241] ticket"]
fn test_sqlite_1388_println() {
let result = execute_program(
r#"
println!("hello");
"#,
);
assert!(result.is_ok(), "println should work");
}
#[test]
#[ignore = "Runtime limitation: dbg not implemented - needs [RUNTIME-1242] ticket"]
fn test_sqlite_1389_dbg() {
let result = execute_program(
r"
let x = 42;
dbg!(x);
",
);
assert!(result.is_ok(), "dbg should work");
}
#[test]
#[ignore = "Runtime limitation: eprintln not implemented - needs [RUNTIME-1243] ticket"]
fn test_sqlite_1390_eprintln() {
let result = execute_program(
r#"
eprintln!("error");
"#,
);
assert!(result.is_ok(), "eprintln should work");
}
#[test]
#[ignore = "Runtime limitation: select_biased not implemented - needs [RUNTIME-822] ticket"]
fn test_sqlite_969_select_biased() {
let result = execute_program(
r#"
use tokio::select;
select! {
biased;
x = async { 42 } => println!("{}", x),
y = async { 43 } => println!("{}", y),
}
"#,
);
assert!(result.is_ok(), "select_biased should work");
}
#[test]
#[ignore = "Runtime limitation: join_all not implemented - needs [RUNTIME-823] ticket"]
fn test_sqlite_970_join_all() {
let result = execute_program(
r"
use futures::future::join_all;
let futures = vec![async { 42 }, async { 43 }];
let results = join_all(futures).await;
",
);
assert!(result.is_ok(), "join_all should work");
}
#[test]
#[ignore = "Runtime limitation: timeout basic not implemented - needs [RUNTIME-824] ticket"]
fn test_sqlite_971_timeout_basic() {
let result = execute_program(
r"
use tokio::time::{timeout, Duration};
let result = timeout(Duration::from_secs(1), async { 42 }).await;
",
);
assert!(result.is_ok(), "timeout basic should work");
}
#[test]
#[ignore = "Runtime limitation: timeout error not implemented - needs [RUNTIME-825] ticket"]
fn test_sqlite_972_timeout_error() {
let result = execute_program(
r"
use tokio::time::{timeout, Duration, sleep};
let result = timeout(Duration::from_millis(10), sleep(Duration::from_secs(10))).await;
",
);
assert!(result.is_ok(), "timeout error should work");
}
#[test]
#[ignore = "Runtime limitation: interval basic not implemented - needs [RUNTIME-826] ticket"]
fn test_sqlite_973_interval_basic() {
let result = execute_program(
r"
use tokio::time::{interval, Duration};
let mut interval = interval(Duration::from_secs(1));
",
);
assert!(result.is_ok(), "interval basic should work");
}
#[test]
#[ignore = "Runtime limitation: interval tick not implemented - needs [RUNTIME-827] ticket"]
fn test_sqlite_974_interval_tick() {
let result = execute_program(
r"
use tokio::time::{interval, Duration};
let mut interval = interval(Duration::from_secs(1));
interval.tick().await;
",
);
assert!(result.is_ok(), "interval tick should work");
}
#[test]
#[ignore = "Runtime limitation: sleep basic not implemented - needs [RUNTIME-828] ticket"]
fn test_sqlite_975_sleep_basic() {
let result = execute_program(
r"
use tokio::time::{sleep, Duration};
sleep(Duration::from_secs(1)).await;
",
);
assert!(result.is_ok(), "sleep basic should work");
}
#[test]
#[ignore = "Runtime limitation: async Mutex basic not implemented - needs [RUNTIME-829] ticket"]
fn test_sqlite_976_async_mutex_basic() {
let result = execute_program(
r"
use tokio::sync::Mutex;
let m = Mutex::new(42);
",
);
assert!(result.is_ok(), "async Mutex basic should work");
}
#[test]
#[ignore = "Runtime limitation: async Mutex lock not implemented - needs [RUNTIME-830] ticket"]
fn test_sqlite_977_async_mutex_lock() {
let result = execute_program(
r"
use tokio::sync::Mutex;
let m = Mutex::new(42);
let guard = m.lock().await;
",
);
assert!(result.is_ok(), "async Mutex lock should work");
}
#[test]
#[ignore = "Runtime limitation: async RwLock basic not implemented - needs [RUNTIME-831] ticket"]
fn test_sqlite_978_async_rwlock_basic() {
let result = execute_program(
r"
use tokio::sync::RwLock;
let lock = RwLock::new(42);
",
);
assert!(result.is_ok(), "async RwLock basic should work");
}
#[test]
#[ignore = "Runtime limitation: async RwLock read not implemented - needs [RUNTIME-832] ticket"]
fn test_sqlite_979_async_rwlock_read() {
let result = execute_program(
r"
use tokio::sync::RwLock;
let lock = RwLock::new(42);
let guard = lock.read().await;
",
);
assert!(result.is_ok(), "async RwLock read should work");
}
#[test]
#[ignore = "Runtime limitation: async RwLock write not implemented - needs [RUNTIME-833] ticket"]
fn test_sqlite_980_async_rwlock_write() {
let result = execute_program(
r"
use tokio::sync::RwLock;
let lock = RwLock::new(42);
let mut guard = lock.write().await;
*guard = 43;
",
);
assert!(result.is_ok(), "async RwLock write should work");
}
#[test]
#[ignore = "Runtime limitation: unbounded_channel not implemented - needs [RUNTIME-834] ticket"]
fn test_sqlite_981_unbounded_channel() {
let result = execute_program(
r"
use tokio::sync::mpsc::unbounded_channel;
let (tx, rx) = unbounded_channel();
",
);
assert!(result.is_ok(), "unbounded_channel should work");
}
#[test]
#[ignore = "Runtime limitation: broadcast channel not implemented - needs [RUNTIME-835] ticket"]
fn test_sqlite_982_broadcast_channel() {
let result = execute_program(
r"
use tokio::sync::broadcast;
let (tx, rx) = broadcast::channel(10);
",
);
assert!(result.is_ok(), "broadcast channel should work");
}
#[test]
#[ignore = "Runtime limitation: watch channel not implemented - needs [RUNTIME-836] ticket"]
fn test_sqlite_983_watch_channel() {
let result = execute_program(
r"
use tokio::sync::watch;
let (tx, rx) = watch::channel(42);
",
);
assert!(result.is_ok(), "watch channel should work");
}
#[test]
#[ignore = "Runtime limitation: oneshot channel not implemented - needs [RUNTIME-837] ticket"]
fn test_sqlite_984_oneshot_channel() {
let result = execute_program(
r"
use tokio::sync::oneshot;
let (tx, rx) = oneshot::channel();
",
);
assert!(result.is_ok(), "oneshot channel should work");
}
#[test]
#[ignore = "Runtime limitation: channel close not implemented - needs [RUNTIME-838] ticket"]
fn test_sqlite_985_channel_close() {
let result = execute_program(
r"
use tokio::sync::mpsc;
let (tx, rx) = mpsc::channel(10);
drop(tx);
",
);
assert!(result.is_ok(), "channel close should work");
}
#[test]
#[ignore = "Runtime limitation: spawn_blocking not implemented - needs [RUNTIME-839] ticket"]
fn test_sqlite_986_spawn_blocking() {
let result = execute_program(
r"
use tokio::task::spawn_blocking;
let handle = spawn_blocking(|| { 42 });
",
);
assert!(result.is_ok(), "spawn_blocking should work");
}
#[test]
#[ignore = "Runtime limitation: JoinHandle await not implemented - needs [RUNTIME-840] ticket"]
fn test_sqlite_987_join_handle_await() {
let result = execute_program(
r"
use tokio::task::spawn;
let handle = spawn(async { 42 });
let result = handle.await;
",
);
assert!(result.is_ok(), "JoinHandle await should work");
}
#[test]
#[ignore = "Runtime limitation: JoinHandle abort not implemented - needs [RUNTIME-841] ticket"]
fn test_sqlite_988_join_handle_abort() {
let result = execute_program(
r"
use tokio::task::spawn;
let handle = spawn(async { 42 });
handle.abort();
",
);
assert!(result.is_ok(), "JoinHandle abort should work");
}
#[test]
#[ignore = "Runtime limitation: yield_now not implemented - needs [RUNTIME-842] ticket"]
fn test_sqlite_989_yield_now() {
let result = execute_program(
r"
use tokio::task::yield_now;
yield_now().await;
",
);
assert!(result.is_ok(), "yield_now should work");
}
#[test]
#[ignore = "Runtime limitation: LocalSet basic not implemented - needs [RUNTIME-843] ticket"]
fn test_sqlite_990_local_set_basic() {
let result = execute_program(
r"
use tokio::task::LocalSet;
let local = LocalSet::new();
",
);
assert!(result.is_ok(), "LocalSet basic should work");
}
#[test]
#[ignore = "Runtime limitation: trait object basic not implemented - needs [RUNTIME-844] ticket"]
fn test_sqlite_991_trait_object_basic() {
let result = execute_program(
r"
trait Drawable {
fn draw(&self);
}
let d: &dyn Drawable;
",
);
assert!(result.is_ok(), "trait object basic should work");
}
#[test]
#[ignore = "Runtime limitation: trait object method call not implemented - needs [RUNTIME-845] ticket"]
fn test_sqlite_992_trait_object_method() {
let result = execute_program(
r"
trait Drawable {
fn draw(&self);
}
let d: &dyn Drawable;
d.draw();
",
);
assert!(result.is_ok(), "trait object method call should work");
}
#[test]
#[ignore = "Runtime limitation: trait object box not implemented - needs [RUNTIME-846] ticket"]
fn test_sqlite_993_trait_object_box() {
let result = execute_program(
r"
trait Drawable {
fn draw(&self);
}
let d: Box<dyn Drawable>;
",
);
assert!(result.is_ok(), "trait object Box should work");
}
#[test]
#[ignore = "Runtime limitation: trait object vec not implemented - needs [RUNTIME-847] ticket"]
fn test_sqlite_994_trait_object_vec() {
let result = execute_program(
r"
trait Drawable {
fn draw(&self);
}
let v: Vec<Box<dyn Drawable>>;
",
);
assert!(result.is_ok(), "trait object Vec should work");
}
#[test]
#[ignore = "Runtime limitation: trait object multiple traits not implemented - needs [RUNTIME-848] ticket"]
fn test_sqlite_995_trait_object_multi() {
let result = execute_program(
r"
trait Drawable {}
trait Clickable {}
let d: &(dyn Drawable + Clickable);
",
);
assert!(
result.is_ok(),
"trait object with multiple traits should work"
);
}
#[test]
#[ignore = "Runtime limitation: closure capture by value not implemented - needs [RUNTIME-849] ticket"]
fn test_sqlite_996_closure_capture_value() {
let result = execute_program(
r"
let x = 42;
let f = move || x;
",
);
assert!(result.is_ok(), "closure capture by value should work");
}
#[test]
#[ignore = "Runtime limitation: closure capture by reference not implemented - needs [RUNTIME-850] ticket"]
fn test_sqlite_997_closure_capture_ref() {
let result = execute_program(
r"
let x = 42;
let f = || &x;
",
);
assert!(result.is_ok(), "closure capture by reference should work");
}
#[test]
#[ignore = "Runtime limitation: closure capture mutable not implemented - needs [RUNTIME-851] ticket"]
fn test_sqlite_998_closure_capture_mut() {
let result = execute_program(
r"
let mut x = 42;
let f = || { x += 1; };
",
);
assert!(result.is_ok(), "closure capture mutable should work");
}
#[test]
#[ignore = "Runtime limitation: closure FnOnce trait not implemented - needs [RUNTIME-852] ticket"]
fn test_sqlite_999_closure_fn_once() {
let result = execute_program(
r"
let x = vec![1, 2, 3];
let f = || drop(x);
f();
",
);
assert!(result.is_ok(), "closure FnOnce trait should work");
}
#[test]
#[ignore = "Runtime limitation: closure as parameter not implemented - needs [RUNTIME-853] ticket"]
fn test_sqlite_1000_closure_as_param() {
let result = execute_program(
r"
fn apply<F: Fn(i32) -> i32>(f: F, x: i32) -> i32 {
f(x)
}
let result = apply(|n| n * 2, 21);
",
);
assert!(result.is_ok(), "closure as parameter should work");
}
#[test]
#[ignore = "Runtime limitation: match with enum not implemented - needs [RUNTIME-854] ticket"]
fn test_sqlite_1001_match_enum() {
let result = execute_program(
r"
enum Color { Red, Green, Blue }
let c = Color::Red;
match c {
Color::Red => 1,
Color::Green => 2,
Color::Blue => 3,
}
",
);
assert!(result.is_ok(), "match with enum should work");
}
#[test]
#[ignore = "Runtime limitation: match with tuple not implemented - needs [RUNTIME-855] ticket"]
fn test_sqlite_1002_match_tuple() {
let result = execute_program(
r"
let pair = (1, 2);
match pair {
(0, y) => y,
(x, 0) => x,
(x, y) => x + y,
}
",
);
assert!(result.is_ok(), "match with tuple should work");
}
#[test]
#[ignore = "Runtime limitation: match with struct not implemented - needs [RUNTIME-856] ticket"]
fn test_sqlite_1003_match_struct() {
let result = execute_program(
r#"
struct Point { x: i32, y: i32 }
let p = Point { x: 0, y: 0 };
match p {
Point { x: 0, y: 0 } => "origin",
Point { x: 0, y } => "y-axis",
Point { x, y: 0 } => "x-axis",
Point { x, y } => "other",
}
"#,
);
assert!(result.is_ok(), "match with struct should work");
}
#[test]
#[ignore = "Runtime limitation: match with range not implemented - needs [RUNTIME-857] ticket"]
fn test_sqlite_1004_match_range() {
let result = execute_program(
r#"
let x = 5;
match x {
1..=5 => "low",
6..=10 => "high",
_ => "other",
}
"#,
);
assert!(result.is_ok(), "match with range should work");
}
#[test]
#[ignore = "Runtime limitation: match with or pattern not implemented - needs [RUNTIME-858] ticket"]
fn test_sqlite_1005_match_or() {
let result = execute_program(
r#"
let x = 2;
match x {
1 | 2 => "one or two",
3 | 4 => "three or four",
_ => "other",
}
"#,
);
assert!(result.is_ok(), "match with or pattern should work");
}
#[test]
#[ignore = "Runtime limitation: method call on struct not implemented - needs [RUNTIME-859] ticket"]
fn test_sqlite_1006_method_struct() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
impl Point {
fn distance(&self) -> f64 {
((self.x * self.x + self.y * self.y) as f64).sqrt()
}
}
let p = Point { x: 3, y: 4 };
let d = p.distance();
",
);
assert!(result.is_ok(), "method call on struct should work");
}
#[test]
#[ignore = "Runtime limitation: method call on enum not implemented - needs [RUNTIME-860] ticket"]
fn test_sqlite_1007_method_enum() {
let result = execute_program(
r"
enum Option<T> {
Some(T),
None,
}
impl<T> Option<T> {
fn is_some(&self) -> bool {
match self {
Option::Some(_) => true,
Option::None => false,
}
}
}
let opt = Option::Some(42);
let is = opt.is_some();
",
);
assert!(result.is_ok(), "method call on enum should work");
}
#[test]
#[ignore = "Runtime limitation: method chaining not implemented - needs [RUNTIME-861] ticket"]
fn test_sqlite_1008_method_chain() {
let result = execute_program(
r#"
let s = "hello";
let upper = s.to_uppercase().trim();
"#,
);
assert!(result.is_ok(), "method chaining should work");
}
#[test]
#[ignore = "Runtime limitation: method with self not implemented - needs [RUNTIME-862] ticket"]
fn test_sqlite_1009_method_self() {
let result = execute_program(
r"
struct Builder {
value: i32,
}
impl Builder {
fn set(mut self, v: i32) -> Self {
self.value = v;
self
}
}
let b = Builder { value: 0 }.set(42);
",
);
assert!(result.is_ok(), "method with self should work");
}
#[test]
#[ignore = "Runtime limitation: associated function call not implemented - needs [RUNTIME-863] ticket"]
fn test_sqlite_1010_associated_fn() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
impl Point {
fn new(x: i32, y: i32) -> Self {
Point { x, y }
}
}
let p = Point::new(1, 2);
",
);
assert!(result.is_ok(), "associated function call should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime basic not implemented - needs [RUNTIME-864] ticket"]
fn test_sqlite_1011_lifetime_basic() {
let result = execute_program(
r#"
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() { x } else { y }
}
let s1 = "hello";
let s2 = "world";
let result = longest(s1, s2);
"#,
);
assert!(result.is_ok(), "lifetime basic should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime struct not implemented - needs [RUNTIME-865] ticket"]
fn test_sqlite_1012_lifetime_struct() {
let result = execute_program(
r"
struct Borrowed<'a> {
value: &'a i32,
}
let x = 42;
let b = Borrowed { value: &x };
",
);
assert!(result.is_ok(), "lifetime in struct should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime multiple not implemented - needs [RUNTIME-866] ticket"]
fn test_sqlite_1013_lifetime_multi() {
let result = execute_program(
r"
fn select<'a, 'b>(x: &'a str, y: &'b str, first: bool) -> &'a str {
if first { x } else { x }
}
",
);
assert!(result.is_ok(), "multiple lifetimes should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime elision not implemented - needs [RUNTIME-867] ticket"]
fn test_sqlite_1014_lifetime_elision() {
let result = execute_program(
r"
fn first_word(s: &str) -> &str {
&s[0..1]
}
",
);
assert!(result.is_ok(), "lifetime elision should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime static not implemented - needs [RUNTIME-868] ticket"]
fn test_sqlite_1015_lifetime_static() {
let result = execute_program(
r#"
let s: &'static str = "hello";
"#,
);
assert!(result.is_ok(), "static lifetime should work");
}
#[test]
#[ignore = "Runtime limitation: generic function call not implemented - needs [RUNTIME-869] ticket"]
fn test_sqlite_1016_generic_fn() {
let result = execute_program(
r"
fn identity<T>(x: T) -> T { x }
let n = identity(42);
",
);
assert!(result.is_ok(), "generic function call should work");
}
#[test]
#[ignore = "Runtime limitation: generic struct instantiation not implemented - needs [RUNTIME-870] ticket"]
fn test_sqlite_1017_generic_struct() {
let result = execute_program(
r"
struct Wrapper<T> {
value: T,
}
let w = Wrapper { value: 42 };
",
);
assert!(result.is_ok(), "generic struct instantiation should work");
}
#[test]
#[ignore = "Runtime limitation: generic enum instantiation not implemented - needs [RUNTIME-871] ticket"]
fn test_sqlite_1018_generic_enum() {
let result = execute_program(
r"
enum Option<T> {
Some(T),
None,
}
let opt = Option::Some(42);
",
);
assert!(result.is_ok(), "generic enum instantiation should work");
}
#[test]
#[ignore = "Runtime limitation: generic trait bound not implemented - needs [RUNTIME-872] ticket"]
fn test_sqlite_1019_generic_bound() {
let result = execute_program(
r#"
fn print_debug<T: Debug>(x: T) {
println!("{:?}", x);
}
print_debug(42);
"#,
);
assert!(result.is_ok(), "generic trait bound should work");
}
#[test]
#[ignore = "Runtime limitation: generic multiple bounds not implemented - needs [RUNTIME-873] ticket"]
fn test_sqlite_1020_generic_multi_bound() {
let result = execute_program(
r"
fn process<T: Clone + Debug>(x: T) -> T {
x.clone()
}
process(42);
",
);
assert!(result.is_ok(), "generic multiple bounds should work");
}
#[test]
#[ignore = "Runtime limitation: Add trait implementation not implemented - needs [RUNTIME-874] ticket"]
fn test_sqlite_1021_add_trait() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
impl Add for Point {
type Output = Point;
fn add(self, other: Point) -> Point {
Point { x: self.x + other.x, y: self.y + other.y }
}
}
let p1 = Point { x: 1, y: 2 };
let p2 = Point { x: 3, y: 4 };
let p3 = p1 + p2;
",
);
assert!(result.is_ok(), "Add trait implementation should work");
}
#[test]
#[ignore = "Runtime limitation: Index trait implementation not implemented - needs [RUNTIME-875] ticket"]
fn test_sqlite_1022_index_trait() {
let result = execute_program(
r"
struct Array {
data: Vec<i32>,
}
impl Index<usize> for Array {
type Output = i32;
fn index(&self, i: usize) -> &i32 {
&self.data[i]
}
}
let arr = Array { data: vec![1, 2, 3] };
let x = arr[0];
",
);
assert!(result.is_ok(), "Index trait implementation should work");
}
#[test]
#[ignore = "Runtime limitation: Deref trait implementation not implemented - needs [RUNTIME-876] ticket"]
fn test_sqlite_1023_deref_trait() {
let result = execute_program(
r"
struct MyBox<T>(T);
impl<T> Deref for MyBox<T> {
type Target = T;
fn deref(&self) -> &T {
&self.0
}
}
let b = MyBox(42);
let x = *b;
",
);
assert!(result.is_ok(), "Deref trait implementation should work");
}
#[test]
#[ignore = "Runtime limitation: Display trait implementation not implemented - needs [RUNTIME-877] ticket"]
fn test_sqlite_1024_display_trait() {
let result = execute_program(
r#"
struct Point { x: i32, y: i32 }
impl Display for Point {
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
write!(f, "({}, {})", self.x, self.y)
}
}
let p = Point { x: 1, y: 2 };
println!("{}", p);
"#,
);
assert!(result.is_ok(), "Display trait implementation should work");
}
#[test]
#[ignore = "Runtime limitation: PartialEq trait implementation not implemented - needs [RUNTIME-878] ticket"]
fn test_sqlite_1025_partial_eq_trait() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
impl PartialEq for Point {
fn eq(&self, other: &Self) -> bool {
self.x == other.x && self.y == other.y
}
}
let p1 = Point { x: 1, y: 2 };
let p2 = Point { x: 1, y: 2 };
let eq = p1 == p2;
",
);
assert!(result.is_ok(), "PartialEq trait implementation should work");
}
#[test]
#[ignore = "Runtime limitation: Drop trait basic not implemented - needs [RUNTIME-879] ticket"]
fn test_sqlite_1026_drop_basic() {
let result = execute_program(
r#"
struct Resource;
impl Drop for Resource {
fn drop(&mut self) {
println!("Dropping resource");
}
}
{
let r = Resource;
}
"#,
);
assert!(result.is_ok(), "Drop trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Drop order not implemented - needs [RUNTIME-880] ticket"]
fn test_sqlite_1027_drop_order() {
let result = execute_program(
r#"
struct First;
struct Second;
impl Drop for First {
fn drop(&mut self) { println!("First"); }
}
impl Drop for Second {
fn drop(&mut self) { println!("Second"); }
}
{
let _a = First;
let _b = Second;
}
"#,
);
assert!(result.is_ok(), "Drop order should work");
}
#[test]
#[ignore = "Runtime limitation: early drop not implemented - needs [RUNTIME-881] ticket"]
fn test_sqlite_1028_early_drop() {
let result = execute_program(
r#"
struct Resource;
impl Drop for Resource {
fn drop(&mut self) { println!("Dropped"); }
}
let r = Resource;
drop(r);
"#,
);
assert!(result.is_ok(), "early drop should work");
}
#[test]
#[ignore = "Runtime limitation: Drop with field not implemented - needs [RUNTIME-882] ticket"]
fn test_sqlite_1029_drop_field() {
let result = execute_program(
r#"
struct Inner;
impl Drop for Inner {
fn drop(&mut self) { println!("Inner dropped"); }
}
struct Outer {
inner: Inner,
}
{
let o = Outer { inner: Inner };
}
"#,
);
assert!(result.is_ok(), "Drop with field should work");
}
#[test]
#[ignore = "Runtime limitation: Drop with Vec not implemented - needs [RUNTIME-883] ticket"]
fn test_sqlite_1030_drop_vec() {
let result = execute_program(
r#"
struct Resource;
impl Drop for Resource {
fn drop(&mut self) { println!("Dropped"); }
}
{
let v = vec![Resource, Resource, Resource];
}
"#,
);
assert!(result.is_ok(), "Drop with Vec should work");
}
#[test]
#[ignore = "Runtime limitation: iterator map runtime not implemented - needs [RUNTIME-884] ticket"]
fn test_sqlite_1031_iter_map_runtime() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let doubled: Vec<_> = v.iter().map(|x| x * 2).collect();
",
);
assert!(result.is_ok(), "iterator map runtime should work");
}
#[test]
#[ignore = "Runtime limitation: iterator filter runtime not implemented - needs [RUNTIME-885] ticket"]
fn test_sqlite_1032_iter_filter_runtime() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4, 5];
let evens: Vec<_> = v.iter().filter(|x| *x % 2 == 0).collect();
",
);
assert!(result.is_ok(), "iterator filter runtime should work");
}
#[test]
#[ignore = "Runtime limitation: iterator fold runtime not implemented - needs [RUNTIME-886] ticket"]
fn test_sqlite_1033_iter_fold_runtime() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4];
let sum = v.iter().fold(0, |acc, x| acc + x);
",
);
assert!(result.is_ok(), "iterator fold runtime should work");
}
#[test]
#[ignore = "Runtime limitation: iterator chain runtime not implemented - needs [RUNTIME-887] ticket"]
fn test_sqlite_1034_iter_chain_runtime() {
let result = execute_program(
r"
let v1 = vec![1, 2, 3];
let v2 = vec![4, 5, 6];
let combined: Vec<_> = v1.iter().chain(v2.iter()).collect();
",
);
assert!(result.is_ok(), "iterator chain runtime should work");
}
#[test]
#[ignore = "Runtime limitation: iterator zip runtime not implemented - needs [RUNTIME-888] ticket"]
fn test_sqlite_1035_iter_zip_runtime() {
let result = execute_program(
r"
let v1 = vec![1, 2, 3];
let v2 = vec![4, 5, 6];
let pairs: Vec<_> = v1.iter().zip(v2.iter()).collect();
",
);
assert!(result.is_ok(), "iterator zip runtime should work");
}
#[test]
#[ignore = "Runtime limitation: module item access not implemented - needs [RUNTIME-889] ticket"]
fn test_sqlite_1036_module_item() {
let result = execute_program(
r"
mod math {
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
}
let result = math::add(1, 2);
",
);
assert!(result.is_ok(), "module item access should work");
}
#[test]
#[ignore = "Runtime limitation: module nested not implemented - needs [RUNTIME-890] ticket"]
fn test_sqlite_1037_module_nested() {
let result = execute_program(
r"
mod outer {
pub mod inner {
pub fn func() -> i32 { 42 }
}
}
let result = outer::inner::func();
",
);
assert!(result.is_ok(), "nested module should work");
}
#[test]
#[ignore = "Runtime limitation: use statement not implemented - needs [RUNTIME-891] ticket"]
fn test_sqlite_1038_use_statement() {
let result = execute_program(
r"
mod math {
pub fn add(a: i32, b: i32) -> i32 { a + b }
}
use math::add;
let result = add(1, 2);
",
);
assert!(result.is_ok(), "use statement should work");
}
#[test]
#[ignore = "Runtime limitation: pub use re-export not implemented - needs [RUNTIME-892] ticket"]
fn test_sqlite_1039_pub_use() {
let result = execute_program(
r"
mod inner {
pub fn func() -> i32 { 42 }
}
pub use inner::func;
let result = func();
",
);
assert!(result.is_ok(), "pub use re-export should work");
}
#[test]
#[ignore = "Runtime limitation: self in module path not implemented - needs [RUNTIME-893] ticket"]
fn test_sqlite_1040_module_self() {
let result = execute_program(
r"
mod parent {
pub fn outer() -> i32 { 1 }
pub mod child {
pub fn inner() -> i32 {
self::super::outer()
}
}
}
let result = parent::child::inner();
",
);
assert!(result.is_ok(), "self in module path should work");
}
#[test]
#[ignore = "Runtime limitation: struct field read not implemented - needs [RUNTIME-894] ticket"]
fn test_sqlite_1041_struct_field_read() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
let p = Point { x: 1, y: 2 };
let x = p.x;
",
);
assert!(result.is_ok(), "struct field read should work");
}
#[test]
#[ignore = "Runtime limitation: struct field write not implemented - needs [RUNTIME-895] ticket"]
fn test_sqlite_1042_struct_field_write() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
let mut p = Point { x: 1, y: 2 };
p.x = 10;
",
);
assert!(result.is_ok(), "struct field write should work");
}
#[test]
#[ignore = "Runtime limitation: nested struct access not implemented - needs [RUNTIME-896] ticket"]
fn test_sqlite_1043_nested_struct_access() {
let result = execute_program(
r"
struct Inner { value: i32 }
struct Outer { inner: Inner }
let o = Outer { inner: Inner { value: 42 } };
let v = o.inner.value;
",
);
assert!(result.is_ok(), "nested struct access should work");
}
#[test]
#[ignore = "Runtime limitation: tuple struct field access not implemented - needs [RUNTIME-897] ticket"]
fn test_sqlite_1044_tuple_struct_field() {
let result = execute_program(
r"
struct Color(i32, i32, i32);
let c = Color(255, 0, 0);
let r = c.0;
",
);
assert!(result.is_ok(), "tuple struct field access should work");
}
#[test]
#[ignore = "Runtime limitation: struct update syntax not implemented - needs [RUNTIME-898] ticket"]
fn test_sqlite_1045_struct_update() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
let p1 = Point { x: 1, y: 2 };
let p2 = Point { x: 10, ..p1 };
",
);
assert!(result.is_ok(), "struct update syntax should work");
}
#[test]
#[ignore = "Runtime limitation: enum unit variant match not implemented - needs [RUNTIME-899] ticket"]
fn test_sqlite_1046_enum_unit_match() {
let result = execute_program(
r"
enum Color { Red, Green, Blue }
let c = Color::Red;
match c {
Color::Red => 1,
_ => 0,
}
",
);
assert!(result.is_ok(), "enum unit variant match should work");
}
#[test]
#[ignore = "Runtime limitation: enum tuple variant match not implemented - needs [RUNTIME-900] ticket"]
fn test_sqlite_1047_enum_tuple_match() {
let result = execute_program(
r"
enum Message { Move(i32, i32) }
let m = Message::Move(10, 20);
match m {
Message::Move(x, y) => x + y,
}
",
);
assert!(result.is_ok(), "enum tuple variant match should work");
}
#[test]
#[ignore = "Runtime limitation: enum struct variant match not implemented - needs [RUNTIME-901] ticket"]
fn test_sqlite_1048_enum_struct_match() {
let result = execute_program(
r#"
enum Message { Write { text: String } }
let m = Message::Write { text: "hello" };
match m {
Message::Write { text } => text,
}
"#,
);
assert!(result.is_ok(), "enum struct variant match should work");
}
#[test]
#[ignore = "Runtime limitation: nested enum match not implemented - needs [RUNTIME-902] ticket"]
fn test_sqlite_1049_nested_enum_match() {
let result = execute_program(
r"
enum Result<T, E> { Ok(T), Err(E) }
enum Option<T> { Some(T), None }
let r = Result::Ok(Option::Some(42));
match r {
Result::Ok(Option::Some(n)) => n,
_ => 0,
}
",
);
assert!(result.is_ok(), "nested enum match should work");
}
#[test]
#[ignore = "Runtime limitation: wildcard enum match not implemented - needs [RUNTIME-903] ticket"]
fn test_sqlite_1050_wildcard_enum_match() {
let result = execute_program(
r"
enum Color { Red, Green, Blue, Yellow }
let c = Color::Yellow;
match c {
Color::Red => 1,
Color::Green => 2,
_ => 99,
}
",
);
assert!(result.is_ok(), "wildcard enum match should work");
}
#[test]
#[ignore = "Runtime limitation: array indexing runtime not implemented - needs [RUNTIME-904] ticket"]
fn test_sqlite_1051_array_index_runtime() {
let result = execute_program(
r"
let arr = [1, 2, 3, 4, 5];
let x = arr[2];
",
);
assert!(result.is_ok(), "array indexing runtime should work");
}
#[test]
#[ignore = "Runtime limitation: array length runtime not implemented - needs [RUNTIME-905] ticket"]
fn test_sqlite_1052_array_len_runtime() {
let result = execute_program(
r"
let arr = [1, 2, 3, 4, 5];
let len = arr.len();
",
);
assert!(result.is_ok(), "array length runtime should work");
}
#[test]
#[ignore = "Runtime limitation: Vec push runtime not implemented - needs [RUNTIME-906] ticket"]
fn test_sqlite_1053_vec_push_runtime() {
let result = execute_program(
r"
let mut v = Vec::new();
v.push(1);
v.push(2);
",
);
assert!(result.is_ok(), "Vec push runtime should work");
}
#[test]
#[ignore = "Runtime limitation: Vec pop runtime not implemented - needs [RUNTIME-907] ticket"]
fn test_sqlite_1054_vec_pop_runtime() {
let result = execute_program(
r"
let mut v = vec![1, 2, 3];
let x = v.pop();
",
);
assert!(result.is_ok(), "Vec pop runtime should work");
}
#[test]
#[ignore = "Runtime limitation: Vec iteration runtime not implemented - needs [RUNTIME-908] ticket"]
fn test_sqlite_1055_vec_iter_runtime() {
let result = execute_program(
r#"
let v = vec![1, 2, 3];
for x in v {
println!("{}", x);
}
"#,
);
assert!(result.is_ok(), "Vec iteration runtime should work");
}
#[test]
#[ignore = "Runtime limitation: string concatenation runtime not implemented - needs [RUNTIME-909] ticket"]
fn test_sqlite_1056_string_concat_runtime() {
let result = execute_program(
r#"
let s1 = String::from("hello");
let s2 = String::from(" world");
let s3 = s1 + &s2;
"#,
);
assert!(result.is_ok(), "string concatenation runtime should work");
}
#[test]
#[ignore = "Runtime limitation: string indexing runtime not implemented - needs [RUNTIME-910] ticket"]
fn test_sqlite_1057_string_index_runtime() {
let result = execute_program(
r#"
let s = "hello";
let slice = &s[0..2];
"#,
);
assert!(result.is_ok(), "string indexing runtime should work");
}
#[test]
#[ignore = "Runtime limitation: string len runtime not implemented - needs [RUNTIME-911] ticket"]
fn test_sqlite_1058_string_len_runtime() {
let result = execute_program(
r#"
let s = "hello";
let len = s.len();
"#,
);
assert!(result.is_ok(), "string len runtime should work");
}
#[test]
#[ignore = "Runtime limitation: string chars runtime not implemented - needs [RUNTIME-912] ticket"]
fn test_sqlite_1059_string_chars_runtime() {
let result = execute_program(
r#"
let s = "hello";
for c in s.chars() {
println!("{}", c);
}
"#,
);
assert!(result.is_ok(), "string chars runtime should work");
}
#[test]
#[ignore = "Runtime limitation: string format runtime not implemented - needs [RUNTIME-913] ticket"]
fn test_sqlite_1060_string_format_runtime() {
let result = execute_program(
r#"
let x = 42;
let s = format!("The answer is {}", x);
"#,
);
assert!(result.is_ok(), "string format runtime should work");
}
#[test]
#[ignore = "Runtime limitation: immutable borrow runtime not implemented - needs [RUNTIME-914] ticket"]
fn test_sqlite_1061_immutable_borrow() {
let result = execute_program(
r"
let x = 42;
let r = &x;
let y = *r;
",
);
assert!(result.is_ok(), "immutable borrow runtime should work");
}
#[test]
#[ignore = "Runtime limitation: mutable borrow runtime not implemented - needs [RUNTIME-915] ticket"]
fn test_sqlite_1062_mutable_borrow() {
let result = execute_program(
r"
let mut x = 42;
let r = &mut x;
*r = 43;
",
);
assert!(result.is_ok(), "mutable borrow runtime should work");
}
#[test]
#[ignore = "Runtime limitation: multiple immutable borrows not implemented - needs [RUNTIME-916] ticket"]
fn test_sqlite_1063_multiple_immut_borrow() {
let result = execute_program(
r"
let x = 42;
let r1 = &x;
let r2 = &x;
let y = *r1 + *r2;
",
);
assert!(result.is_ok(), "multiple immutable borrows should work");
}
#[test]
#[ignore = "Runtime limitation: borrow in function not implemented - needs [RUNTIME-917] ticket"]
fn test_sqlite_1064_borrow_in_fn() {
let result = execute_program(
r"
fn add_one(x: &mut i32) {
*x += 1;
}
let mut n = 42;
add_one(&mut n);
",
);
assert!(result.is_ok(), "borrow in function should work");
}
#[test]
#[ignore = "Runtime limitation: return reference not implemented - needs [RUNTIME-918] ticket"]
fn test_sqlite_1065_return_reference() {
let result = execute_program(
r"
fn first<'a>(arr: &'a [i32]) -> &'a i32 {
&arr[0]
}
let arr = [1, 2, 3];
let x = first(&arr);
",
);
assert!(result.is_ok(), "return reference should work");
}
#[test]
#[ignore = "Runtime limitation: tuple construction runtime not implemented - needs [RUNTIME-919] ticket"]
fn test_sqlite_1066_tuple_construct() {
let result = execute_program(
r"
let t = (1, 2, 3);
",
);
assert!(result.is_ok(), "tuple construction runtime should work");
}
#[test]
#[ignore = "Runtime limitation: tuple indexing runtime not implemented - needs [RUNTIME-920] ticket"]
fn test_sqlite_1067_tuple_index() {
let result = execute_program(
r"
let t = (1, 2, 3);
let x = t.0;
let y = t.1;
",
);
assert!(result.is_ok(), "tuple indexing runtime should work");
}
#[test]
#[ignore = "Runtime limitation: tuple destructuring runtime not implemented - needs [RUNTIME-921] ticket"]
fn test_sqlite_1068_tuple_destruct() {
let result = execute_program(
r"
let t = (1, 2, 3);
let (x, y, z) = t;
",
);
assert!(result.is_ok(), "tuple destructuring runtime should work");
}
#[test]
#[ignore = "Runtime limitation: nested tuple runtime not implemented - needs [RUNTIME-922] ticket"]
fn test_sqlite_1069_nested_tuple() {
let result = execute_program(
r"
let t = (1, (2, 3));
let (a, (b, c)) = t;
",
);
assert!(result.is_ok(), "nested tuple runtime should work");
}
#[test]
#[ignore = "Runtime limitation: tuple in function not implemented - needs [RUNTIME-923] ticket"]
fn test_sqlite_1070_tuple_in_fn() {
let result = execute_program(
r"
fn swap(pair: (i32, i32)) -> (i32, i32) {
let (a, b) = pair;
(b, a)
}
let result = swap((1, 2));
",
);
assert!(result.is_ok(), "tuple in function should work");
}
#[test]
#[ignore = "Runtime limitation: if expression runtime not implemented - needs [RUNTIME-924] ticket"]
fn test_sqlite_1071_if_expr_runtime() {
let result = execute_program(
r"
let x = if true { 1 } else { 0 };
",
);
assert!(result.is_ok(), "if expression runtime should work");
}
#[test]
#[ignore = "Runtime limitation: loop runtime not implemented - needs [RUNTIME-925] ticket"]
fn test_sqlite_1072_loop_runtime() {
let result = execute_program(
r"
let mut i = 0;
loop {
i += 1;
if i > 5 { break; }
}
",
);
assert!(result.is_ok(), "loop runtime should work");
}
#[test]
#[ignore = "Runtime limitation: while loop runtime not implemented - needs [RUNTIME-926] ticket"]
fn test_sqlite_1073_while_runtime() {
let result = execute_program(
r"
let mut i = 0;
while i < 5 {
i += 1;
}
",
);
assert!(result.is_ok(), "while loop runtime should work");
}
#[test]
#[ignore = "Runtime limitation: for loop runtime not implemented - needs [RUNTIME-927] ticket"]
fn test_sqlite_1074_for_runtime() {
let result = execute_program(
r#"
for i in 0..5 {
println!("{}", i);
}
"#,
);
assert!(result.is_ok(), "for loop runtime should work");
}
#[test]
#[ignore = "Runtime limitation: break with value runtime not implemented - needs [RUNTIME-928] ticket"]
fn test_sqlite_1075_break_value_runtime() {
let result = execute_program(
r"
let x = loop {
break 42;
};
",
);
assert!(result.is_ok(), "break with value runtime should work");
}
#[test]
#[ignore = "Runtime limitation: function call runtime not implemented - needs [RUNTIME-929] ticket"]
fn test_sqlite_1076_fn_call_runtime() {
let result = execute_program(
r"
fn add(a: i32, b: i32) -> i32 {
a + b
}
let result = add(1, 2);
",
);
assert!(result.is_ok(), "function call runtime should work");
}
#[test]
#[ignore = "Runtime limitation: recursive function not implemented - needs [RUNTIME-930] ticket"]
fn test_sqlite_1077_recursive_fn() {
let result = execute_program(
r"
fn factorial(n: i32) -> i32 {
if n <= 1 { 1 } else { n * factorial(n - 1) }
}
let result = factorial(5);
",
);
assert!(result.is_ok(), "recursive function should work");
}
#[test]
#[ignore = "Runtime limitation: closure call runtime not implemented - needs [RUNTIME-931] ticket"]
fn test_sqlite_1078_closure_call() {
let result = execute_program(
r"
let add = |a, b| a + b;
let result = add(1, 2);
",
);
assert!(result.is_ok(), "closure call runtime should work");
}
#[test]
#[ignore = "Runtime limitation: higher order function not implemented - needs [RUNTIME-932] ticket"]
fn test_sqlite_1079_higher_order_fn() {
let result = execute_program(
r"
fn apply<F: Fn(i32) -> i32>(f: F, x: i32) -> i32 {
f(x)
}
let result = apply(|n| n * 2, 21);
",
);
assert!(result.is_ok(), "higher order function should work");
}
#[test]
#[ignore = "Runtime limitation: function returning closure not implemented - needs [RUNTIME-933] ticket"]
fn test_sqlite_1080_fn_return_closure() {
let result = execute_program(
r"
fn make_adder(n: i32) -> impl Fn(i32) -> i32 {
move |x| x + n
}
let add5 = make_adder(5);
let result = add5(10);
",
);
assert!(result.is_ok(), "function returning closure should work");
}
#[test]
#[ignore = "Runtime limitation: Option Some runtime not implemented - needs [RUNTIME-934] ticket"]
fn test_sqlite_1081_option_some() {
let result = execute_program(
r"
let opt = Some(42);
match opt {
Some(n) => n,
None => 0,
}
",
);
assert!(result.is_ok(), "Option Some runtime should work");
}
#[test]
#[ignore = "Runtime limitation: Option None runtime not implemented - needs [RUNTIME-935] ticket"]
fn test_sqlite_1082_option_none() {
let result = execute_program(
r"
let opt: Option<i32> = None;
match opt {
Some(n) => n,
None => 0,
}
",
);
assert!(result.is_ok(), "Option None runtime should work");
}
#[test]
#[ignore = "Runtime limitation: Result Ok runtime not implemented - needs [RUNTIME-936] ticket"]
fn test_sqlite_1083_result_ok() {
let result = execute_program(
r"
let res: Result<i32, &str> = Ok(42);
match res {
Ok(n) => n,
Err(_) => 0,
}
",
);
assert!(result.is_ok(), "Result Ok runtime should work");
}
#[test]
#[ignore = "Runtime limitation: Result Err runtime not implemented - needs [RUNTIME-937] ticket"]
fn test_sqlite_1084_result_err() {
let result = execute_program(
r#"
let res: Result<i32, &str> = Err("error");
match res {
Ok(n) => n,
Err(_) => 0,
}
"#,
);
assert!(result.is_ok(), "Result Err runtime should work");
}
#[test]
#[ignore = "Runtime limitation: try operator runtime not implemented - needs [RUNTIME-938] ticket"]
fn test_sqlite_1085_try_operator() {
let result = execute_program(
r#"
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
if b == 0 {
Err("division by zero")
} else {
Ok(a / b)
}
}
fn compute() -> Result<i32, &'static str> {
let x = divide(10, 2)?;
Ok(x * 2)
}
let result = compute();
"#,
);
assert!(result.is_ok(), "try operator runtime should work");
}
#[test]
#[ignore = "Runtime limitation: integer addition runtime not implemented - needs [RUNTIME-939] ticket"]
fn test_sqlite_1086_int_add() {
let result = execute_program(
r"
let x = 1 + 2;
",
);
assert!(result.is_ok(), "integer addition runtime should work");
}
#[test]
#[ignore = "Runtime limitation: integer multiplication runtime not implemented - needs [RUNTIME-940] ticket"]
fn test_sqlite_1087_int_mul() {
let result = execute_program(
r"
let x = 3 * 4;
",
);
assert!(result.is_ok(), "integer multiplication runtime should work");
}
#[test]
#[ignore = "Runtime limitation: integer division runtime not implemented - needs [RUNTIME-941] ticket"]
fn test_sqlite_1088_int_div() {
let result = execute_program(
r"
let x = 10 / 2;
",
);
assert!(result.is_ok(), "integer division runtime should work");
}
#[test]
#[ignore = "Runtime limitation: integer modulo runtime not implemented - needs [RUNTIME-942] ticket"]
fn test_sqlite_1089_int_mod() {
let result = execute_program(
r"
let x = 10 % 3;
",
);
assert!(result.is_ok(), "integer modulo runtime should work");
}
#[test]
#[ignore = "Runtime limitation: comparison operations runtime not implemented - needs [RUNTIME-943] ticket"]
fn test_sqlite_1090_comparison() {
let result = execute_program(
r"
let a = 1 < 2;
let b = 3 > 2;
let c = 5 == 5;
let d = 4 != 3;
",
);
assert!(result.is_ok(), "comparison operations runtime should work");
}
#[test]
#[ignore = "Runtime limitation: concurrent execution not implemented - needs [RUNTIME-027] ticket"]
fn test_sqlite_152_concurrent_execution() {
let result = execute_program(
r"
spawn { 1 + 1 }
",
);
assert!(
result.is_ok() || result.is_err(),
"Concurrent execution should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: shared state protection not implemented - needs [RUNTIME-028] ticket"]
fn test_sqlite_153_race_condition() {
let result = execute_program(
r"
let mut counter = 0;
spawn { counter += 1; }
spawn { counter += 1; }
",
);
assert!(
result.is_ok() || result.is_err(),
"Race condition should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: deadlock detection not implemented - needs [RUNTIME-029] ticket"]
fn test_sqlite_154_deadlock() {
let result = execute_program(
r"
let lock1 = Mutex::new(0);
let lock2 = Mutex::new(0);
spawn {
let _a = lock1.lock();
let _b = lock2.lock();
}
spawn {
let _b = lock2.lock();
let _a = lock1.lock();
}
",
);
assert!(
result.is_ok() || result.is_err(),
"Deadlock should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: file I/O not implemented - needs [RUNTIME-030] ticket"]
fn test_sqlite_160_file_not_found() {
assert_runtime_error(
r#"fs_read("/nonexistent/file.txt")"#,
&["not found", "no such file", "does not exist"],
);
}
#[test]
#[ignore = "Runtime limitation: file permissions not implemented - needs [RUNTIME-031] ticket"]
fn test_sqlite_161_permission_denied() {
assert_runtime_error(
r#"fs_write("/root/protected.txt", "data")"#,
&[
"permission denied",
"access denied",
"insufficient permissions",
],
);
}
#[test]
#[ignore = "Runtime limitation: network I/O not implemented - needs [RUNTIME-032] ticket"]
fn test_sqlite_162_network_failure() {
assert_runtime_error(
r#"http_get("http://invalid.domain.xyz")"#,
&["connection failed", "network error", "timeout"],
);
}
#[test]
#[ignore = "Runtime limitation: database I/O not implemented - needs [RUNTIME-033] ticket"]
fn test_sqlite_163_database_error() {
assert_runtime_error(
r#"db_connect("invalid://connection/string")"#,
&["connection failed", "invalid", "error"],
);
}
#[test]
#[ignore = "Runtime limitation: resource limits not implemented - needs [RUNTIME-034] ticket"]
fn test_sqlite_164_resource_exhaustion() {
let result = execute_program(
r#"
let files = [];
for i in 1..10000 {
files.push(fs_open(format!("/tmp/file{}", i)));
}
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Resource exhaustion should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: trait checking not implemented - needs [RUNTIME-035] ticket"]
fn test_sqlite_170_missing_trait_impl() {
assert_runtime_error(
r"
trait Drawable {
fun draw();
}
struct Circle {}
let c = Circle {};
c.draw()
",
&["not implemented", "missing", "trait"],
);
}
#[test]
#[ignore = "Runtime limitation: generic type checking not enforced - needs [RUNTIME-036] ticket"]
fn test_sqlite_171_generic_type_mismatch() {
assert_runtime_error(
r"
fun identity<T>(x: T) -> T { x }
let result: String = identity(42);
",
&["type mismatch", "expected String", "got"],
);
}
#[test]
fn test_sqlite_172_unbounded_generic() {
let result = execute_program(
r"
fun process<T>(value: T) -> T {
value
}
process(42)
",
);
assert!(result.is_ok(), "Unbounded generic should work");
}
#[test]
#[ignore = "Runtime limitation: trait bounds not enforced - needs [RUNTIME-037] ticket"]
fn test_sqlite_173_trait_bound_violation() {
assert_runtime_error(
r"
fun compare<T: Ord>(a: T, b: T) -> bool {
a < b
}
compare(|x| x, |y| y)
",
&["trait bound", "not satisfied", "Ord"],
);
}
#[test]
#[ignore = "Runtime limitation: associated types not implemented - needs [RUNTIME-038] ticket"]
fn test_sqlite_174_associated_type_mismatch() {
assert_runtime_error(
r"
trait Container {
type Item;
fun get() -> Self::Item;
}
",
&["associated type", "mismatch", "not implemented"],
);
}
#[test]
#[ignore = "Runtime limitation: use-after-free detection not implemented - needs [RUNTIME-039] ticket"]
fn test_sqlite_180_use_after_free() {
let result = execute_program(
r"
let ptr = alloc(100);
free(ptr);
*ptr
",
);
assert!(
result.is_ok() || result.is_err(),
"Use-after-free should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: double-free detection not implemented - needs [RUNTIME-040] ticket"]
fn test_sqlite_181_double_free() {
let result = execute_program(
r"
let ptr = alloc(100);
free(ptr);
free(ptr)
",
);
assert!(
result.is_ok() || result.is_err(),
"Double free should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: null pointer checking not implemented - needs [RUNTIME-041] ticket"]
fn test_sqlite_182_null_pointer_deref() {
assert_runtime_error("*null_ptr", &["null pointer", "nil", "cannot dereference"]);
}
#[test]
#[ignore = "Runtime limitation: buffer overflow detection not implemented - needs [RUNTIME-042] ticket"]
fn test_sqlite_183_buffer_overflow() {
let result = execute_program(
r"
let buf = [0; 10];
buf[100] = 42
",
);
assert!(
result.is_ok() || result.is_err(),
"Buffer overflow should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: memory leak detection not implemented - needs [RUNTIME-043] ticket"]
fn test_sqlite_184_memory_leak() {
let result = execute_program(
r"
for i in 1..1000 {
let data = vec![0; 1000000];
}
",
);
assert!(result.is_ok(), "Memory leak should not panic");
}
#[test]
#[ignore = "Runtime limitation: dangling pointer detection not implemented - needs [RUNTIME-044] ticket"]
fn test_sqlite_185_dangling_pointer() {
let result = execute_program(
r"
fun get_ref() -> &i32 {
let x = 42;
&x
}
*get_ref()
",
);
assert!(
result.is_ok() || result.is_err(),
"Dangling pointer should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: uninitialized memory detection not implemented - needs [RUNTIME-045] ticket"]
fn test_sqlite_186_uninitialized_read() {
let result = execute_program(
r"
let x: i32;
x + 1
",
);
assert!(
result.is_ok() || result.is_err(),
"Uninitialized read should not panic"
);
}
#[test]
fn test_sqlite_187_stack_allocation_limit() {
let result = execute_program(
r"
let huge_array = [0; 1000000];
",
);
assert!(
result.is_ok() || result.is_err(),
"Large stack allocation should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: heap exhaustion handling not implemented - needs [RUNTIME-046] ticket"]
fn test_sqlite_188_heap_exhaustion() {
let result = execute_program(
r"
let mut data = [];
loop {
data.push(vec![0; 1000000]);
}
",
);
assert!(
result.is_ok() || result.is_err(),
"Heap exhaustion should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: pointer arithmetic not implemented - needs [RUNTIME-047] ticket"]
fn test_sqlite_189_pointer_arithmetic_overflow() {
let result = execute_program(
r"
let ptr = &mut 0;
ptr.offset(i64::MAX)
",
);
assert!(
result.is_ok() || result.is_err(),
"Pointer arithmetic overflow should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: alignment checking not implemented - needs [RUNTIME-048] ticket"]
fn test_sqlite_190_alignment_violation() {
let result = execute_program(
r"
let bytes = [0u8; 16];
let ptr = &bytes[1] as *const u64;
*ptr
",
);
assert!(
result.is_ok() || result.is_err(),
"Alignment violation should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: UTF-8 validation not implemented - needs [RUNTIME-049] ticket"]
fn test_sqlite_191_invalid_utf8() {
let result = execute_program(
r"
let bytes = [0xFF, 0xFF, 0xFF];
String::from_utf8(bytes)
",
);
assert!(
result.is_ok() || result.is_err(),
"Invalid UTF-8 should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: string indexing bounds checking - needs [RUNTIME-050] ticket"]
fn test_sqlite_192_string_index_oob() {
assert_runtime_error(
r#"let s = "hello"; s[100]"#,
&["out of bounds", "index", "range"],
);
}
#[test]
#[ignore = "Runtime limitation: string slice validation - needs [RUNTIME-051] ticket"]
fn test_sqlite_193_string_slice_invalid() {
let result = execute_program(
r#"
let s = "hello";
s[10..20]
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Invalid string slice should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: large string handling - needs [RUNTIME-052] ticket"]
fn test_sqlite_194_string_size_limit() {
let result = execute_program(
r#"
let s = "x".repeat(1_000_000_000);
s.len()
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Huge string allocation should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: regex safety not implemented - needs [RUNTIME-053] ticket"]
fn test_sqlite_195_regex_catastrophic_backtracking() {
let result = execute_program(
r#"
let pattern = "(a+)+b";
let text = "aaaaaaaaaaaaaaaaaaaaaaaaaaac";
regex_match(pattern, text)
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Regex backtracking should timeout"
);
}
#[test]
#[ignore = "Runtime limitation: subnormal handling - needs [RUNTIME-054] ticket"]
fn test_sqlite_196_subnormal_floats() {
let result = execute_program(
r"
let tiny = 1e-320;
tiny * tiny
",
);
assert!(result.is_ok(), "Subnormal floats should work");
}
#[test]
#[ignore = "Runtime limitation: signed zero handling - needs [RUNTIME-055] ticket"]
fn test_sqlite_197_signed_zero() {
let result = execute_program(
r"
let pos_zero = 0.0;
let neg_zero = -0.0;
pos_zero == neg_zero
",
);
assert!(result.is_ok(), "Signed zero should be handled");
}
#[test]
#[ignore = "Runtime limitation: NaN comparison semantics - needs [RUNTIME-056] ticket"]
fn test_sqlite_198_nan_equality() {
let result = execute_program(
r"
let nan1 = 0.0 / 0.0;
let nan2 = 0.0 / 0.0;
nan1 == nan2
",
);
assert!(result.is_ok(), "NaN comparisons should work");
}
#[test]
#[ignore = "Runtime limitation: infinity arithmetic - needs [RUNTIME-057] ticket"]
fn test_sqlite_199_infinity_arithmetic() {
let result = execute_program(
r"
let inf = 1.0 / 0.0;
inf - inf
",
);
assert!(result.is_ok(), "Infinity arithmetic should produce NaN");
}
#[test]
#[ignore = "Runtime limitation: integer overflow detection - needs [RUNTIME-058] ticket"]
fn test_sqlite_200_integer_overflow_contexts() {
let result = execute_program(
r"
let x = 9223372036854775807;
x + 1
",
);
assert!(
result.is_ok() || result.is_err(),
"Integer overflow should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: iterator safety - needs [RUNTIME-059] ticket"]
fn test_sqlite_201_iterator_invalidation() {
let result = execute_program(
r"
let arr = [1, 2, 3];
for x in arr {
arr.push(x + 1);
}
",
);
assert!(
result.is_ok() || result.is_err(),
"Iterator invalidation should not panic"
);
}
#[test]
#[ignore = "Runtime limitation: concurrent modification detection - needs [RUNTIME-060] ticket"]
fn test_sqlite_202_concurrent_modification() {
let result = execute_program(
r"
let shared = [1, 2, 3];
spawn {
shared.push(4);
}
for x in shared {
print(x);
}
",
);
assert!(
result.is_ok() || result.is_err(),
"Concurrent modification should be detected"
);
}
#[test]
#[ignore = "Runtime limitation: infinite iterator safety - needs [RUNTIME-061] ticket"]
fn test_sqlite_203_infinite_iterator() {
let result = execute_program(
r"
let infinite = (0..).map(|x| x * 2);
infinite.collect()
",
);
assert!(
result.is_ok() || result.is_err(),
"Infinite iterator should timeout or error"
);
}
#[test]
fn test_sqlite_204_empty_collection_ops() {
let result = execute_program(
r"
let empty = [];
empty.first()
",
);
assert!(
result.is_ok() || result.is_err(),
"Empty collection ops should handle gracefully"
);
}
#[test]
#[ignore = "Runtime limitation: nested collection limits - needs [RUNTIME-062] ticket"]
fn test_sqlite_205_deeply_nested_collections() {
let result = execute_program(
r"
let deep = [[[[[[[[[[42]]]]]]]]]];
deep[0][0][0][0][0][0][0][0][0][0]
",
);
assert!(result.is_ok(), "Deeply nested collections should work");
}
#[test]
#[ignore = "Runtime limitation: break validation - needs [RUNTIME-063] ticket"]
fn test_sqlite_206_break_outside_loop() {
let result = execute_program(
r"
fun broken() {
break;
}
",
);
assert!(result.is_err(), "Break outside loop should error");
}
#[test]
#[ignore = "Runtime limitation: continue validation - needs [RUNTIME-064] ticket"]
fn test_sqlite_207_continue_outside_loop() {
let result = execute_program(
r"
fun broken() {
continue;
}
",
);
assert!(result.is_err(), "Continue outside loop should error");
}
#[test]
#[ignore = "Runtime limitation: return validation - needs [RUNTIME-065] ticket"]
fn test_sqlite_208_return_top_level() {
let result = execute_program(
r"
return 42;
",
);
assert!(
result.is_ok() || result.is_err(),
"Top-level return should be handled"
);
}
#[test]
fn test_sqlite_209_deeply_nested_control() {
let result = execute_program(
r"
for i in [1, 2, 3] {
for j in [4, 5, 6] {
for k in [7, 8, 9] {
if i == 2 {
if j == 5 {
if k == 8 {
break;
}
}
}
}
}
}
",
);
assert!(result.is_ok(), "Deeply nested control flow should work");
}
#[test]
#[ignore = "Runtime limitation: labeled break validation - needs [RUNTIME-066] ticket"]
fn test_sqlite_210_invalid_loop_label() {
let result = execute_program(
r"
'outer: loop {
break 'nonexistent;
}
",
);
assert!(result.is_err(), "Invalid loop label should error");
}
#[test]
#[ignore = "Runtime limitation: panic handling - needs [RUNTIME-067] ticket"]
fn test_sqlite_211_panic_propagation() {
let result = execute_program(
r#"
fun inner() {
panic!("test panic");
}
fun outer() {
inner();
}
outer()
"#,
);
assert!(result.is_err(), "Panic should propagate and be catchable");
}
#[test]
#[ignore = "Runtime limitation: error propagation - needs [RUNTIME-068] ticket"]
fn test_sqlite_212_error_propagation_chains() {
let result = execute_program(
r#"
fun may_fail() -> Result<i32, String> {
Err("failed")
}
fun chain() -> Result<i32, String> {
let x = may_fail()?;
let y = may_fail()?;
Ok(x + y)
}
chain()
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Error propagation should work"
);
}
#[test]
#[ignore = "Runtime limitation: nested error handling - needs [RUNTIME-069] ticket"]
fn test_sqlite_213_nested_error_handling() {
let result = execute_program(
r#"
try {
try {
error("inner");
} catch e {
error("outer: " + e);
}
} catch e {
print(e);
}
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Nested error handling should work"
);
}
#[test]
#[ignore = "Runtime limitation: destructor error handling - needs [RUNTIME-070] ticket"]
fn test_sqlite_214_error_in_destructor() {
let result = execute_program(
r#"
class Resource {
drop() {
panic!("error in cleanup");
}
}
let r = Resource();
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Error in destructor should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: FFI unwinding - needs [RUNTIME-071] ticket"]
fn test_sqlite_215_ffi_unwinding() {
let result = execute_program(
r#"
extern fun native_fn();
try {
native_fn();
} catch e {
print("caught FFI error");
}
"#,
);
assert!(
result.is_ok() || result.is_err(),
"FFI unwinding should be safe"
);
}
#[test]
#[ignore = "Runtime limitation: function arity limits - needs [RUNTIME-072] ticket"]
fn test_sqlite_216_excessive_function_arity() {
let result = execute_program(
r"
fun many_params(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) {
a1 + a20
}
",
);
assert!(
result.is_ok() || result.is_err(),
"Excessive arity should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: AST depth limits - needs [RUNTIME-073] ticket"]
fn test_sqlite_217_ast_depth_limit() {
let result = execute_program("((((((((((42))))))))))");
assert!(result.is_ok(), "Deep nesting should work within limits");
}
#[test]
#[ignore = "Runtime limitation: identifier length limits - needs [RUNTIME-074] ticket"]
fn test_sqlite_218_long_identifiers() {
let result = execute_program(&format!("let {} = 42;", "x".repeat(10000)));
assert!(
result.is_ok() || result.is_err(),
"Long identifiers should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: local variable limits - needs [RUNTIME-075] ticket"]
fn test_sqlite_219_excessive_locals() {
let mut program = String::from("{\n");
for i in 0..10000 {
program.push_str(&format!("let x{i} = {i};\n"));
}
program.push_str("}\n");
let result = execute_program(&program);
assert!(
result.is_ok() || result.is_err(),
"Excessive locals should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: closure capture limits - needs [RUNTIME-076] ticket"]
fn test_sqlite_220_excessive_closure_captures() {
let result = execute_program(
r"
let vars = (0..1000).collect();
let closure = || {
vars.sum()
};
closure()
",
);
assert!(
result.is_ok() || result.is_err(),
"Excessive captures should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: numeric type safety - needs [RUNTIME-077] ticket"]
fn test_sqlite_221_numeric_type_confusion() {
let result = execute_program(
r"
let int: i32 = 42;
let float: f64 = 3.14;
int + float
",
);
assert!(
result.is_ok() || result.is_err(),
"Type confusion should be caught"
);
}
#[test]
#[ignore = "Runtime limitation: dynamic type validation - needs [RUNTIME-078] ticket"]
fn test_sqlite_222_runtime_type_change() {
let result = execute_program(
r#"
let x = 42;
x = "string";
x + 1
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Runtime type change should error"
);
}
#[test]
#[ignore = "Runtime limitation: trait object safety - needs [RUNTIME-079] ticket"]
fn test_sqlite_223_trait_object_type_safety() {
let result = execute_program(
r"
trait Animal { fun speak(); }
let obj: dyn Animal = Dog();
let dog: Dog = obj as Dog;
",
);
assert!(
result.is_ok() || result.is_err(),
"Trait object casts should be validated"
);
}
#[test]
#[ignore = "Runtime limitation: variance checking - needs [RUNTIME-080] ticket"]
fn test_sqlite_224_variance_violation() {
let result = execute_program(
r"
let array: Array<Animal> = Array<Dog>();
array.push(Cat())
",
);
assert!(
result.is_ok() || result.is_err(),
"Variance violations should be caught"
);
}
#[test]
#[ignore = "Runtime limitation: unsized type handling - needs [RUNTIME-081] ticket"]
fn test_sqlite_225_unsized_types() {
let result = execute_program(
r"
let slice: [i32] = [1, 2, 3];
",
);
assert!(
result.is_ok() || result.is_err(),
"Unsized types should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: race detection - needs [RUNTIME-082] ticket"]
fn test_sqlite_226_race_condition() {
let result = execute_program(
r"
let counter = 0;
for i in 0..100 {
spawn {
counter += 1;
}
}
thread::sleep(100);
counter
",
);
assert!(
result.is_ok() || result.is_err(),
"Race conditions should be detected"
);
}
#[test]
#[ignore = "Runtime limitation: thread pool limits - needs [RUNTIME-083] ticket"]
fn test_sqlite_227_thread_pool_exhaustion() {
let result = execute_program(
r"
for i in 0..100000 {
spawn {
thread::sleep(1000);
}
}
",
);
assert!(
result.is_ok() || result.is_err(),
"Thread pool exhaustion should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: channel safety - needs [RUNTIME-084] ticket"]
fn test_sqlite_228_channel_overflow() {
let result = execute_program(
r"
let (tx, rx) = channel(10);
for i in 0..1000 {
tx.send(i);
}
",
);
assert!(
result.is_ok() || result.is_err(),
"Channel overflow should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: atomic operation safety - needs [RUNTIME-085] ticket"]
fn test_sqlite_229_atomic_failures() {
let result = execute_program(
r"
let atomic = Atomic::new(0);
atomic.compare_exchange(1, 2)
",
);
assert!(
result.is_ok() || result.is_err(),
"Failed atomic ops should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: lock poisoning handling - needs [RUNTIME-086] ticket"]
fn test_sqlite_230_lock_poisoning() {
let result = execute_program(
r#"
let mutex = Mutex::new(0);
spawn {
let guard = mutex.lock();
panic!("poison the lock");
}
thread::sleep(10);
mutex.lock()
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Lock poisoning should be recoverable"
);
}
#[test]
#[ignore = "Runtime limitation: exhaustiveness checking - needs [RUNTIME-087] ticket"]
fn test_sqlite_231_non_exhaustive_match() {
let result = execute_program(
r#"
match 3 {
1 => "one",
2 => "two",
}
"#,
);
assert!(result.is_err(), "Non-exhaustive match should error");
}
#[test]
#[ignore = "Runtime limitation: unreachable pattern detection - needs [RUNTIME-088] ticket"]
fn test_sqlite_232_unreachable_patterns() {
let result = execute_program(
r#"
match x {
_ => "any",
1 => "one",
}
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Unreachable patterns should warn"
);
}
#[test]
#[ignore = "Runtime limitation: pattern side effects - needs [RUNTIME-089] ticket"]
fn test_sqlite_233_pattern_side_effects() {
let result = execute_program(
r#"
match get_value() {
x if (counter += 1; x > 0) => "positive",
_ => "other",
}
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Pattern side effects should be controlled"
);
}
#[test]
#[ignore = "Runtime limitation: deep pattern matching - needs [RUNTIME-090] ticket"]
fn test_sqlite_234_deep_pattern_matching() {
let result = execute_program(
r"
match nested {
Some(Ok(Some(Ok(value)))) => value,
_ => 0,
}
",
);
assert!(result.is_ok(), "Deep patterns should work");
}
#[test]
#[ignore = "Runtime limitation: large enum matching - needs [RUNTIME-091] ticket"]
fn test_sqlite_235_large_enum_match() {
let result = execute_program(
r"
enum Large { V1, V2, V3, ... V100 }
match large_val {
V1 => 1,
V2 => 2,
_ => 0,
}
",
);
assert!(
result.is_ok() || result.is_err(),
"Large enum matching should work"
);
}
#[test]
#[ignore = "Runtime limitation: macro expansion limits - needs [RUNTIME-092] ticket"]
fn test_sqlite_236_macro_expansion_depth() {
let result = execute_program(
r"
macro recursive() {
recursive!()
}
recursive!()
",
);
assert!(
result.is_ok() || result.is_err(),
"Macro recursion should be limited"
);
}
#[test]
#[ignore = "Runtime limitation: reflection safety - needs [RUNTIME-093] ticket"]
fn test_sqlite_237_reflection_privacy() {
let result = execute_program(
r#"
class Private {
private secret: i32;
}
let obj = Private { secret: 42 };
reflect::get_field(obj, "secret")
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Reflection should respect privacy"
);
}
#[test]
#[ignore = "Runtime limitation: eval safety - needs [RUNTIME-094] ticket"]
fn test_sqlite_238_eval_safety() {
let result = execute_program(
r#"
let code = "panic!('injected')";
eval(code)
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Dynamic eval should be sandboxed"
);
}
#[test]
#[ignore = "Runtime limitation: type introspection - needs [RUNTIME-095] ticket"]
fn test_sqlite_239_type_introspection() {
let result = execute_program(
r"
let x: dyn Any = 42;
x.type_name()
",
);
assert!(
result.is_ok() || result.is_err(),
"Type introspection should work"
);
}
#[test]
#[ignore = "Runtime limitation: const evaluation consistency - needs [RUNTIME-096] ticket"]
fn test_sqlite_240_const_eval_divergence() {
let result = execute_program(
r"
const COMPILE_TIME: i32 = 1 / 0;
let runtime = 1 / 0;
",
);
assert!(
result.is_ok() || result.is_err(),
"Const vs runtime should be consistent"
);
}
#[test]
#[ignore = "Runtime limitation: operator overloading not implemented - needs [RUNTIME-097] ticket"]
fn test_sqlite_241_operator_overloading() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
impl Add for Point {
fun add(self, other: Point) -> Point {
Point { x: self.x + other.x, y: self.y + other.y }
}
}
let p1 = Point { x: 1, y: 2 };
let p2 = Point { x: 3, y: 4 };
p1 + p2
",
);
assert!(result.is_ok(), "Operator overloading should work");
}
#[test]
#[ignore = "Runtime limitation: index operator overloading not implemented - needs [RUNTIME-098] ticket"]
fn test_sqlite_242_index_operator() {
let result = execute_program(
r"
struct Matrix { data: Vec<Vec<i32>> }
impl Index for Matrix {
fun index(self, idx: (i32, i32)) -> i32 {
self.data[idx.0][idx.1]
}
}
",
);
assert!(result.is_ok(), "Index operator should work");
}
#[test]
#[ignore = "Runtime limitation: comparison operator consistency not enforced - needs [RUNTIME-099] ticket"]
fn test_sqlite_243_comparison_consistency() {
let result = execute_program(
r"
let a = 5;
let b = 10;
(a < b) == !(a >= b)
",
);
assert!(result.is_ok(), "Comparison operators should be consistent");
}
#[test]
#[ignore = "Runtime limitation: bitwise operators not fully implemented - needs [RUNTIME-100] ticket"]
fn test_sqlite_244_bitwise_combinations() {
let result = execute_program(
r"
let x = 0b1010;
let y = 0b1100;
(x & y) | (x ^ y)
",
);
assert!(result.is_ok(), "Bitwise operations should work");
}
#[test]
fn test_sqlite_245_operator_precedence() {
let result = execute_program(
r"
let x = 2 + 3 * 4;
x == 14
",
);
assert!(result.is_ok(), "Operator precedence should be correct");
}
#[test]
#[ignore = "Runtime limitation: dangling reference detection not implemented - needs [RUNTIME-101] ticket"]
fn test_sqlite_246_dangling_reference() {
let result = execute_program(
r"
fun get_ref() -> &i32 {
let x = 42;
&x
}
let r = get_ref();
",
);
assert!(result.is_err(), "Dangling reference should error");
}
#[test]
#[ignore = "Runtime limitation: borrow checker not implemented - needs [RUNTIME-102] ticket"]
fn test_sqlite_247_multiple_mutable_borrows() {
let result = execute_program(
r"
let mut x = 42;
let r1 = &mut x;
let r2 = &mut x;
*r1 + *r2
",
);
assert!(result.is_err(), "Multiple mutable borrows should error");
}
#[test]
#[ignore = "Runtime limitation: lifetime inference not implemented - needs [RUNTIME-103] ticket"]
fn test_sqlite_248_lifetime_inference() {
let result = execute_program(
r"
fun longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() { x } else { y }
}
",
);
assert!(result.is_ok(), "Lifetime inference should work");
}
#[test]
#[ignore = "Runtime limitation: self-referential structures not validated - needs [RUNTIME-104] ticket"]
fn test_sqlite_249_self_referential() {
let result = execute_program(
r"
struct Node {
value: i32,
next: Option<&Node>
}
",
);
assert!(
result.is_ok() || result.is_err(),
"Self-referential structures should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: lifetime elision not implemented - needs [RUNTIME-105] ticket"]
fn test_sqlite_250_lifetime_elision() {
let result = execute_program(
r#"
fun first_word(s: &str) -> &str {
s.split_whitespace().next().unwrap_or("")
}
"#,
);
assert!(result.is_ok(), "Lifetime elision should work");
}
#[test]
#[ignore = "Runtime limitation: JSON serialization not implemented - needs [RUNTIME-106] ticket"]
fn test_sqlite_251_json_serialization() {
let result = execute_program(
r#"
let data = { name: "Alice", age: 30 };
JSON.stringify(data)
"#,
);
assert!(result.is_ok(), "JSON serialization should work");
}
#[test]
#[ignore = "Runtime limitation: circular reference detection in serialization - needs [RUNTIME-107] ticket"]
fn test_sqlite_252_circular_serialization() {
let result = execute_program(
r"
let a = { b: None };
let b = { a: Some(a) };
a.b = Some(b);
JSON.stringify(a)
",
);
assert!(
result.is_ok() || result.is_err(),
"Circular serialization should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: deserialization type checking not implemented - needs [RUNTIME-108] ticket"]
fn test_sqlite_253_deserialization_type_safety() {
let result = execute_program(
r#"
let json = '{"name": "Alice", "age": "thirty"}';
let person: Person = JSON.parse(json);
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Deserialization type safety should be enforced"
);
}
#[test]
#[ignore = "Runtime limitation: binary serialization not implemented - needs [RUNTIME-109] ticket"]
fn test_sqlite_254_binary_serialization() {
let result = execute_program(
r"
let data = [1, 2, 3, 4, 5];
let bytes = bincode::serialize(data);
bincode::deserialize(bytes)
",
);
assert!(result.is_ok(), "Binary serialization should work");
}
#[test]
#[ignore = "Runtime limitation: schema evolution not supported - needs [RUNTIME-110] ticket"]
fn test_sqlite_255_schema_evolution() {
let result = execute_program(
r#"
struct V1 { name: String }
struct V2 { name: String, age: i32 }
let v1_data = V1 { name: "Alice" };
let v2_data: V2 = migrate(v1_data);
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Schema evolution should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: tail call optimization not implemented - needs [RUNTIME-111] ticket"]
fn test_sqlite_256_tail_call_optimization() {
let result = execute_program(
r"
fun factorial(n: i32, acc: i32) -> i32 {
if n == 0 { acc } else { factorial(n - 1, n * acc) }
}
factorial(100000, 1)
",
);
assert!(
result.is_ok(),
"Tail call optimization should prevent stack overflow"
);
}
#[test]
#[ignore = "Runtime limitation: lazy evaluation not implemented - needs [RUNTIME-112] ticket"]
fn test_sqlite_257_lazy_evaluation() {
let result = execute_program(
r"
let expensive = lazy { expensive_computation() };
if false {
expensive.force()
}
",
);
assert!(result.is_ok(), "Lazy evaluation should defer computation");
}
#[test]
#[ignore = "Runtime limitation: memoization not implemented - needs [RUNTIME-113] ticket"]
fn test_sqlite_258_memoization() {
let result = execute_program(
r"
@memoize
fun fib(n: i32) -> i32 {
if n <= 1 { n } else { fib(n-1) + fib(n-2) }
}
fib(40)
",
);
assert!(result.is_ok(), "Memoization should improve performance");
}
#[test]
#[ignore = "Runtime limitation: constant folding not implemented - needs [RUNTIME-114] ticket"]
fn test_sqlite_259_constant_folding() {
let result = execute_program(
r"
let x = 2 + 3 * 4;
x
",
);
assert!(result.is_ok(), "Constant folding should work");
}
#[test]
#[ignore = "Runtime limitation: dead code elimination not implemented - needs [RUNTIME-115] ticket"]
fn test_sqlite_260_dead_code_elimination() {
let result = execute_program(
r"
fun unused() { expensive_computation() }
fun main() { 42 }
main()
",
);
assert!(result.is_ok(), "Dead code should be eliminated");
}
#[test]
#[ignore = "Runtime limitation: SQL injection prevention not implemented - needs [RUNTIME-116] ticket"]
fn test_sqlite_261_sql_injection() {
let result = execute_program(
r#"
let user_input = "'; DROP TABLE users; --";
db.query("SELECT * FROM users WHERE name = ?", [user_input])
"#,
);
assert!(result.is_ok(), "SQL injection should be prevented");
}
#[test]
#[ignore = "Runtime limitation: path traversal prevention not implemented - needs [RUNTIME-117] ticket"]
fn test_sqlite_262_path_traversal() {
let result = execute_program(
r#"
let filename = "../../etc/passwd";
fs::read(filename)
"#,
);
assert!(result.is_err(), "Path traversal should be prevented");
}
#[test]
#[ignore = "Runtime limitation: command injection prevention not implemented - needs [RUNTIME-118] ticket"]
fn test_sqlite_263_command_injection() {
let result = execute_program(
r#"
let user_input = "; rm -rf /";
shell_exec("echo " + user_input)
"#,
);
assert!(result.is_err(), "Command injection should be prevented");
}
#[test]
#[ignore = "Runtime limitation: XSS prevention not implemented - needs [RUNTIME-119] ticket"]
fn test_sqlite_264_xss_prevention() {
let result = execute_program(
r#"
let user_input = "<script>alert('XSS')</script>";
html_escape(user_input)
"#,
);
assert!(result.is_ok(), "XSS should be prevented via escaping");
}
#[test]
#[ignore = "Runtime limitation: security-critical overflow checking not enforced - needs [RUNTIME-120] ticket"]
fn test_sqlite_265_security_overflow() {
let result = execute_program(
r"
let size: u32 = 0xFFFFFFFF;
let allocation = size + 1;
",
);
assert!(result.is_err(), "Security-critical overflow should error");
}
#[test]
#[ignore = "Runtime limitation: regex backreferences not implemented - needs [RUNTIME-121] ticket"]
fn test_sqlite_266_regex_backreferences() {
let result = execute_program(
r#"
let pattern = r"(\w+)\s+\1";
let text = "hello hello";
regex_match(pattern, text)
"#,
);
assert!(result.is_ok(), "Regex backreferences should work");
}
#[test]
#[ignore = "Runtime limitation: regex lookahead/lookbehind not implemented - needs [RUNTIME-122] ticket"]
fn test_sqlite_267_regex_lookahead() {
let result = execute_program(
r#"
let pattern = r"\d+(?=\s*dollars)";
let text = "100 dollars";
regex_match(pattern, text)
"#,
);
assert!(result.is_ok(), "Regex lookahead should work");
}
#[test]
#[ignore = "Runtime limitation: regex named captures not implemented - needs [RUNTIME-123] ticket"]
fn test_sqlite_268_regex_named_captures() {
let result = execute_program(
r#"
let pattern = r"(?P<year>\d{4})-(?P<month>\d{2})";
let text = "2024-01";
let captures = regex_match(pattern, text);
captures.year
"#,
);
assert!(result.is_ok(), "Named captures should work");
}
#[test]
#[ignore = "Runtime limitation: type pattern matching not implemented - needs [RUNTIME-124] ticket"]
fn test_sqlite_269_type_pattern_matching() {
let result = execute_program(
r#"
match value {
x: i32 => "integer",
s: String => "string",
_ => "other"
}
"#,
);
assert!(result.is_ok(), "Type pattern matching should work");
}
#[test]
#[ignore = "Runtime limitation: active patterns not implemented - needs [RUNTIME-125] ticket"]
fn test_sqlite_270_active_patterns() {
let result = execute_program(
r#"
active Even(x) when x % 2 == 0;
match 4 {
Even(n) => "even",
_ => "odd"
}
"#,
);
assert!(result.is_ok(), "Active patterns should work");
}
#[test]
#[ignore = "Runtime limitation: arbitrary precision decimals not implemented - needs [RUNTIME-126] ticket"]
fn test_sqlite_271_decimal_precision() {
let result = execute_program(
r#"
let x = Decimal::from("0.1");
let y = Decimal::from("0.2");
x + y == Decimal::from("0.3")
"#,
);
assert!(result.is_ok(), "Decimal precision should be exact");
}
#[test]
#[ignore = "Runtime limitation: rounding mode control not implemented - needs [RUNTIME-127] ticket"]
fn test_sqlite_272_rounding_modes() {
let result = execute_program(
r"
let x = 2.5;
round_half_up(x) == 3.0
",
);
assert!(result.is_ok(), "Rounding modes should be consistent");
}
#[test]
fn test_sqlite_273_fp_cumulative_error() {
let result = execute_program(
r"
let sum = 0.0;
for i in 0..1000 {
sum += 0.1;
}
sum
",
);
assert!(result.is_ok(), "Floating point errors should accumulate");
}
#[test]
#[ignore = "Runtime limitation: big integers not implemented - needs [RUNTIME-128] ticket"]
fn test_sqlite_274_big_integers() {
let result = execute_program(
r#"
let big = BigInt::from("99999999999999999999999999999999");
big * big
"#,
);
assert!(result.is_ok(), "Big integer operations should work");
}
#[test]
#[ignore = "Runtime limitation: rational numbers not implemented - needs [RUNTIME-129] ticket"]
fn test_sqlite_275_rational_numbers() {
let result = execute_program(
r"
let a = Rational::new(1, 3);
let b = Rational::new(1, 6);
a + b == Rational::new(1, 2)
",
);
assert!(result.is_ok(), "Rational arithmetic should be exact");
}
#[test]
#[ignore = "Runtime limitation: generators not implemented - needs [RUNTIME-130] ticket"]
fn test_sqlite_276_generators() {
let result = execute_program(
r"
gen fun fibonacci() {
let (a, b) = (0, 1);
loop {
yield a;
(a, b) = (b, a + b);
}
}
let fib = fibonacci();
fib.take(10).collect()
",
);
assert!(result.is_ok(), "Generators should work");
}
#[test]
#[ignore = "Runtime limitation: async iterators not implemented - needs [RUNTIME-131] ticket"]
fn test_sqlite_277_async_iterators() {
let result = execute_program(
r"
async fun fetch_pages() {
for i in 0..10 {
yield await fetch_page(i);
}
}
",
);
assert!(result.is_ok(), "Async iterators should work");
}
#[test]
#[ignore = "Runtime limitation: iterator fusion not implemented - needs [RUNTIME-132] ticket"]
fn test_sqlite_278_iterator_fusion() {
let result = execute_program(
r"
let result = (0..1000)
.map(|x| x * 2)
.filter(|x| x > 10)
.map(|x| x + 1)
.collect();
",
);
assert!(result.is_ok(), "Iterator fusion should optimize chains");
}
#[test]
#[ignore = "Runtime limitation: peekable iterators not implemented - needs [RUNTIME-133] ticket"]
fn test_sqlite_279_peekable_iterator() {
let result = execute_program(
r"
let iter = [1, 2, 3].iter().peekable();
iter.peek()
",
);
assert!(result.is_ok(), "Peekable iterators should work");
}
#[test]
#[ignore = "Runtime limitation: bidirectional iterators not implemented - needs [RUNTIME-134] ticket"]
fn test_sqlite_280_bidirectional_iterator() {
let result = execute_program(
r"
let iter = [1, 2, 3].iter();
iter.next_back()
",
);
assert!(result.is_ok(), "Bidirectional iteration should work");
}
#[test]
#[ignore = "Runtime limitation: error context not implemented - needs [RUNTIME-135] ticket"]
fn test_sqlite_281_error_context() {
let result = execute_program(
r#"
fun inner() -> Result<i32, String> {
Err("inner error").context("in inner function")
}
fun outer() -> Result<i32, String> {
inner().context("in outer function")
}
outer()
"#,
);
assert!(result.is_err(), "Error context should be preserved");
}
#[test]
#[ignore = "Runtime limitation: stack traces not implemented - needs [RUNTIME-136] ticket"]
fn test_sqlite_282_stack_traces() {
let result = execute_program(
r#"
fun a() { b() }
fun b() { c() }
fun c() { panic!("error") }
a()
"#,
);
assert!(result.is_err(), "Stack traces should be available");
}
#[test]
#[ignore = "Runtime limitation: custom error types not implemented - needs [RUNTIME-137] ticket"]
fn test_sqlite_283_custom_errors() {
let result = execute_program(
r#"
struct MyError { message: String, code: i32 }
impl Error for MyError { }
Err(MyError { message: "failed", code: 404 })
"#,
);
assert!(result.is_err(), "Custom error types should work");
}
#[test]
#[ignore = "Runtime limitation: debug formatting not implemented - needs [RUNTIME-138] ticket"]
fn test_sqlite_284_debug_formatting() {
let result = execute_program(
r#"
struct Point { x: i32, y: i32 }
let p = Point { x: 1, y: 2 };
format!("{:?}", p)
"#,
);
assert!(result.is_ok(), "Debug formatting should work");
}
#[test]
fn test_sqlite_285_assertion_messages() {
let result = execute_program(
r#"
assert!(false, "custom message")
"#,
);
assert!(result.is_err(), "Assertions should provide messages");
}
#[test]
#[ignore = "Runtime limitation: timezone handling not implemented - needs [RUNTIME-139] ticket"]
fn test_sqlite_286_timezone_conversion() {
let result = execute_program(
r#"
let utc = DateTime::now_utc();
let local = utc.to_timezone("America/New_York");
"#,
);
assert!(result.is_ok(), "Timezone conversions should work");
}
#[test]
#[ignore = "Runtime limitation: DST handling not implemented - needs [RUNTIME-140] ticket"]
fn test_sqlite_287_dst_transitions() {
let result = execute_program(
r#"
let before_dst = DateTime::parse("2024-03-10 01:30:00");
let after_dst = before_dst + Duration::hours(1);
"#,
);
assert!(result.is_ok(), "DST transitions should be handled");
}
#[test]
#[ignore = "Runtime limitation: leap second handling not implemented - needs [RUNTIME-141] ticket"]
fn test_sqlite_288_leap_seconds() {
let result = execute_program(
r#"
let t = DateTime::parse("2024-06-30 23:59:60");
"#,
);
assert!(
result.is_ok() || result.is_err(),
"Leap seconds should be handled"
);
}
#[test]
#[ignore = "Runtime limitation: date arithmetic not fully implemented - needs [RUNTIME-142] ticket"]
fn test_sqlite_289_date_arithmetic() {
let result = execute_program(
r#"
let date = Date::parse("2024-01-31");
date + Duration::months(1)
"#,
);
assert!(
result.is_ok(),
"Date arithmetic should handle month boundaries"
);
}
#[test]
#[ignore = "Runtime limitation: ambiguous time parsing not handled - needs [RUNTIME-143] ticket"]
fn test_sqlite_290_time_parsing_ambiguity() {
let result = execute_program(
r#"
let t = Time::parse("12:00");
"#,
);
assert!(result.is_ok(), "Ambiguous time formats should be parsed");
}
#[test]
#[ignore = "Runtime limitation: circular reference detection not implemented - needs [RUNTIME-144] ticket"]
fn test_sqlite_291_circular_reference() {
let result = execute_program(
r"
struct Node { value: i32, next: Option<Box<Node>> }
let mut a = Node { value: 1, next: None };
let mut b = Node { value: 2, next: None };
a.next = Some(Box::new(b));
b.next = Some(Box::new(a)); // Circular reference
",
);
assert!(result.is_ok(), "Circular references should be detected");
}
#[test]
#[ignore = "Runtime limitation: closure memory leak detection not implemented - needs [RUNTIME-145] ticket"]
fn test_sqlite_292_closure_memory_leak() {
let result = execute_program(
r"
fun create_leak() {
let data = vec![1; 1000000];
|| data.len() // Closure captures large data
}
for _ in 0..1000 { create_leak(); }
",
);
assert!(result.is_ok(), "Closure memory leaks should be detected");
}
#[test]
#[ignore = "Runtime limitation: weak references not implemented - needs [RUNTIME-146] ticket"]
fn test_sqlite_293_weak_reference() {
let result = execute_program(
r"
let strong = Rc::new(42);
let weak = Rc::downgrade(&strong);
drop(strong);
assert!(weak.upgrade().is_none());
",
);
assert!(result.is_ok(), "Weak references should work");
}
#[test]
#[ignore = "Runtime limitation: Rc overflow detection not implemented - needs [RUNTIME-147] ticket"]
fn test_sqlite_294_rc_overflow() {
let result = execute_program(
r"
let data = Rc::new(42);
for _ in 0..usize::MAX { let _ = Rc::clone(&data); }
",
);
assert!(result.is_ok(), "Rc overflow should be detected");
}
#[test]
#[ignore = "Runtime limitation: arena allocation not implemented - needs [RUNTIME-148] ticket"]
fn test_sqlite_295_arena_allocation() {
let result = execute_program(
r"
let arena = Arena::new();
for i in 0..10000 {
arena.alloc(i);
}
",
);
assert!(result.is_ok(), "Arena allocation should work");
}
#[test]
#[ignore = "Runtime limitation: C FFI not implemented - needs [RUNTIME-149] ticket"]
fn test_sqlite_296_c_ffi_call() {
let result = execute_program(
r#"
extern "C" {
fun abs(x: i32) -> i32;
}
unsafe { abs(-42) }
"#,
);
assert!(result.is_ok(), "C FFI calls should work");
}
#[test]
#[ignore = "Runtime limitation: FFI null pointer handling not implemented - needs [RUNTIME-150] ticket"]
fn test_sqlite_297_ffi_null_pointer() {
let result = execute_program(
r#"
extern "C" {
fun process(ptr: *const i32) -> i32;
}
unsafe { process(std::ptr::null()) }
"#,
);
assert!(result.is_ok(), "FFI null pointers should be handled");
}
#[test]
#[ignore = "Runtime limitation: FFI type conversion not implemented - needs [RUNTIME-151] ticket"]
fn test_sqlite_298_ffi_type_conversion() {
let result = execute_program(
r#"
let rust_str = "hello";
let c_str = CString::new(rust_str).unwrap();
let ptr = c_str.as_ptr();
"#,
);
assert!(result.is_ok(), "FFI type conversions should work");
}
#[test]
#[ignore = "Runtime limitation: C-to-Ruchy callbacks not implemented - needs [RUNTIME-152] ticket"]
fn test_sqlite_299_c_callback() {
let result = execute_program(
r#"
extern "C" fun callback(x: i32) -> i32 { x * 2 }
register_callback(callback);
"#,
);
assert!(result.is_ok(), "C callbacks should work");
}
#[test]
#[ignore = "Runtime limitation: FFI memory ownership not implemented - needs [RUNTIME-153] ticket"]
fn test_sqlite_300_ffi_ownership() {
let result = execute_program(
r"
let boxed = Box::new(42);
let raw = Box::into_raw(boxed);
unsafe { let _ = Box::from_raw(raw); }
",
);
assert!(result.is_ok(), "FFI memory ownership should be tracked");
}
#[test]
#[ignore = "Runtime limitation: recursive macros not implemented - needs [RUNTIME-154] ticket"]
fn test_sqlite_301_recursive_macro() {
let result = execute_program(
r"
macro_rules! factorial {
(0) => { 1 };
($n:expr) => { $n * factorial!($n - 1) };
}
factorial!(5)
",
);
assert!(result.is_ok(), "Recursive macros should expand");
}
#[test]
#[ignore = "Runtime limitation: macro hygiene not implemented - needs [RUNTIME-155] ticket"]
fn test_sqlite_302_macro_hygiene() {
let result = execute_program(
r"
macro_rules! test_hygiene {
() => {
let x = 42;
};
}
let x = 10;
test_hygiene!();
assert_eq!(x, 10); // x should not be shadowed
",
);
assert!(result.is_ok(), "Macro hygiene should be maintained");
}
#[test]
#[ignore = "Runtime limitation: macro fragments not implemented - needs [RUNTIME-156] ticket"]
fn test_sqlite_303_macro_fragments() {
let result = execute_program(
r"
macro_rules! test_frag {
($e:expr) => { $e };
($i:ident) => { let $i = 42; };
($t:ty) => { let x: $t = 42; };
}
test_frag!(1 + 1);
",
);
assert!(result.is_ok(), "Macro fragments should work");
}
#[test]
#[ignore = "Runtime limitation: procedural macros not implemented - needs [RUNTIME-157] ticket"]
fn test_sqlite_304_procedural_macro() {
let result = execute_program(
r"
#[derive(Debug, Clone)]
struct Point { x: i32, y: i32 }
let p = Point { x: 1, y: 2 };
let q = p.clone();
",
);
assert!(result.is_ok(), "Procedural macros should work");
}
#[test]
#[ignore = "Runtime limitation: macro export not implemented - needs [RUNTIME-158] ticket"]
fn test_sqlite_305_macro_export() {
let result = execute_program(
r"
#[macro_export]
macro_rules! my_macro {
() => { 42 };
}
my_macro!()
",
);
assert!(result.is_ok(), "Macro export should work");
}
#[test]
#[ignore = "Runtime limitation: trait object downcasting not implemented - needs [RUNTIME-159] ticket"]
fn test_sqlite_306_trait_object_downcast() {
let result = execute_program(
r#"
trait Animal { fun speak(&self) -> String; }
struct Dog;
impl Animal for Dog { fun speak(&self) -> String { "Woof".to_string() } }
let animal: Box<dyn Animal> = Box::new(Dog);
let dog: Option<&Dog> = animal.downcast_ref::<Dog>();
"#,
);
assert!(result.is_ok(), "Trait object downcasting should work");
}
#[test]
#[ignore = "Runtime limitation: dynamic dispatch not optimized - needs [RUNTIME-160] ticket"]
fn test_sqlite_307_dynamic_dispatch() {
let result = execute_program(
r#"
trait Drawable { fun draw(&self); }
struct Circle;
impl Drawable for Circle { fun draw(&self) { println!("Circle"); } }
let obj: Box<dyn Drawable> = Box::new(Circle);
obj.draw();
"#,
);
assert!(result.is_ok(), "Dynamic dispatch should work");
}
#[test]
#[ignore = "Runtime limitation: trait objects with associated types not implemented - needs [RUNTIME-161] ticket"]
fn test_sqlite_308_trait_object_assoc_type() {
let result = execute_program(
r"
trait Container {
type Item;
fun get(&self) -> Self::Item;
}
let c: Box<dyn Container<Item=i32>> = Box::new(MyContainer);
",
);
assert!(
result.is_ok(),
"Trait objects with associated types should work"
);
}
#[test]
#[ignore = "Runtime limitation: multiple trait objects not implemented - needs [RUNTIME-162] ticket"]
fn test_sqlite_309_multiple_trait_objects() {
let result = execute_program(
r"
trait A { fun a(&self); }
trait B { fun b(&self); }
struct AB;
impl A for AB { fun a(&self) {} }
impl B for AB { fun b(&self) {} }
let obj: Box<dyn A + B> = Box::new(AB);
",
);
assert!(result.is_ok(), "Multiple trait objects should work");
}
#[test]
#[ignore = "Runtime limitation: trait object size query not implemented - needs [RUNTIME-163] ticket"]
fn test_sqlite_310_trait_object_size() {
let result = execute_program(
r"
trait MyTrait {}
let size = std::mem::size_of::<Box<dyn MyTrait>>();
assert!(size > 0);
",
);
assert!(result.is_ok(), "Trait object size should be queryable");
}
#[test]
#[ignore = "Runtime limitation: PhantomData not implemented - needs [RUNTIME-164] ticket"]
fn test_sqlite_311_phantom_data() {
let result = execute_program(
r"
use std::marker::PhantomData;
struct Wrapper<T> {
_marker: PhantomData<T>,
value: i32,
}
let w: Wrapper<String> = Wrapper { _marker: PhantomData, value: 42 };
",
);
assert!(result.is_ok(), "PhantomData should work");
}
#[test]
#[ignore = "Runtime limitation: ZST optimization not implemented - needs [RUNTIME-165] ticket"]
fn test_sqlite_312_zst_optimization() {
let result = execute_program(
r"
struct Empty;
let size = std::mem::size_of::<Empty>();
assert_eq!(size, 0);
let arr = [Empty; 1000];
assert_eq!(std::mem::size_of_val(&arr), 0);
",
);
assert!(result.is_ok(), "ZST optimization should work");
}
#[test]
#[ignore = "Runtime limitation: unit-like structs not optimized - needs [RUNTIME-166] ticket"]
fn test_sqlite_313_unit_like_struct() {
let result = execute_program(
r"
struct Marker;
impl Marker {
fun new() -> Self { Marker }
}
let m = Marker::new();
",
);
assert!(result.is_ok(), "Unit-like structs should work");
}
#[test]
#[ignore = "Runtime limitation: phantom type variance not implemented - needs [RUNTIME-167] ticket"]
fn test_sqlite_314_phantom_variance() {
let result = execute_program(
r"
use std::marker::PhantomData;
struct Covariant<T> {
_marker: PhantomData<fn() -> T>,
}
let _: Covariant<&'static str> = Covariant { _marker: PhantomData };
",
);
assert!(result.is_ok(), "Phantom type variance should work");
}
#[test]
#[ignore = "Runtime limitation: const generics with ZST not optimized - needs [RUNTIME-168] ticket"]
fn test_sqlite_315_const_generics_zst() {
let result = execute_program(
r"
struct Array<T, const N: usize> {
data: [T; N],
}
let arr: Array<(), 1000> = Array { data: [()] };
assert_eq!(std::mem::size_of_val(&arr), 0);
",
);
assert!(
result.is_ok(),
"Const generics with ZST should be optimized"
);
}
#[test]
#[ignore = "Runtime limitation: Pin not implemented - needs [RUNTIME-169] ticket"]
fn test_sqlite_316_pin_construction() {
let result = execute_program(
r"
use std::pin::Pin;
let value = 42;
let pinned = Pin::new(&value);
",
);
assert!(result.is_ok(), "Pin construction should work");
}
#[test]
#[ignore = "Runtime limitation: self-referential structs not supported - needs [RUNTIME-170] ticket"]
fn test_sqlite_317_self_referential() {
let result = execute_program(
r#"
struct SelfRef {
data: String,
ptr: *const String,
}
let s = SelfRef { data: "hello".to_string(), ptr: std::ptr::null() };
let pinned = Box::pin(s);
"#,
);
assert!(
result.is_ok(),
"Self-referential structs should work with Pin"
);
}
#[test]
#[ignore = "Runtime limitation: Unpin trait not implemented - needs [RUNTIME-171] ticket"]
fn test_sqlite_318_unpin_trait() {
let result = execute_program(
r"
fun require_unpin<T: Unpin>(x: T) {}
require_unpin(42);
",
);
assert!(result.is_ok(), "Unpin trait should work");
}
#[test]
#[ignore = "Runtime limitation: Pin projection not implemented - needs [RUNTIME-172] ticket"]
fn test_sqlite_319_pin_projection() {
let result = execute_program(
r"
use std::pin::Pin;
struct Wrapper { field: i32 }
let mut pinned = Box::pin(Wrapper { field: 42 });
let field_pin: Pin<&mut i32> = Pin::new(&mut pinned.field);
",
);
assert!(result.is_ok(), "Pin projection should work");
}
#[test]
#[ignore = "Runtime limitation: !Unpin marker not implemented - needs [RUNTIME-173] ticket"]
fn test_sqlite_320_not_unpin() {
let result = execute_program(
r"
use std::marker::PhantomPinned;
struct NotUnpin {
_pin: PhantomPinned,
}
let x = NotUnpin { _pin: PhantomPinned };
",
);
assert!(result.is_ok(), "!Unpin marker should work");
}
#[test]
#[ignore = "Runtime limitation: trait specialization not implemented - needs [RUNTIME-174] ticket"]
fn test_sqlite_321_trait_specialization() {
let result = execute_program(
r#"
trait MyTrait {
fun process(&self) -> String;
}
impl<T> MyTrait for T {
default fun process(&self) -> String { "default".to_string() }
}
impl MyTrait for i32 {
fun process(&self) -> String { "specialized".to_string() }
}
"#,
);
assert!(result.is_ok(), "Trait specialization should work");
}
#[test]
#[ignore = "Runtime limitation: min_specialization not implemented - needs [RUNTIME-175] ticket"]
fn test_sqlite_322_min_specialization() {
let result = execute_program(
r"
trait Default {
fun get() -> i32 { 0 }
}
impl Default for String {
fun get() -> i32 { 42 }
}
",
);
assert!(result.is_ok(), "Min specialization should work");
}
#[test]
#[ignore = "Runtime limitation: overlapping trait impls not detected - needs [RUNTIME-176] ticket"]
fn test_sqlite_323_overlapping_impls() {
let result = execute_program(
r"
trait MyTrait {}
impl<T> MyTrait for Vec<T> {}
impl MyTrait for Vec<i32> {} // Should conflict
",
);
assert!(
result.is_err(),
"Overlapping trait implementations should be detected"
);
}
#[test]
#[ignore = "Runtime limitation: specialization with assoc types not implemented - needs [RUNTIME-177] ticket"]
fn test_sqlite_324_specialization_assoc_types() {
let result = execute_program(
r#"
trait Convert {
type Output;
fun convert(&self) -> Self::Output;
}
impl<T> Convert for T {
default type Output = String;
default fun convert(&self) -> Self::Output { "default".to_string() }
}
"#,
);
assert!(
result.is_ok(),
"Specialization with associated types should work"
);
}
#[test]
#[ignore = "Runtime limitation: negative trait bounds not implemented - needs [RUNTIME-178] ticket"]
fn test_sqlite_325_negative_bounds() {
let result = execute_program(
r"
fun require_not_clone<T: !Clone>(x: T) {}
struct NotCloneable;
require_not_clone(NotCloneable);
",
);
assert!(result.is_ok(), "Negative trait bounds should work");
}
#[test]
#[ignore = "Runtime limitation: inline assembly not implemented - needs [RUNTIME-179] ticket"]
fn test_sqlite_326_inline_asm() {
let result = execute_program(
r#"
unsafe {
let x: i32;
asm!("mov {}, 42", out(reg) x);
assert_eq!(x, 42);
}
"#,
);
assert!(result.is_ok(), "Inline assembly should work");
}
#[test]
#[ignore = "Runtime limitation: named asm operands not implemented - needs [RUNTIME-180] ticket"]
fn test_sqlite_327_named_asm_operands() {
let result = execute_program(
r#"
unsafe {
let result: i32;
asm!("add {result}, {a}, {b}",
a = in(reg) 10,
b = in(reg) 32,
result = out(reg) result
);
}
"#,
);
assert!(result.is_ok(), "Named asm operands should work");
}
#[test]
#[ignore = "Runtime limitation: asm clobbers not implemented - needs [RUNTIME-181] ticket"]
fn test_sqlite_328_asm_clobbers() {
let result = execute_program(
r#"
unsafe {
asm!("nop", clobber_abi("C"));
}
"#,
);
assert!(result.is_ok(), "Assembly clobbers should work");
}
#[test]
#[ignore = "Runtime limitation: asm options not implemented - needs [RUNTIME-182] ticket"]
fn test_sqlite_329_asm_options() {
let result = execute_program(
r#"
unsafe {
asm!("nop", options(nostack, preserves_flags));
}
"#,
);
assert!(result.is_ok(), "Assembly options should work");
}
#[test]
#[ignore = "Runtime limitation: global_asm not implemented - needs [RUNTIME-183] ticket"]
fn test_sqlite_330_global_asm() {
let result = execute_program(
r#"
global_asm!("
.global my_func
my_func:
ret
");
"#,
);
assert!(result.is_ok(), "Global assembly should work");
}
#[test]
#[ignore = "Runtime limitation: custom allocators not implemented - needs [RUNTIME-184] ticket"]
fn test_sqlite_331_custom_allocator() {
let result = execute_program(
r"
use std::alloc::{GlobalAlloc, Layout};
struct MyAllocator;
unsafe impl GlobalAlloc for MyAllocator {
unsafe fun alloc(&self, layout: Layout) -> *mut u8 {
std::alloc::System.alloc(layout)
}
unsafe fun dealloc(&self, ptr: *mut u8, layout: Layout) {
std::alloc::System.dealloc(ptr, layout)
}
}
",
);
assert!(result.is_ok(), "Custom allocators should work");
}
#[test]
#[ignore = "Runtime limitation: Vec with allocator not implemented - needs [RUNTIME-185] ticket"]
fn test_sqlite_332_vec_with_allocator() {
let result = execute_program(
r"
use std::alloc::System;
let vec: Vec<i32, System> = Vec::new_in(System);
",
);
assert!(result.is_ok(), "Vec with custom allocator should work");
}
#[test]
#[ignore = "Runtime limitation: allocation error handling not implemented - needs [RUNTIME-186] ticket"]
fn test_sqlite_333_allocation_error() {
let result = execute_program(
r#"
use std::alloc::{Layout, alloc};
let layout = Layout::from_size_align(usize::MAX, 8).unwrap();
let ptr = unsafe { alloc(layout) };
assert!(ptr.is_null(), "Allocation should fail gracefully");
"#,
);
assert!(result.is_ok(), "Allocation errors should be handled");
}
#[test]
#[ignore = "Runtime limitation: allocator trait bounds not implemented - needs [RUNTIME-187] ticket"]
fn test_sqlite_334_allocator_bounds() {
let result = execute_program(
r"
fun with_allocator<A: Allocator>(alloc: A) {
let vec = Vec::new_in(alloc);
}
",
);
assert!(result.is_ok(), "Allocator trait bounds should work");
}
#[test]
#[ignore = "Runtime limitation: global_allocator attribute not implemented - needs [RUNTIME-188] ticket"]
fn test_sqlite_335_global_allocator_attr() {
let result = execute_program(
r"
use std::alloc::System;
#[global_allocator]
static GLOBAL: System = System;
",
);
assert!(result.is_ok(), "Global allocator attribute should work");
}
#[test]
#[ignore = "Runtime limitation: const fn not implemented - needs [RUNTIME-189] ticket"]
fn test_sqlite_336_const_fn() {
let result = execute_program(
r"
const fun factorial(n: u32) -> u32 {
if n == 0 { 1 } else { n * factorial(n - 1) }
}
const RESULT: u32 = factorial(5);
assert_eq!(RESULT, 120);
",
);
assert!(
result.is_ok(),
"Const functions should evaluate at compile time"
);
}
#[test]
#[ignore = "Runtime limitation: const generics evaluation not implemented - needs [RUNTIME-190] ticket"]
fn test_sqlite_337_const_generics_eval() {
let result = execute_program(
r"
const fun double(n: usize) -> usize { n * 2 }
struct Array<const N: usize> {
data: [i32; double(N)],
}
",
);
assert!(
result.is_ok(),
"Const generics should be evaluated at compile time"
);
}
#[test]
#[ignore = "Runtime limitation: const trait methods not implemented - needs [RUNTIME-191] ticket"]
fn test_sqlite_338_const_trait_methods() {
let result = execute_program(
r"
trait Computable {
const fun compute(&self) -> i32;
}
impl Computable for i32 {
const fun compute(&self) -> i32 { *self * 2 }
}
",
);
assert!(result.is_ok(), "Const trait methods should work");
}
#[test]
#[ignore = "Runtime limitation: const panic not implemented - needs [RUNTIME-192] ticket"]
fn test_sqlite_339_const_panic() {
let result = execute_program(
r#"
const fun check(x: i32) -> i32 {
if x < 0 { panic!("Negative value") }
x
}
const VALUE: i32 = check(10);
"#,
);
assert!(result.is_ok(), "Const panic should work at compile time");
}
#[test]
#[ignore = "Runtime limitation: const loops not implemented - needs [RUNTIME-193] ticket"]
fn test_sqlite_340_const_loops() {
let result = execute_program(
r"
const fun sum_to(n: i32) -> i32 {
let mut sum = 0;
let mut i = 0;
while i <= n {
sum += i;
i += 1;
}
sum
}
const SUM: i32 = sum_to(100);
",
);
assert!(
result.is_ok(),
"Const loops should evaluate at compile time"
);
}
#[test]
#[ignore = "Runtime limitation: implicit type coercion not implemented - needs [RUNTIME-194] ticket"]
fn test_sqlite_341_implicit_coercion() {
let result = execute_program(
r"
let x: i32 = 42;
let y: i64 = x; // Should coerce i32 to i64
",
);
assert!(result.is_ok(), "Implicit type coercion should work");
}
#[test]
#[ignore = "Runtime limitation: explicit casting not fully implemented - needs [RUNTIME-195] ticket"]
fn test_sqlite_342_explicit_cast() {
let result = execute_program(
r"
let x = 42i64;
let y = x as i32;
",
);
assert!(result.is_ok(), "Explicit casting should work");
}
#[test]
#[ignore = "Runtime limitation: pointer casting not implemented - needs [RUNTIME-196] ticket"]
fn test_sqlite_343_pointer_cast() {
let result = execute_program(
r"
let x = 42;
let ptr = &x as *const i32;
let addr = ptr as usize;
",
);
assert!(result.is_ok(), "Pointer casting should work");
}
#[test]
#[ignore = "Runtime limitation: transmute not implemented - needs [RUNTIME-197] ticket"]
fn test_sqlite_344_transmute() {
let result = execute_program(
r"
unsafe {
let x: f32 = 1.0;
let y: u32 = std::mem::transmute(x);
}
",
);
assert!(result.is_ok(), "Transmute should work");
}
#[test]
#[ignore = "Runtime limitation: reference to pointer cast not implemented - needs [RUNTIME-198] ticket"]
fn test_sqlite_345_ref_to_ptr() {
let result = execute_program(
r"
let x = 42;
let ptr: *const i32 = &x;
",
);
assert!(result.is_ok(), "Reference to pointer cast should work");
}
#[test]
#[ignore = "Runtime limitation: deref coercion not implemented - needs [RUNTIME-199] ticket"]
fn test_sqlite_346_deref_coercion() {
let result = execute_program(
r#"
let s = String::from("hello");
let slice: &str = &s; // Deref coercion
"#,
);
assert!(result.is_ok(), "Deref coercion should work");
}
#[test]
#[ignore = "Runtime limitation: Box deref not fully implemented - needs [RUNTIME-200] ticket"]
fn test_sqlite_347_box_deref() {
let result = execute_program(
r"
let boxed = Box::new(42);
let value = *boxed;
",
);
assert!(result.is_ok(), "Box deref should work");
}
#[test]
#[ignore = "Runtime limitation: Rc deref not implemented - needs [RUNTIME-201] ticket"]
fn test_sqlite_348_rc_deref() {
let result = execute_program(
r"
let rc = Rc::new(42);
let value = *rc;
",
);
assert!(result.is_ok(), "Rc deref should work");
}
#[test]
#[ignore = "Runtime limitation: Arc deref not implemented - needs [RUNTIME-202] ticket"]
fn test_sqlite_349_arc_deref() {
let result = execute_program(
r"
let arc = Arc::new(42);
let value = *arc;
",
);
assert!(result.is_ok(), "Arc deref should work");
}
#[test]
#[ignore = "Runtime limitation: custom Deref not implemented - needs [RUNTIME-203] ticket"]
fn test_sqlite_350_custom_deref() {
let result = execute_program(
r#"
struct Wrapper(String);
impl Deref for Wrapper {
type Target = String;
fun deref(&self) -> &String { &self.0 }
}
let w = Wrapper("hello".to_string());
let len = w.len(); // Deref coercion
"#,
);
assert!(result.is_ok(), "Custom Deref should work");
}
#[test]
#[ignore = "Runtime limitation: Drop trait not implemented - needs [RUNTIME-204] ticket"]
fn test_sqlite_351_drop_trait() {
let result = execute_program(
r#"
struct Resource;
impl Drop for Resource {
fun drop(&mut self) {
println!("Dropping resource");
}
}
{ let _r = Resource; }
"#,
);
assert!(result.is_ok(), "Drop trait should work");
}
#[test]
#[ignore = "Runtime limitation: drop order not guaranteed - needs [RUNTIME-205] ticket"]
fn test_sqlite_352_drop_order() {
let result = execute_program(
r#"
let _a = Resource::new("a");
let _b = Resource::new("b");
// b should drop before a
"#,
);
assert!(result.is_ok(), "Drop order should be correct");
}
#[test]
#[ignore = "Runtime limitation: manual drop not implemented - needs [RUNTIME-206] ticket"]
fn test_sqlite_353_manual_drop() {
let result = execute_program(
r"
let x = Box::new(42);
drop(x);
// x is now invalid
",
);
assert!(result.is_ok(), "Manual drop should work");
}
#[test]
#[ignore = "Runtime limitation: Copy/Drop conflict not checked - needs [RUNTIME-207] ticket"]
fn test_sqlite_354_copy_drop_conflict() {
let result = execute_program(
r"
struct Invalid;
impl Copy for Invalid {}
impl Drop for Invalid { fun drop(&mut self) {} } // Should error
",
);
assert!(result.is_err(), "Copy and Drop should conflict");
}
#[test]
#[ignore = "Runtime limitation: drop flag optimization not implemented - needs [RUNTIME-208] ticket"]
fn test_sqlite_355_drop_flag() {
let result = execute_program(
r"
let x = Some(Resource::new());
if condition {
drop(x);
}
// x may or may not be dropped
",
);
assert!(result.is_ok(), "Drop flag optimization should work");
}
#[test]
#[ignore = "Runtime limitation: complex match guards not implemented - needs [RUNTIME-209] ticket"]
fn test_sqlite_356_complex_match_guard() {
let result = execute_program(
r#"
match value {
x if x > 0 && x < 10 => "small",
x if x >= 10 => "large",
_ => "other",
}
"#,
);
assert!(result.is_ok(), "Complex match guards should work");
}
#[test]
#[ignore = "Runtime limitation: or-patterns not implemented - needs [RUNTIME-210] ticket"]
fn test_sqlite_357_or_patterns() {
let result = execute_program(
r#"
match x {
1 | 2 | 3 => "low",
4 | 5 | 6 => "mid",
_ => "high",
}
"#,
);
assert!(result.is_ok(), "Or-patterns should work");
}
#[test]
#[ignore = "Runtime limitation: binding modes not implemented - needs [RUNTIME-211] ticket"]
fn test_sqlite_358_binding_modes() {
let result = execute_program(
r"
let ref x = 42;
let ref mut y = vec![1, 2, 3];
",
);
assert!(result.is_ok(), "Binding modes should work");
}
#[test]
#[ignore = "Runtime limitation: @ bindings not implemented - needs [RUNTIME-212] ticket"]
fn test_sqlite_359_at_bindings() {
let result = execute_program(
r#"
match value {
x @ 1..=5 => println!("Got {}", x),
_ => println!("Other"),
}
"#,
);
assert!(result.is_ok(), "@ bindings should work");
}
#[test]
#[ignore = "Runtime limitation: slice patterns not implemented - needs [RUNTIME-213] ticket"]
fn test_sqlite_360_slice_patterns() {
let result = execute_program(
r"
match slice {
[first, .., last] => (first, last),
[single] => (single, single),
[] => (0, 0),
}
",
);
assert!(result.is_ok(), "Slice patterns should work");
}
#[test]
#[ignore = "Runtime limitation: method call syntax not fully implemented - needs [RUNTIME-214] ticket"]
fn test_sqlite_361_method_call() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
impl Point {
fun distance(&self) -> f64 {
((self.x * self.x + self.y * self.y) as f64).sqrt()
}
}
let p = Point { x: 3, y: 4 };
p.distance()
",
);
assert!(result.is_ok(), "Method call syntax should work");
}
#[test]
#[ignore = "Runtime limitation: UFCS not implemented - needs [RUNTIME-215] ticket"]
fn test_sqlite_362_ufcs() {
let result = execute_program(
r#"
let s = "hello";
String::len(&s); // UFCS
"#,
);
assert!(result.is_ok(), "UFCS should work");
}
#[test]
#[ignore = "Runtime limitation: method priority not correct - needs [RUNTIME-216] ticket"]
fn test_sqlite_363_method_priority() {
let result = execute_program(
r"
struct S;
impl S {
fun foo(&self) -> i32 { 1 }
}
trait T {
fun foo(&self) -> i32 { 2 }
}
impl T for S {}
let s = S;
s.foo() // Should call inherent impl (1)
",
);
assert!(result.is_ok(), "Method priority should be correct");
}
#[test]
#[ignore = "Runtime limitation: autoderef not implemented - needs [RUNTIME-217] ticket"]
fn test_sqlite_364_autoderef() {
let result = execute_program(
r#"
let s = Box::new(Box::new("hello".to_string()));
s.len(); // Multiple autoderef
"#,
);
assert!(result.is_ok(), "Autoderef should work");
}
#[test]
#[ignore = "Runtime limitation: autoref not implemented - needs [RUNTIME-218] ticket"]
fn test_sqlite_365_autoref() {
let result = execute_program(
r#"
let s = "hello".to_string();
s.len(); // Autoref to &String
"#,
);
assert!(result.is_ok(), "Autoref should work");
}
#[test]
#[ignore = "Runtime limitation: module visibility not implemented - needs [RUNTIME-219] ticket"]
fn test_sqlite_366_module_visibility() {
let result = execute_program(
r"
mod inner {
pub fun public() {}
fun private() {}
}
inner::public();
",
);
assert!(result.is_ok(), "Module visibility should work");
}
#[test]
#[ignore = "Runtime limitation: pub(crate) not implemented - needs [RUNTIME-220] ticket"]
fn test_sqlite_367_pub_crate() {
let result = execute_program(
r"
pub(crate) fun internal() {}
",
);
assert!(result.is_ok(), "pub(crate) visibility should work");
}
#[test]
#[ignore = "Runtime limitation: pub(super) not implemented - needs [RUNTIME-221] ticket"]
fn test_sqlite_368_pub_super() {
let result = execute_program(
r"
mod parent {
mod child {
pub(super) fun restricted() {}
}
}
",
);
assert!(result.is_ok(), "pub(super) visibility should work");
}
#[test]
#[ignore = "Runtime limitation: re-exports not implemented - needs [RUNTIME-222] ticket"]
fn test_sqlite_369_re_exports() {
let result = execute_program(
r"
mod inner {
pub fun foo() {}
}
pub use inner::foo;
",
);
assert!(result.is_ok(), "Re-exports should work");
}
#[test]
#[ignore = "Runtime limitation: glob re-exports not implemented - needs [RUNTIME-223] ticket"]
fn test_sqlite_370_glob_reexport() {
let result = execute_program(
r"
mod inner {
pub fun foo() {}
pub fun bar() {}
}
pub use inner::*;
",
);
assert!(result.is_ok(), "Glob re-exports should work");
}
#[test]
#[ignore = "Runtime limitation: unsafe function validation not implemented - needs [RUNTIME-224] ticket"]
fn test_sqlite_371_unsafe_function() {
let result = execute_program(
r"
unsafe fun dangerous() {}
unsafe { dangerous(); }
",
);
assert!(result.is_ok(), "Unsafe function calls should work");
}
#[test]
#[ignore = "Runtime limitation: raw pointer deref not implemented - needs [RUNTIME-225] ticket"]
fn test_sqlite_372_raw_pointer_deref() {
let result = execute_program(
r"
let x = 42;
let ptr = &x as *const i32;
unsafe { *ptr }
",
);
assert!(result.is_ok(), "Raw pointer dereference should work");
}
#[test]
#[ignore = "Runtime limitation: mutable static access not implemented - needs [RUNTIME-226] ticket"]
fn test_sqlite_373_mutable_static() {
let result = execute_program(
r"
static mut COUNTER: i32 = 0;
unsafe {
COUNTER += 1;
}
",
);
assert!(result.is_ok(), "Mutable static access should work");
}
#[test]
#[ignore = "Runtime limitation: union field access not implemented - needs [RUNTIME-227] ticket"]
fn test_sqlite_374_union_access() {
let result = execute_program(
r"
union Data {
i: i32,
f: f32,
}
let d = Data { i: 42 };
unsafe { d.f }
",
);
assert!(result.is_ok(), "Union field access should work");
}
#[test]
#[ignore = "Runtime limitation: unsafe trait methods not implemented - needs [RUNTIME-228] ticket"]
fn test_sqlite_375_unsafe_trait_method() {
let result = execute_program(
r"
unsafe trait UnsafeTrait {
unsafe fun danger(&self);
}
impl UnsafeTrait for i32 {
unsafe fun danger(&self) {}
}
",
);
assert!(result.is_ok(), "Unsafe trait methods should work");
}
#[test]
#[ignore = "Runtime limitation: async function execution not implemented - needs [RUNTIME-229] ticket"]
fn test_sqlite_376_async_execution() {
let result = execute_program(
r"
async fun fetch() -> i32 { 42 }
let value = fetch().await;
",
);
assert!(result.is_ok(), "Async function execution should work");
}
#[test]
#[ignore = "Runtime limitation: Future trait not implemented - needs [RUNTIME-230] ticket"]
fn test_sqlite_377_future_trait() {
let result = execute_program(
r"
use std::future::Future;
fun returns_future() -> impl Future<Output=i32> {
async { 42 }
}
",
);
assert!(result.is_ok(), "Future trait should work");
}
#[test]
#[ignore = "Runtime limitation: async blocks not implemented - needs [RUNTIME-231] ticket"]
fn test_sqlite_378_async_block() {
let result = execute_program(
r"
let future = async {
let x = 42;
x + 1
};
",
);
assert!(result.is_ok(), "Async blocks should work");
}
#[test]
#[ignore = "Runtime limitation: await in loops not optimized - needs [RUNTIME-232] ticket"]
fn test_sqlite_379_await_in_loop() {
let result = execute_program(
r"
for i in 0..10 {
fetch(i).await;
}
",
);
assert!(result.is_ok(), "Await in loops should work");
}
#[test]
#[ignore = "Runtime limitation: async move closures not implemented - needs [RUNTIME-233] ticket"]
fn test_sqlite_380_async_move_closure() {
let result = execute_program(
r"
let data = vec![1, 2, 3];
let future = async move {
data.len()
};
",
);
assert!(result.is_ok(), "Async move closures should work");
}
#[test]
#[ignore = "Runtime limitation: GATs not implemented - needs [RUNTIME-234] ticket"]
fn test_sqlite_381_gat_trait() {
let result = execute_program(
r"
trait Container {
type Item<'a>;
fun get<'a>(&'a self) -> Self::Item<'a>;
}
",
);
assert!(result.is_ok(), "GATs in traits should work");
}
#[test]
#[ignore = "Runtime limitation: GAT implementation not implemented - needs [RUNTIME-235] ticket"]
fn test_sqlite_382_gat_impl() {
let result = execute_program(
r"
impl Container for Vec<i32> {
type Item<'a> = &'a i32;
fun get<'a>(&'a self) -> &'a i32 {
&self[0]
}
}
",
);
assert!(result.is_ok(), "GAT implementation should work");
}
#[test]
#[ignore = "Runtime limitation: GATs with multiple params not implemented - needs [RUNTIME-236] ticket"]
fn test_sqlite_383_gat_multi_param() {
let result = execute_program(
r"
trait Collection {
type Iter<'a, T>;
fun iter<'a, T>(&'a self) -> Self::Iter<'a, T>;
}
",
);
assert!(result.is_ok(), "GATs with multiple parameters should work");
}
#[test]
#[ignore = "Runtime limitation: GAT bounds not implemented - needs [RUNTIME-237] ticket"]
fn test_sqlite_384_gat_bounds() {
let result = execute_program(
r"
trait Container {
type Item<'a>: Clone where Self: 'a;
}
",
);
assert!(result.is_ok(), "GAT bounds should work");
}
#[test]
#[ignore = "Runtime limitation: GAT lifetime elision not implemented - needs [RUNTIME-238] ticket"]
fn test_sqlite_385_gat_elision() {
let result = execute_program(
r"
trait Container {
type Item<'a>;
fun get(&self) -> Self::Item<'_>;
}
",
);
assert!(result.is_ok(), "GAT lifetime elision should work");
}
#[test]
#[ignore = "Runtime limitation: panic messages not captured - needs [RUNTIME-239] ticket"]
fn test_sqlite_386_panic_message() {
let result = execute_program(
r#"
panic!("Something went wrong");
"#,
);
assert!(result.is_err(), "Panic should be caught");
}
#[test]
#[ignore = "Runtime limitation: panic in Drop not handled - needs [RUNTIME-240] ticket"]
fn test_sqlite_387_panic_in_drop() {
let result = execute_program(
r#"
struct Bomb;
impl Drop for Bomb {
fun drop(&mut self) {
panic!("Boom!");
}
}
{ let _b = Bomb; }
"#,
);
assert!(result.is_err(), "Panic in Drop should be handled");
}
#[test]
#[ignore = "Runtime limitation: double panic detection not implemented - needs [RUNTIME-241] ticket"]
fn test_sqlite_388_double_panic() {
let result = execute_program(
r#"
struct DropPanic;
impl Drop for DropPanic {
fun drop(&mut self) { panic!("Drop panic"); }
}
let _d = DropPanic;
panic!("First panic");
"#,
);
assert!(result.is_err(), "Double panic should abort");
}
#[test]
#[ignore = "Runtime limitation: catch_unwind not implemented - needs [RUNTIME-242] ticket"]
fn test_sqlite_389_catch_unwind() {
let result = execute_program(
r#"
use std::panic::catch_unwind;
let result = catch_unwind(|| {
panic!("Caught!");
});
assert!(result.is_err());
"#,
);
assert!(result.is_ok(), "catch_unwind should work");
}
#[test]
#[ignore = "Runtime limitation: panic location tracking not implemented - needs [RUNTIME-243] ticket"]
fn test_sqlite_390_panic_location() {
let result = execute_program(
r#"
#[track_caller]
fun panics() {
panic!("Location tracked");
}
panics();
"#,
);
assert!(result.is_err(), "Panic location should be tracked");
}
#[test]
#[ignore = "Runtime limitation: trait coherence not enforced - needs [RUNTIME-244] ticket"]
fn test_sqlite_391_local_trait_local_type() {
let result = execute_program(
r"
trait MyTrait {}
struct MyType;
impl MyTrait for MyType {}
",
);
assert!(result.is_ok(), "Local trait for local type should work");
}
#[test]
#[ignore = "Runtime limitation: orphan rules not enforced - needs [RUNTIME-245] ticket"]
fn test_sqlite_392_foreign_trait_local_type() {
let result = execute_program(
r"
struct MyType;
impl Display for MyType {} // Foreign trait
",
);
assert!(result.is_ok(), "Foreign trait for local type should work");
}
#[test]
#[ignore = "Runtime limitation: orphan rules not enforced - needs [RUNTIME-246] ticket"]
fn test_sqlite_393_local_trait_foreign_type() {
let result = execute_program(
r"
trait MyTrait {}
impl MyTrait for Vec<i32> {} // Foreign type
",
);
assert!(result.is_ok(), "Local trait for foreign type should work");
}
#[test]
#[ignore = "Runtime limitation: orphan rule violations not detected - needs [RUNTIME-247] ticket"]
fn test_sqlite_394_orphan_violation() {
let result = execute_program(
r"
impl Display for Vec<i32> {} // Both foreign
",
);
assert!(result.is_err(), "Orphan rule violation should be detected");
}
#[test]
#[ignore = "Runtime limitation: blanket impl conflicts not detected - needs [RUNTIME-248] ticket"]
fn test_sqlite_395_blanket_conflict() {
let result = execute_program(
r"
trait MyTrait {}
impl<T> MyTrait for T {}
impl MyTrait for i32 {} // Conflicts with blanket
",
);
assert!(result.is_err(), "Blanket impl conflicts should be detected");
}
#[test]
#[ignore = "Runtime limitation: variance not implemented - needs [RUNTIME-249] ticket"]
fn test_sqlite_396_covariant_lifetime() {
let result = execute_program(
r"
fun takes_short<'a>(x: &'a i32) {}
let x = 42;
takes_short(&x); // 'static -> 'a
",
);
assert!(result.is_ok(), "Covariant lifetime should work");
}
#[test]
#[ignore = "Runtime limitation: contravariance not implemented - needs [RUNTIME-250] ticket"]
fn test_sqlite_397_contravariant_lifetime() {
let result = execute_program(
r"
trait MyTrait<'a> {
fun process(&self, f: fun(&'a i32));
}
",
);
assert!(result.is_ok(), "Contravariant lifetime should work");
}
#[test]
#[ignore = "Runtime limitation: invariance not implemented - needs [RUNTIME-251] ticket"]
fn test_sqlite_398_invariant_lifetime() {
let result = execute_program(
r"
struct Cell<'a> {
value: &'a mut i32,
}
",
);
assert!(result.is_ok(), "Invariant lifetime should work");
}
#[test]
#[ignore = "Runtime limitation: trait subtyping not implemented - needs [RUNTIME-252] ticket"]
fn test_sqlite_399_trait_subtyping() {
let result = execute_program(
r"
trait Super {}
trait Sub: Super {}
fun takes_super(x: &dyn Super) {}
let s: &dyn Sub = &MyType;
takes_super(s);
",
);
assert!(result.is_ok(), "Trait subtyping should work");
}
#[test]
#[ignore = "Runtime limitation: generic variance not implemented - needs [RUNTIME-253] ticket"]
fn test_sqlite_400_generic_variance() {
let result = execute_program(
r#"
struct Wrapper<T>(T);
let w: Wrapper<&'static str> = Wrapper("hello");
let _: Wrapper<&str> = w; // Covariance
"#,
);
assert!(result.is_ok(), "Generic variance should work");
}
#[test]
#[ignore = "Runtime limitation: HKT not implemented - needs [RUNTIME-254] ticket"]
fn test_sqlite_401_hkt_simulation() {
let result = execute_program(
r"
trait Functor {
type Wrapped<A>;
fun map<A, B>(self, f: fun(A) -> B) -> Self::Wrapped<B>;
}
",
);
assert!(result.is_ok(), "HKT simulation should work");
}
#[test]
#[ignore = "Runtime limitation: functor laws not validated - needs [RUNTIME-255] ticket"]
fn test_sqlite_402_functor_laws() {
let result = execute_program(
r"
impl Functor for Option {
fun map<A, B>(self, f: fun(A) -> B) -> Option<B> {
match self {
Some(x) => Some(f(x)),
None => None,
}
}
}
",
);
assert!(result.is_ok(), "Functor laws should be satisfied");
}
#[test]
#[ignore = "Runtime limitation: monad pattern not implemented - needs [RUNTIME-256] ticket"]
fn test_sqlite_403_monad_pattern() {
let result = execute_program(
r"
trait Monad {
fun bind<A, B>(self, f: fun(A) -> Self<B>) -> Self<B>;
}
",
);
assert!(result.is_ok(), "Monad pattern should work");
}
#[test]
#[ignore = "Runtime limitation: applicative pattern not implemented - needs [RUNTIME-257] ticket"]
fn test_sqlite_404_applicative() {
let result = execute_program(
r"
trait Applicative {
fun apply<A, B>(self, f: Self<fun(A) -> B>) -> Self<B>;
}
",
);
assert!(result.is_ok(), "Applicative pattern should work");
}
#[test]
#[ignore = "Runtime limitation: type constructor polymorphism not implemented - needs [RUNTIME-258] ticket"]
fn test_sqlite_405_type_constructor_poly() {
let result = execute_program(
r"
fun generic_map<F, A, B>(fa: F<A>, f: fun(A) -> B) -> F<B>
where F: Functor {
fa.map(f)
}
",
);
assert!(result.is_ok(), "Type constructor polymorphism should work");
}
#[test]
#[ignore = "Runtime limitation: type introspection not implemented - needs [RUNTIME-259] ticket"]
fn test_sqlite_406_type_name() {
let result = execute_program(
r#"
let name = std::any::type_name::<Vec<i32>>();
assert_eq!(name, "alloc::vec::Vec<i32>");
"#,
);
assert!(result.is_ok(), "Type name introspection should work");
}
#[test]
#[ignore = "Runtime limitation: Any trait not implemented - needs [RUNTIME-260] ticket"]
fn test_sqlite_407_any_trait() {
let result = execute_program(
r"
use std::any::Any;
let x: Box<dyn Any> = Box::new(42);
let y: Option<&i32> = x.downcast_ref::<i32>();
",
);
assert!(result.is_ok(), "Any trait should work");
}
#[test]
#[ignore = "Runtime limitation: TypeId not implemented - needs [RUNTIME-261] ticket"]
fn test_sqlite_408_type_id() {
let result = execute_program(
r"
use std::any::TypeId;
let id1 = TypeId::of::<i32>();
let id2 = TypeId::of::<i32>();
assert_eq!(id1, id2);
",
);
assert!(result.is_ok(), "TypeId should work");
}
#[test]
#[ignore = "Runtime limitation: size_of not implemented - needs [RUNTIME-262] ticket"]
fn test_sqlite_409_size_of() {
let result = execute_program(
r"
let size = std::mem::size_of::<Vec<i32>>();
assert!(size > 0);
",
);
assert!(result.is_ok(), "size_of should work");
}
#[test]
#[ignore = "Runtime limitation: align_of not implemented - needs [RUNTIME-263] ticket"]
fn test_sqlite_410_align_of() {
let result = execute_program(
r"
let align = std::mem::align_of::<i64>();
assert_eq!(align, 8);
",
);
assert!(result.is_ok(), "align_of should work");
}
#[test]
#[ignore = "Runtime limitation: Mutex not implemented - needs [RUNTIME-264] ticket"]
fn test_sqlite_411_mutex() {
let result = execute_program(
r"
use std::sync::Mutex;
let m = Mutex::new(42);
let guard = m.lock().unwrap();
assert_eq!(*guard, 42);
",
);
assert!(result.is_ok(), "Mutex should work");
}
#[test]
#[ignore = "Runtime limitation: RwLock not implemented - needs [RUNTIME-265] ticket"]
fn test_sqlite_412_rwlock() {
let result = execute_program(
r"
use std::sync::RwLock;
let lock = RwLock::new(5);
let r1 = lock.read().unwrap();
let r2 = lock.read().unwrap();
",
);
assert!(result.is_ok(), "RwLock should work");
}
#[test]
#[ignore = "Runtime limitation: atomics not implemented - needs [RUNTIME-266] ticket"]
fn test_sqlite_413_atomics() {
let result = execute_program(
r"
use std::sync::atomic::{AtomicI32, Ordering};
let counter = AtomicI32::new(0);
counter.fetch_add(1, Ordering::SeqCst);
",
);
assert!(result.is_ok(), "Atomic operations should work");
}
#[test]
#[ignore = "Runtime limitation: channels not implemented - needs [RUNTIME-267] ticket"]
fn test_sqlite_414_channels() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
tx.send(42).unwrap();
let value = rx.recv().unwrap();
",
);
assert!(result.is_ok(), "Channels should work");
}
#[test]
#[ignore = "Runtime limitation: thread spawn not implemented - needs [RUNTIME-268] ticket"]
fn test_sqlite_415_thread_spawn() {
let result = execute_program(
r"
use std::thread;
let handle = thread::spawn(|| {
42
});
let result = handle.join().unwrap();
",
);
assert!(result.is_ok(), "Thread spawn should work");
}
#[test]
#[ignore = "Runtime limitation: flat_map not implemented - needs [RUNTIME-269] ticket"]
fn test_sqlite_416_flat_map() {
let result = execute_program(
r"
let nested = vec![vec![1, 2], vec![3, 4]];
let flat: Vec<i32> = nested.iter().flat_map(|v| v.iter()).collect();
",
);
assert!(result.is_ok(), "flat_map should work");
}
#[test]
#[ignore = "Runtime limitation: filter_map not implemented - needs [RUNTIME-270] ticket"]
fn test_sqlite_417_filter_map() {
let result = execute_program(
r"
let nums = vec![1, 2, 3, 4];
let evens: Vec<i32> = nums.iter()
.filter_map(|&x| if x % 2 == 0 { Some(x * 2) } else { None })
.collect();
",
);
assert!(result.is_ok(), "filter_map should work");
}
#[test]
#[ignore = "Runtime limitation: fold not implemented - needs [RUNTIME-271] ticket"]
fn test_sqlite_418_fold() {
let result = execute_program(
r"
let nums = vec![1, 2, 3, 4];
let sum = nums.iter().fold(0, |acc, &x| acc + x);
",
);
assert!(result.is_ok(), "fold should work");
}
#[test]
#[ignore = "Runtime limitation: scan not implemented - needs [RUNTIME-272] ticket"]
fn test_sqlite_419_scan() {
let result = execute_program(
r"
let nums = vec![1, 2, 3];
let running_sum: Vec<i32> = nums.iter()
.scan(0, |state, &x| {
*state += x;
Some(*state)
})
.collect();
",
);
assert!(result.is_ok(), "scan should work");
}
#[test]
#[ignore = "Runtime limitation: chain not implemented - needs [RUNTIME-273] ticket"]
fn test_sqlite_420_chain() {
let result = execute_program(
r"
let a = vec![1, 2];
let b = vec![3, 4];
let chained: Vec<i32> = a.iter().chain(b.iter()).collect();
",
);
assert!(result.is_ok(), "chain should work");
}
#[test]
#[ignore = "Runtime limitation: closure capture semantics not fully implemented - needs [RUNTIME-274] ticket"]
fn test_sqlite_421_capture_by_value() {
let result = execute_program(
r#"
let x = String::from("hello");
let closure = move || println!("{}", x);
closure();
// x is moved, cannot use here
"#,
);
assert!(result.is_ok(), "Closure capture by value should work");
}
#[test]
#[ignore = "Runtime limitation: closure borrow checking not implemented - needs [RUNTIME-275] ticket"]
fn test_sqlite_422_capture_by_ref() {
let result = execute_program(
r"
let mut x = 0;
let mut closure = || x += 1;
closure();
closure();
assert_eq!(x, 2);
",
);
assert!(result.is_ok(), "Closure capture by reference should work");
}
#[test]
#[ignore = "Runtime limitation: Fn trait not implemented - needs [RUNTIME-276] ticket"]
fn test_sqlite_423_fn_trait() {
let result = execute_program(
r#"
fun call_twice<F: Fn()>(f: F) {
f();
f();
}
let x = 0;
call_twice(|| println!("{}", x));
"#,
);
assert!(result.is_ok(), "Fn trait should work");
}
#[test]
#[ignore = "Runtime limitation: FnMut trait not implemented - needs [RUNTIME-277] ticket"]
fn test_sqlite_424_fn_mut_trait() {
let result = execute_program(
r"
fun call_twice<F: FnMut()>(mut f: F) {
f();
f();
}
let mut x = 0;
call_twice(|| x += 1);
",
);
assert!(result.is_ok(), "FnMut trait should work");
}
#[test]
#[ignore = "Runtime limitation: FnOnce trait not implemented - needs [RUNTIME-278] ticket"]
fn test_sqlite_425_fn_once_trait() {
let result = execute_program(
r#"
fun call_once<F: FnOnce()>(f: F) {
f();
}
let x = String::from("hello");
call_once(move || drop(x));
"#,
);
assert!(result.is_ok(), "FnOnce trait should work");
}
#[test]
#[ignore = "Runtime limitation: Add trait not implemented - needs [RUNTIME-279] ticket"]
fn test_sqlite_426_add_trait() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
impl Add for Point {
type Output = Point;
fun add(self, other: Point) -> Point {
Point { x: self.x + other.x, y: self.y + other.y }
}
}
let p = Point { x: 1, y: 2 } + Point { x: 3, y: 4 };
",
);
assert!(result.is_ok(), "Add trait should work");
}
#[test]
#[ignore = "Runtime limitation: Index trait not implemented - needs [RUNTIME-280] ticket"]
fn test_sqlite_427_index_trait() {
let result = execute_program(
r"
struct Container(Vec<i32>);
impl Index<usize> for Container {
type Output = i32;
fun index(&self, idx: usize) -> &i32 {
&self.0[idx]
}
}
let c = Container(vec![1, 2, 3]);
let x = c[1];
",
);
assert!(result.is_ok(), "Index trait should work");
}
#[test]
#[ignore = "Runtime limitation: Deref trait not fully implemented - needs [RUNTIME-281] ticket"]
fn test_sqlite_428_deref_trait() {
let result = execute_program(
r#"
struct Wrapper(String);
impl Deref for Wrapper {
type Target = String;
fun deref(&self) -> &String {
&self.0
}
}
let w = Wrapper("hello".to_string());
let len = w.len();
"#,
);
assert!(result.is_ok(), "Deref trait should work");
}
#[test]
#[ignore = "Runtime limitation: Not trait not implemented - needs [RUNTIME-282] ticket"]
fn test_sqlite_429_not_trait() {
let result = execute_program(
r"
struct Toggle(bool);
impl Not for Toggle {
type Output = Toggle;
fun not(self) -> Toggle {
Toggle(!self.0)
}
}
let t = !Toggle(true);
",
);
assert!(result.is_ok(), "Not trait should work");
}
#[test]
#[ignore = "Runtime limitation: Mul trait not implemented - needs [RUNTIME-283] ticket"]
fn test_sqlite_430_mul_trait() {
let result = execute_program(
r"
struct Vector { x: f64, y: f64 }
impl Mul<f64> for Vector {
type Output = Vector;
fun mul(self, scalar: f64) -> Vector {
Vector { x: self.x * scalar, y: self.y * scalar }
}
}
",
);
assert!(result.is_ok(), "Mul trait should work");
}
#[test]
#[ignore = "Runtime limitation: trait object safety not validated - needs [RUNTIME-284] ticket"]
fn test_sqlite_431_object_safe_trait() {
let result = execute_program(
r"
trait Drawable {
fun draw(&self);
}
let d: Box<dyn Drawable> = Box::new(Circle);
",
);
assert!(result.is_ok(), "Object-safe trait should work");
}
#[test]
#[ignore = "Runtime limitation: object safety violations not detected - needs [RUNTIME-285] ticket"]
fn test_sqlite_432_object_unsafe_generic() {
let result = execute_program(
r"
trait NotObjectSafe {
fun generic<T>(&self, x: T);
}
let _: Box<dyn NotObjectSafe> = Box::new(MyType);
",
);
assert!(result.is_err(), "Object-unsafe trait should be detected");
}
#[test]
#[ignore = "Runtime limitation: Self return type safety not validated - needs [RUNTIME-286] ticket"]
fn test_sqlite_433_object_unsafe_self() {
let result = execute_program(
r"
trait NotObjectSafe {
fun clone_self(&self) -> Self;
}
let _: Box<dyn NotObjectSafe> = Box::new(MyType);
",
);
assert!(
result.is_err(),
"Self return type should prevent object safety"
);
}
#[test]
#[ignore = "Runtime limitation: Sized bound not implemented - needs [RUNTIME-287] ticket"]
fn test_sqlite_434_sized_bound() {
let result = execute_program(
r"
fun requires_sized<T: Sized>(x: T) {}
requires_sized(42);
",
);
assert!(result.is_ok(), "Sized bound should work");
}
#[test]
#[ignore = "Runtime limitation: ?Sized bound not implemented - needs [RUNTIME-288] ticket"]
fn test_sqlite_435_unsized_bound() {
let result = execute_program(
r#"
fun accepts_unsized<T: ?Sized>(x: &T) {}
let s: &str = "hello";
accepts_unsized(s);
"#,
);
assert!(result.is_ok(), "?Sized bound should work");
}
#[test]
#[ignore = "Runtime limitation: From trait not implemented - needs [RUNTIME-289] ticket"]
fn test_sqlite_436_from_trait() {
let result = execute_program(
r"
let x: i64 = i64::from(42i32);
",
);
assert!(result.is_ok(), "From trait should work");
}
#[test]
#[ignore = "Runtime limitation: Into trait not implemented - needs [RUNTIME-290] ticket"]
fn test_sqlite_437_into_trait() {
let result = execute_program(
r"
let x: i64 = 42i32.into();
",
);
assert!(result.is_ok(), "Into trait should work");
}
#[test]
#[ignore = "Runtime limitation: TryFrom trait not implemented - needs [RUNTIME-291] ticket"]
fn test_sqlite_438_try_from() {
let result = execute_program(
r"
let x: Result<i32, _> = i32::try_from(1000i64);
",
);
assert!(result.is_ok(), "TryFrom trait should work");
}
#[test]
#[ignore = "Runtime limitation: TryInto trait not implemented - needs [RUNTIME-292] ticket"]
fn test_sqlite_439_try_into() {
let result = execute_program(
r"
let x: Result<i32, _> = 1000i64.try_into();
",
);
assert!(result.is_ok(), "TryInto trait should work");
}
#[test]
#[ignore = "Runtime limitation: numeric coercion not implemented - needs [RUNTIME-293] ticket"]
fn test_sqlite_440_numeric_coercion() {
let result = execute_program(
r"
fun takes_f64(x: f64) {}
takes_f64(42.0f32 as f64);
",
);
assert!(result.is_ok(), "Numeric coercion should work");
}
#[test]
#[ignore = "Runtime limitation: const generic arrays not implemented - needs [RUNTIME-294] ticket"]
fn test_sqlite_441_const_generic_array() {
let result = execute_program(
r"
struct Buffer<const N: usize> { data: [u8; N] }
let buf = Buffer::<10> { data: [0; 10] };
",
);
assert!(result.is_ok(), "Const generic arrays should work");
}
#[test]
#[ignore = "Runtime limitation: const generic operations not implemented - needs [RUNTIME-295] ticket"]
fn test_sqlite_442_const_generic_ops() {
let result = execute_program(
r"
fun double<const N: usize>() -> usize { N * 2 }
let result = double::<5>();
",
);
assert!(result.is_ok(), "Const generic operations should work");
}
#[test]
#[ignore = "Runtime limitation: const generic trait bounds not implemented - needs [RUNTIME-296] ticket"]
fn test_sqlite_443_const_generic_bounds() {
let result = execute_program(
r"
trait HasSize<const N: usize> {}
struct Array<T, const N: usize> where T: HasSize<N> {}
",
);
assert!(result.is_ok(), "Const generic trait bounds should work");
}
#[test]
#[ignore = "Runtime limitation: const generic defaults not implemented - needs [RUNTIME-297] ticket"]
fn test_sqlite_444_const_generic_default() {
let result = execute_program(
r"
struct Buffer<const N: usize = 16> { data: [u8; N] }
let buf = Buffer { data: [0; 16] };
",
);
assert!(result.is_ok(), "Const generic defaults should work");
}
#[test]
#[ignore = "Runtime limitation: const generic expressions not implemented - needs [RUNTIME-298] ticket"]
fn test_sqlite_445_const_generic_expr() {
let result = execute_program(
r"
struct Grid<const W: usize, const H: usize> { data: [u8; W * H] }
let grid = Grid::<3, 4> { data: [0; 12] };
",
);
assert!(result.is_ok(), "Const generic expressions should work");
}
#[test]
#[ignore = "Runtime limitation: type-level booleans not implemented - needs [RUNTIME-299] ticket"]
fn test_sqlite_446_type_level_bool() {
let result = execute_program(
r"
trait Bool {}
struct True;
struct False;
impl Bool for True {}
impl Bool for False {}
",
);
assert!(result.is_ok(), "Type-level booleans should work");
}
#[test]
#[ignore = "Runtime limitation: type-level naturals not implemented - needs [RUNTIME-300] ticket"]
fn test_sqlite_447_type_level_nat() {
let result = execute_program(
r"
trait Nat {}
struct Zero;
struct Succ<N: Nat>;
impl Nat for Zero {}
impl<N: Nat> Nat for Succ<N> {}
",
);
assert!(result.is_ok(), "Type-level natural numbers should work");
}
#[test]
#[ignore = "Runtime limitation: type-level lists not implemented - needs [RUNTIME-301] ticket"]
fn test_sqlite_448_type_level_list() {
let result = execute_program(
r"
trait List {}
struct Nil;
struct Cons<H, T: List>;
impl List for Nil {}
impl<H, T: List> List for Cons<H, T> {}
",
);
assert!(result.is_ok(), "Type-level lists should work");
}
#[test]
#[ignore = "Runtime limitation: type-level computation not implemented - needs [RUNTIME-302] ticket"]
fn test_sqlite_449_type_level_compute() {
let result = execute_program(
r"
trait Add<Rhs> { type Output; }
struct Sum<A, B>;
impl<A, B> Add<B> for A { type Output = Sum<A, B>; }
",
);
assert!(result.is_ok(), "Type-level computation should work");
}
#[test]
#[ignore = "Runtime limitation: type-level equality not implemented - needs [RUNTIME-303] ticket"]
fn test_sqlite_450_type_level_eq() {
let result = execute_program(
r"
trait TypeEq<T> {}
impl<T> TypeEq<T> for T {}
",
);
assert!(result.is_ok(), "Type-level equality should work");
}
#[test]
#[ignore = "Runtime limitation: advanced lifetime elision not implemented - needs [RUNTIME-304] ticket"]
fn test_sqlite_451_lifetime_elision_advanced() {
let result = execute_program(
r"
fun longest(x: &str, y: &str) -> &str {
if x.len() > y.len() { x } else { y }
}
",
);
assert!(result.is_ok(), "Advanced lifetime elision should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime bounds in structs not implemented - needs [RUNTIME-305] ticket"]
fn test_sqlite_452_lifetime_struct_bounds() {
let result = execute_program(
r"
struct Ref<'a, T: 'a> { reference: &'a T }
let x = 42;
let r = Ref { reference: &x };
",
);
assert!(result.is_ok(), "Lifetime bounds in structs should work");
}
#[test]
#[ignore = "Runtime limitation: HRTB not implemented - needs [RUNTIME-306] ticket"]
fn test_sqlite_453_hrtb() {
let result = execute_program(
r"
trait Trait<'a> {}
fun foo<T: for<'a> Trait<'a>>(x: T) {}
",
);
assert!(result.is_ok(), "HRTB should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime subtyping not implemented - needs [RUNTIME-307] ticket"]
fn test_sqlite_454_lifetime_subtyping() {
let result = execute_program(
r"
fun choose<'a: 'b, 'b>(first: &'a i32, _: &'b i32) -> &'b i32 {
first
}
",
);
assert!(result.is_ok(), "Lifetime subtyping should work");
}
#[test]
#[ignore = "Runtime limitation: static lifetime special cases not implemented - needs [RUNTIME-308] ticket"]
fn test_sqlite_455_static_lifetime() {
let result = execute_program(
r#"
const MSG: &'static str = "Hello";
fun get_static() -> &'static str { MSG }
"#,
);
assert!(result.is_ok(), "Static lifetime special cases should work");
}
#[test]
#[ignore = "Runtime limitation: derive macro custom attributes not implemented - needs [RUNTIME-309] ticket"]
fn test_sqlite_456_derive_custom_attr() {
let result = execute_program(
r#"
#[derive(Debug)]
#[debug_custom(format = "custom")]
struct Point { x: i32, y: i32 }
"#,
);
assert!(result.is_ok(), "Derive macro custom attributes should work");
}
#[test]
#[ignore = "Runtime limitation: attribute macro on modules not implemented - needs [RUNTIME-310] ticket"]
fn test_sqlite_457_attr_macro_module() {
let result = execute_program(
r"
#[custom_module]
mod my_module {
fun foo() {}
}
",
);
assert!(result.is_ok(), "Attribute macro on modules should work");
}
#[test]
#[ignore = "Runtime limitation: function-like macro hygiene not implemented - needs [RUNTIME-311] ticket"]
fn test_sqlite_458_macro_hygiene() {
let result = execute_program(
r"
macro_rules! define_x {
() => { let x = 42; }
}
define_x!();
let x = 10; // Should not conflict
",
);
assert!(result.is_ok(), "Function-like macro hygiene should work");
}
#[test]
#[ignore = "Runtime limitation: macro expansion order not implemented - needs [RUNTIME-312] ticket"]
fn test_sqlite_459_macro_expansion_order() {
let result = execute_program(
r"
macro_rules! outer {
() => { inner!(); }
}
macro_rules! inner {
() => { 42 }
}
let x = outer!();
",
);
assert!(result.is_ok(), "Macro expansion order should work");
}
#[test]
#[ignore = "Runtime limitation: macro recursion limits not implemented - needs [RUNTIME-313] ticket"]
fn test_sqlite_460_macro_recursion() {
let result = execute_program(
r"
macro_rules! recurse {
(0) => { 1 };
($n:expr) => { recurse!($n - 1) }
}
let x = recurse!(5);
",
);
assert!(result.is_ok(), "Macro recursion limits should work");
}
#[test]
#[ignore = "Runtime limitation: raw pointer arithmetic not implemented - needs [RUNTIME-314] ticket"]
fn test_sqlite_461_raw_pointer_arithmetic() {
let result = execute_program(
r"
unsafe {
let arr = [1, 2, 3, 4, 5];
let ptr = arr.as_ptr();
let second = ptr.offset(1);
}
",
);
assert!(result.is_ok(), "Raw pointer arithmetic should work");
}
#[test]
#[ignore = "Runtime limitation: union types not implemented - needs [RUNTIME-315] ticket"]
fn test_sqlite_462_union() {
let result = execute_program(
r"
union MyUnion {
i: i32,
f: f32,
}
let u = MyUnion { i: 42 };
",
);
assert!(result.is_ok(), "Union types should work");
}
#[test]
#[ignore = "Runtime limitation: inline assembly constraints not implemented - needs [RUNTIME-316] ticket"]
fn test_sqlite_463_asm_constraints() {
let result = execute_program(
r#"
unsafe {
let x: u64;
asm!("mov {}, 5", out(reg) x);
}
"#,
);
assert!(result.is_ok(), "Inline assembly constraints should work");
}
#[test]
#[ignore = "Runtime limitation: FFI variadic functions not implemented - needs [RUNTIME-317] ticket"]
fn test_sqlite_464_ffi_variadic() {
let result = execute_program(
r#"
extern "C" {
fun printf(format: *const u8, ...) -> i32;
}
"#,
);
assert!(result.is_ok(), "FFI variadic functions should work");
}
#[test]
#[ignore = "Runtime limitation: unsafe trait implementation not implemented - needs [RUNTIME-318] ticket"]
fn test_sqlite_465_unsafe_trait_impl() {
let result = execute_program(
r"
unsafe trait UnsafeTrait {}
unsafe impl UnsafeTrait for i32 {}
",
);
assert!(result.is_ok(), "Unsafe trait implementation should work");
}
#[test]
#[ignore = "Runtime limitation: async closures not implemented - needs [RUNTIME-319] ticket"]
fn test_sqlite_466_async_closure() {
let result = execute_program(
r"
let f = async || { 42 };
let result = f().await;
",
);
assert!(result.is_ok(), "Async closures should work");
}
#[test]
#[ignore = "Runtime limitation: async trait methods not implemented - needs [RUNTIME-320] ticket"]
fn test_sqlite_467_async_trait_method() {
let result = execute_program(
r"
trait AsyncOps {
async fun fetch(&self) -> i32;
}
",
);
assert!(result.is_ok(), "Async trait methods should work");
}
#[test]
#[ignore = "Runtime limitation: async drop not implemented - needs [RUNTIME-321] ticket"]
fn test_sqlite_468_async_drop() {
let result = execute_program(
r"
struct Resource;
impl AsyncDrop for Resource {
async fun drop(&mut self) {}
}
",
);
assert!(result.is_ok(), "Async drop should work");
}
#[test]
#[ignore = "Runtime limitation: async generators not implemented - needs [RUNTIME-322] ticket"]
fn test_sqlite_469_async_generator() {
let result = execute_program(
r"
async gen fun count() -> i32 {
yield 1;
yield 2;
yield 3;
}
",
);
assert!(result.is_ok(), "Async generators should work");
}
#[test]
#[ignore = "Runtime limitation: async recursion not implemented - needs [RUNTIME-323] ticket"]
fn test_sqlite_470_async_recursion() {
let result = execute_program(
r"
async fun factorial(n: u64) -> u64 {
if n == 0 { 1 } else { n * factorial(n - 1).await }
}
",
);
assert!(result.is_ok(), "Async recursion should work");
}
#[test]
#[ignore = "Runtime limitation: or-patterns not implemented - needs [RUNTIME-324] ticket"]
fn test_sqlite_471_or_pattern() {
let result = execute_program(
r#"
let x = 1;
match x {
1 | 2 | 3 => "small",
_ => "large"
}
"#,
);
assert!(result.is_ok(), "Or-patterns should work");
}
#[test]
#[ignore = "Runtime limitation: at-patterns with guards not implemented - needs [RUNTIME-325] ticket"]
fn test_sqlite_472_at_pattern_guard() {
let result = execute_program(
r#"
match Some(5) {
Some(n @ 1..=10) if n % 2 == 0 => "even",
_ => "other"
}
"#,
);
assert!(result.is_ok(), "At-patterns with guards should work");
}
#[test]
#[ignore = "Runtime limitation: box patterns not implemented - needs [RUNTIME-326] ticket"]
fn test_sqlite_473_box_pattern() {
let result = execute_program(
r#"
let boxed = Box::new(42);
match boxed {
box 42 => "matched",
_ => "other"
}
"#,
);
assert!(result.is_ok(), "Box patterns should work");
}
#[test]
#[ignore = "Runtime limitation: slice patterns advanced not implemented - needs [RUNTIME-327] ticket"]
fn test_sqlite_474_slice_pattern_advanced() {
let result = execute_program(
r"
match &[1, 2, 3, 4, 5][..] {
[first, .., last] => (first, last),
_ => (0, 0)
}
",
);
assert!(result.is_ok(), "Advanced slice patterns should work");
}
#[test]
#[ignore = "Runtime limitation: struct pattern with rest not implemented - needs [RUNTIME-328] ticket"]
fn test_sqlite_475_struct_pattern_rest() {
let result = execute_program(
r"
struct Point { x: i32, y: i32, z: i32 }
let p = Point { x: 1, y: 2, z: 3 };
match p {
Point { x, .. } => x
}
",
);
assert!(result.is_ok(), "Struct pattern with rest should work");
}
#[test]
#[ignore = "Runtime limitation: try blocks not implemented - needs [RUNTIME-329] ticket"]
fn test_sqlite_476_try_block() {
let result = execute_program(
r"
let result: Result<i32, _> = try {
let x = Some(5)?;
x * 2
};
",
);
assert!(result.is_ok(), "Try blocks should work");
}
#[test]
#[ignore = "Runtime limitation: custom error types with question mark not implemented - needs [RUNTIME-330] ticket"]
fn test_sqlite_477_custom_error_try() {
let result = execute_program(
r"
enum MyError { A, B }
fun foo() -> Result<i32, MyError> {
let x = bar()?;
Ok(x + 1)
}
",
);
assert!(result.is_ok(), "Custom error types with ? should work");
}
#[test]
#[ignore = "Runtime limitation: error trait implementation not implemented - needs [RUNTIME-331] ticket"]
fn test_sqlite_478_error_trait() {
let result = execute_program(
r"
struct MyError;
impl std::error::Error for MyError {}
",
);
assert!(result.is_ok(), "Error trait implementation should work");
}
#[test]
#[ignore = "Runtime limitation: result combinators chaining not implemented - needs [RUNTIME-332] ticket"]
fn test_sqlite_479_result_combinators() {
let result = execute_program(
r"
let x: Result<i32, _> = Ok(5);
let result = x.map(|n| n * 2).and_then(|n| Ok(n + 1));
",
);
assert!(result.is_ok(), "Result combinators chaining should work");
}
#[test]
#[ignore = "Runtime limitation: panic recovery not implemented - needs [RUNTIME-333] ticket"]
fn test_sqlite_480_panic_recovery() {
let result = execute_program(
r#"
use std::panic::catch_unwind;
let result = catch_unwind(|| { panic!("test"); });
"#,
);
assert!(result.is_ok(), "Panic recovery should work");
}
#[test]
#[ignore = "Runtime limitation: Cell usage patterns not implemented - needs [RUNTIME-334] ticket"]
fn test_sqlite_481_cell_pattern() {
let result = execute_program(
r"
use std::cell::Cell;
let x = Cell::new(5);
x.set(10);
let val = x.get();
",
);
assert!(result.is_ok(), "Cell usage patterns should work");
}
#[test]
#[ignore = "Runtime limitation: RefCell borrow checking not implemented - needs [RUNTIME-335] ticket"]
fn test_sqlite_482_refcell_borrow() {
let result = execute_program(
r"
use std::cell::RefCell;
let x = RefCell::new(5);
*x.borrow_mut() += 1;
",
);
assert!(result.is_ok(), "RefCell borrow checking should work");
}
#[test]
#[ignore = "Runtime limitation: Mutex interior mutability not implemented - needs [RUNTIME-336] ticket"]
fn test_sqlite_483_mutex_interior() {
let result = execute_program(
r"
use std::sync::Mutex;
let x = Mutex::new(5);
*x.lock().unwrap() += 1;
",
);
assert!(result.is_ok(), "Mutex interior mutability should work");
}
#[test]
#[ignore = "Runtime limitation: RwLock patterns not implemented - needs [RUNTIME-337] ticket"]
fn test_sqlite_484_rwlock_pattern() {
let result = execute_program(
r"
use std::sync::RwLock;
let x = RwLock::new(5);
let r = x.read().unwrap();
",
);
assert!(result.is_ok(), "RwLock patterns should work");
}
#[test]
#[ignore = "Runtime limitation: atomic operations not implemented - needs [RUNTIME-338] ticket"]
fn test_sqlite_485_atomic_ops() {
let result = execute_program(
r"
use std::sync::atomic::{AtomicI32, Ordering};
let x = AtomicI32::new(5);
x.fetch_add(1, Ordering::SeqCst);
",
);
assert!(result.is_ok(), "Atomic operations should work");
}
#[test]
#[ignore = "Runtime limitation: trait alias not implemented - needs [RUNTIME-339] ticket"]
fn test_sqlite_486_trait_alias() {
let result = execute_program(
r"
trait Trait1 {}
trait Trait2 {}
trait Combined = Trait1 + Trait2;
",
);
assert!(result.is_ok(), "Trait alias should work");
}
#[test]
#[ignore = "Runtime limitation: negative trait bounds not implemented - needs [RUNTIME-340] ticket"]
fn test_sqlite_487_negative_bounds() {
let result = execute_program(
r"
fun foo<T: !Send>(x: T) {}
",
);
assert!(result.is_ok(), "Negative trait bounds should work");
}
#[test]
#[ignore = "Runtime limitation: auto traits not implemented - needs [RUNTIME-341] ticket"]
fn test_sqlite_488_auto_trait() {
let result = execute_program(
r"
auto trait MyAuto {}
struct MyStruct;
",
);
assert!(result.is_ok(), "Auto traits should work");
}
#[test]
#[ignore = "Runtime limitation: trait object upcasting not implemented - needs [RUNTIME-342] ticket"]
fn test_sqlite_489_trait_upcast() {
let result = execute_program(
r"
trait Base {}
trait Derived: Base {}
let x: Box<dyn Derived> = Box::new(MyType);
let y: Box<dyn Base> = x;
",
);
assert!(result.is_ok(), "Trait object upcasting should work");
}
#[test]
#[ignore = "Runtime limitation: dyn trait multiple bounds not implemented - needs [RUNTIME-343] ticket"]
fn test_sqlite_490_dyn_multiple_bounds() {
let result = execute_program(
r"
trait Trait1 {}
trait Trait2 {}
let x: Box<dyn Trait1 + Trait2 + Send>;
",
);
assert!(result.is_ok(), "Dyn trait multiple bounds should work");
}
#[test]
#[ignore = "Runtime limitation: array initialization not implemented - needs [RUNTIME-344] ticket"]
fn test_sqlite_491_array_init() {
let result = execute_program(
r"
let arr: [i32; 5] = [0; 5];
",
);
assert!(result.is_ok(), "Array initialization should work");
}
#[test]
#[ignore = "Runtime limitation: slice from array not implemented - needs [RUNTIME-345] ticket"]
fn test_sqlite_492_slice_from_array() {
let result = execute_program(
r"
let arr = [1, 2, 3, 4, 5];
let slice = &arr[1..3];
",
);
assert!(result.is_ok(), "Slice from array should work");
}
#[test]
#[ignore = "Runtime limitation: mutable slice not implemented - needs [RUNTIME-346] ticket"]
fn test_sqlite_493_mut_slice() {
let result = execute_program(
r"
let mut arr = [1, 2, 3];
let slice = &mut arr[..];
slice[0] = 10;
",
);
assert!(result.is_ok(), "Mutable slice should work");
}
#[test]
#[ignore = "Runtime limitation: slice methods not implemented - needs [RUNTIME-347] ticket"]
fn test_sqlite_494_slice_methods() {
let result = execute_program(
r"
let arr = [1, 2, 3, 4, 5];
let first = arr.first();
let last = arr.last();
",
);
assert!(result.is_ok(), "Slice methods should work");
}
#[test]
#[ignore = "Runtime limitation: multidimensional arrays not implemented - needs [RUNTIME-348] ticket"]
fn test_sqlite_495_multidim_array() {
let result = execute_program(
r"
let matrix: [[i32; 3]; 3] = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
",
);
assert!(result.is_ok(), "Multidimensional arrays should work");
}
#[test]
#[ignore = "Runtime limitation: string slicing not implemented - needs [RUNTIME-349] ticket"]
fn test_sqlite_496_string_slice() {
let result = execute_program(
r#"
let s = "hello";
let slice = &s[1..4];
"#,
);
assert!(result.is_ok(), "String slicing should work");
}
#[test]
#[ignore = "Runtime limitation: string concatenation not implemented - needs [RUNTIME-350] ticket"]
fn test_sqlite_497_string_concat() {
let result = execute_program(
r#"
let s1 = "hello";
let s2 = " world";
let s3 = s1 + s2;
"#,
);
assert!(result.is_ok(), "String concatenation should work");
}
#[test]
#[ignore = "Runtime limitation: string formatting not implemented - needs [RUNTIME-351] ticket"]
fn test_sqlite_498_string_format() {
let result = execute_program(
r#"
let name = "Alice";
let msg = format!("Hello, {}!", name);
"#,
);
assert!(result.is_ok(), "String formatting should work");
}
#[test]
#[ignore = "Runtime limitation: string methods not implemented - needs [RUNTIME-352] ticket"]
fn test_sqlite_499_string_methods() {
let result = execute_program(
r#"
let s = " hello ";
let trimmed = s.trim();
let upper = s.to_uppercase();
"#,
);
assert!(result.is_ok(), "String methods should work");
}
#[test]
#[ignore = "Runtime limitation: string iteration not implemented - needs [RUNTIME-353] ticket"]
fn test_sqlite_500_string_iter() {
let result = execute_program(
r#"
let s = "hello";
for ch in s.chars() { }
"#,
);
assert!(result.is_ok(), "String iteration should work");
}
#[test]
#[ignore = "Runtime limitation: closure by value capture not implemented - needs [RUNTIME-354] ticket"]
fn test_sqlite_501_closure_by_value() {
let result = execute_program(
r"
let x = 5;
let f = move || x;
f();
",
);
assert!(result.is_ok(), "Closure by value capture should work");
}
#[test]
#[ignore = "Runtime limitation: closure by reference not implemented - needs [RUNTIME-355] ticket"]
fn test_sqlite_502_closure_by_ref() {
let result = execute_program(
r"
let x = 5;
let f = || &x;
f();
",
);
assert!(result.is_ok(), "Closure by reference should work");
}
#[test]
#[ignore = "Runtime limitation: closure mutable capture not implemented - needs [RUNTIME-356] ticket"]
fn test_sqlite_503_closure_mut_capture() {
let result = execute_program(
r"
let mut x = 5;
let mut f = || { x += 1; };
f();
",
);
assert!(result.is_ok(), "Closure mutable capture should work");
}
#[test]
#[ignore = "Runtime limitation: nested closures not implemented - needs [RUNTIME-357] ticket"]
fn test_sqlite_504_nested_closures() {
let result = execute_program(
r"
let x = 5;
let f = || { let g = || x; g() };
f();
",
);
assert!(result.is_ok(), "Nested closures should work");
}
#[test]
#[ignore = "Runtime limitation: closure as return value not implemented - needs [RUNTIME-358] ticket"]
fn test_sqlite_505_closure_return() {
let result = execute_program(
r"
fun make_adder(x: i32) -> impl Fn(i32) -> i32 {
move |y| x + y
}
",
);
assert!(result.is_ok(), "Closure as return value should work");
}
#[test]
#[ignore = "Runtime limitation: iterator chaining not implemented - needs [RUNTIME-359] ticket"]
fn test_sqlite_506_iter_chain() {
let result = execute_program(
r"
let v1 = vec![1, 2, 3];
let v2 = vec![4, 5, 6];
let result: Vec<_> = v1.iter().chain(v2.iter()).collect();
",
);
assert!(result.is_ok(), "Iterator chaining should work");
}
#[test]
#[ignore = "Runtime limitation: iterator zip not implemented - needs [RUNTIME-360] ticket"]
fn test_sqlite_507_iter_zip() {
let result = execute_program(
r"
let v1 = vec![1, 2, 3];
let v2 = vec![4, 5, 6];
let result: Vec<_> = v1.iter().zip(v2.iter()).collect();
",
);
assert!(result.is_ok(), "Iterator zip should work");
}
#[test]
#[ignore = "Runtime limitation: iterator enumerate not implemented - needs [RUNTIME-361] ticket"]
fn test_sqlite_508_iter_enumerate() {
let result = execute_program(
r"
let v = vec![10, 20, 30];
for (i, val) in v.iter().enumerate() { }
",
);
assert!(result.is_ok(), "Iterator enumerate should work");
}
#[test]
#[ignore = "Runtime limitation: iterator skip/take not implemented - needs [RUNTIME-362] ticket"]
fn test_sqlite_509_iter_skip_take() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4, 5];
let result: Vec<_> = v.iter().skip(2).take(2).collect();
",
);
assert!(result.is_ok(), "Iterator skip/take should work");
}
#[test]
#[ignore = "Runtime limitation: custom iterator not implemented - needs [RUNTIME-363] ticket"]
fn test_sqlite_510_custom_iter() {
let result = execute_program(
r"
struct Counter { count: i32 }
impl Iterator for Counter {
type Item = i32;
fun next(&mut self) -> Option<i32> {
self.count += 1;
if self.count < 5 { Some(self.count) } else { None }
}
}
",
);
assert!(result.is_ok(), "Custom iterator should work");
}
#[test]
#[ignore = "Runtime limitation: enum with data not implemented - needs [RUNTIME-364] ticket"]
fn test_sqlite_511_enum_data() {
let result = execute_program(
r#"
enum Message {
Text(String),
Number(i32),
}
let msg = Message::Text("hello".to_string());
"#,
);
assert!(result.is_ok(), "Enum with data should work");
}
#[test]
#[ignore = "Runtime limitation: enum methods not implemented - needs [RUNTIME-365] ticket"]
fn test_sqlite_512_enum_methods() {
let result = execute_program(
r"
enum Status {
Ok,
Error(String),
}
impl Status {
fun is_ok(&self) -> bool {
match self {
Status::Ok => true,
_ => false
}
}
}
",
);
assert!(result.is_ok(), "Enum methods should work");
}
#[test]
#[ignore = "Runtime limitation: enum discriminants not implemented - needs [RUNTIME-366] ticket"]
fn test_sqlite_513_enum_discriminants() {
let result = execute_program(
r"
enum Color {
Red = 1,
Green = 2,
Blue = 3,
}
",
);
assert!(result.is_ok(), "Enum discriminants should work");
}
#[test]
#[ignore = "Runtime limitation: generic enum not implemented - needs [RUNTIME-367] ticket"]
fn test_sqlite_514_enum_generic() {
let result = execute_program(
r"
enum Either<L, R> {
Left(L),
Right(R),
}
let x: Either<i32, String> = Either::Left(42);
",
);
assert!(result.is_ok(), "Generic enum should work");
}
#[test]
#[ignore = "Runtime limitation: enum as trait object not implemented - needs [RUNTIME-368] ticket"]
fn test_sqlite_515_enum_trait_object() {
let result = execute_program(
r"
trait Drawable {}
enum Shape {
Circle,
Square,
}
impl Drawable for Shape {}
let d: Box<dyn Drawable> = Box::new(Shape::Circle);
",
);
assert!(result.is_ok(), "Enum as trait object should work");
}
#[test]
#[ignore = "Runtime limitation: struct update syntax not implemented - needs [RUNTIME-369] ticket"]
fn test_sqlite_516_struct_update() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
let p1 = Point { x: 1, y: 2 };
let p2 = Point { x: 3, ..p1 };
",
);
assert!(result.is_ok(), "Struct update syntax should work");
}
#[test]
#[ignore = "Runtime limitation: tuple struct not implemented - needs [RUNTIME-370] ticket"]
fn test_sqlite_517_tuple_struct() {
let result = execute_program(
r"
struct Color(i32, i32, i32);
let black = Color(0, 0, 0);
",
);
assert!(result.is_ok(), "Tuple struct should work");
}
#[test]
#[ignore = "Runtime limitation: unit struct not implemented - needs [RUNTIME-371] ticket"]
fn test_sqlite_518_unit_struct() {
let result = execute_program(
r"
struct Marker;
let m = Marker;
",
);
assert!(result.is_ok(), "Unit struct should work");
}
#[test]
#[ignore = "Runtime limitation: struct with lifetime not implemented - needs [RUNTIME-372] ticket"]
fn test_sqlite_519_struct_lifetime() {
let result = execute_program(
r"
struct Ref<'a> { value: &'a i32 }
let x = 42;
let r = Ref { value: &x };
",
);
assert!(result.is_ok(), "Struct with lifetime should work");
}
#[test]
#[ignore = "Runtime limitation: struct generics with where not implemented - needs [RUNTIME-373] ticket"]
fn test_sqlite_520_struct_where() {
let result = execute_program(
r"
struct Container<T> where T: Clone {
value: T
}
",
);
assert!(result.is_ok(), "Struct generics with where should work");
}
#[test]
#[ignore = "Runtime limitation: match with guards not implemented - needs [RUNTIME-374] ticket"]
fn test_sqlite_521_match_guard() {
let result = execute_program(
r#"
let x = Some(5);
match x {
Some(n) if n > 3 => "large",
Some(_) => "small",
None => "none"
}
"#,
);
assert!(result.is_ok(), "Match with guards should work");
}
#[test]
#[ignore = "Runtime limitation: match multiple patterns not implemented - needs [RUNTIME-375] ticket"]
fn test_sqlite_522_match_multiple() {
let result = execute_program(
r#"
let x = 1;
match x {
1 | 2 | 3 => "small",
_ => "large"
}
"#,
);
assert!(result.is_ok(), "Match with multiple patterns should work");
}
#[test]
#[ignore = "Runtime limitation: match with ranges not implemented - needs [RUNTIME-376] ticket"]
fn test_sqlite_523_match_range() {
let result = execute_program(
r#"
let x = 5;
match x {
1..=10 => "in range",
_ => "out of range"
}
"#,
);
assert!(result.is_ok(), "Match with ranges should work");
}
#[test]
#[ignore = "Runtime limitation: match with binding not implemented - needs [RUNTIME-377] ticket"]
fn test_sqlite_524_match_binding() {
let result = execute_program(
r"
let x = Some(42);
match x {
Some(n @ 1..=100) => n,
_ => 0
}
",
);
assert!(result.is_ok(), "Match with binding should work");
}
#[test]
#[ignore = "Runtime limitation: match exhaustiveness checking not implemented - needs [RUNTIME-378] ticket"]
fn test_sqlite_525_match_exhaustive() {
let result = execute_program(
r"
enum Status { Ok, Err }
let s = Status::Ok;
match s {
Status::Ok => 1,
Status::Err => 2
}
",
);
assert!(result.is_ok(), "Match exhaustiveness should work");
}
#[test]
#[ignore = "Runtime limitation: function with defaults not implemented - needs [RUNTIME-379] ticket"]
fn test_sqlite_526_fn_defaults() {
let result = execute_program(
r#"
fun greet(name: String = "World") -> String {
format!("Hello, {}!", name)
}
"#,
);
assert!(result.is_ok(), "Function with defaults should work");
}
#[test]
#[ignore = "Runtime limitation: variadic function not implemented - needs [RUNTIME-380] ticket"]
fn test_sqlite_527_fn_variadic() {
let result = execute_program(
r"
fun sum(args: ...i32) -> i32 {
args.iter().sum()
}
",
);
assert!(result.is_ok(), "Variadic function should work");
}
#[test]
#[ignore = "Runtime limitation: function overloading not implemented - needs [RUNTIME-381] ticket"]
fn test_sqlite_528_fn_overload() {
let result = execute_program(
r"
fun add(a: i32, b: i32) -> i32 { a + b }
fun add(a: f64, b: f64) -> f64 { a + b }
",
);
assert!(result.is_ok(), "Function overloading should work");
}
#[test]
#[ignore = "Runtime limitation: function complex return not implemented - needs [RUNTIME-382] ticket"]
fn test_sqlite_529_fn_complex_return() {
let result = execute_program(
r"
fun get_data() -> Result<Vec<i32>, String> {
Ok(vec![1, 2, 3])
}
",
);
assert!(result.is_ok(), "Function with complex return should work");
}
#[test]
#[ignore = "Runtime limitation: function pointer not implemented - needs [RUNTIME-383] ticket"]
fn test_sqlite_530_fn_pointer() {
let result = execute_program(
r"
fun apply(f: fn(i32) -> i32, x: i32) -> i32 {
f(x)
}
",
);
assert!(result.is_ok(), "Function pointer should work");
}
#[test]
#[ignore = "Runtime limitation: From trait not implemented - needs [RUNTIME-384] ticket"]
fn test_sqlite_531_from_trait() {
let result = execute_program(
r"
struct Wrapper(i32);
impl From<i32> for Wrapper {
fun from(x: i32) -> Wrapper {
Wrapper(x)
}
}
",
);
assert!(result.is_ok(), "From trait should work");
}
#[test]
#[ignore = "Runtime limitation: Into trait not implemented - needs [RUNTIME-385] ticket"]
fn test_sqlite_532_into_trait() {
let result = execute_program(
r"
let x: i32 = 5;
let y: i64 = x.into();
",
);
assert!(result.is_ok(), "Into trait should work");
}
#[test]
#[ignore = "Runtime limitation: as cast not implemented - needs [RUNTIME-386] ticket"]
fn test_sqlite_533_as_cast() {
let result = execute_program(
r"
let x: f64 = 5.7;
let y: i32 = x as i32;
",
);
assert!(result.is_ok(), "As cast should work");
}
#[test]
#[ignore = "Runtime limitation: transmute not implemented - needs [RUNTIME-387] ticket"]
fn test_sqlite_534_transmute() {
let result = execute_program(
r"
unsafe {
let x: f32 = 1.0;
let y: u32 = std::mem::transmute(x);
}
",
);
assert!(result.is_ok(), "Transmute should work");
}
#[test]
#[ignore = "Runtime limitation: type coercion not implemented - needs [RUNTIME-388] ticket"]
fn test_sqlite_535_type_coercion() {
let result = execute_program(
r"
fun takes_ref(x: &i32) {}
let x = 42;
takes_ref(&x);
",
);
assert!(result.is_ok(), "Type coercion should work");
}
#[test]
#[ignore = "Runtime limitation: Vec operations not implemented - needs [RUNTIME-389] ticket"]
fn test_sqlite_536_vec_ops() {
let result = execute_program(
r"
let mut v = vec![1, 2, 3];
v.push(4);
v.pop();
let len = v.len();
",
);
assert!(result.is_ok(), "Vec operations should work");
}
#[test]
#[ignore = "Runtime limitation: HashMap operations not implemented - needs [RUNTIME-390] ticket"]
fn test_sqlite_537_hashmap_ops() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key", 42);
let val = map.get("key");
"#,
);
assert!(result.is_ok(), "HashMap operations should work");
}
#[test]
#[ignore = "Runtime limitation: Option combinators not implemented - needs [RUNTIME-391] ticket"]
fn test_sqlite_538_option_combinators() {
let result = execute_program(
r"
let x = Some(5);
let y = x.map(|n| n * 2).and_then(|n| Some(n + 1));
",
);
assert!(result.is_ok(), "Option combinators should work");
}
#[test]
#[ignore = "Runtime limitation: Result combinators not implemented - needs [RUNTIME-392] ticket"]
fn test_sqlite_539_result_combinators() {
let result = execute_program(
r"
let x: Result<i32, String> = Ok(5);
let y = x.map(|n| n * 2).or_else(|_| Ok(0));
",
);
assert!(result.is_ok(), "Result combinators should work");
}
#[test]
#[ignore = "Runtime limitation: Range operations not implemented - needs [RUNTIME-393] ticket"]
fn test_sqlite_540_range_ops() {
let result = execute_program(
r"
let r = 1..10;
for i in r { }
let inclusive = 1..=10;
",
);
assert!(result.is_ok(), "Range operations should work");
}
#[test]
#[ignore = "Runtime limitation: borrow checker not implemented - needs [RUNTIME-394] ticket"]
fn test_sqlite_541_borrow_basic() {
let result = execute_program(
r"
let x = 5;
let y = &x;
let z = &x;
",
);
assert!(result.is_ok(), "Multiple immutable borrows should work");
}
#[test]
#[ignore = "Runtime limitation: exclusive mutable borrow not enforced - needs [RUNTIME-395] ticket"]
fn test_sqlite_542_mut_borrow_exclusive() {
let result = execute_program(
r"
let mut x = 5;
let y = &mut x;
*y += 1;
",
);
assert!(result.is_ok(), "Exclusive mutable borrow should work");
}
#[test]
#[ignore = "Runtime limitation: borrow lifetime checking not implemented - needs [RUNTIME-396] ticket"]
fn test_sqlite_543_borrow_lifetime() {
let result = execute_program(
r"
let r;
{
let x = 5;
r = &x;
}
",
);
assert!(result.is_err(), "Borrowed value should not outlive owner");
}
#[test]
#[ignore = "Runtime limitation: move semantics not implemented - needs [RUNTIME-397] ticket"]
fn test_sqlite_544_move_semantics() {
let result = execute_program(
r#"
let s1 = String::from("hello");
let s2 = s1;
"#,
);
assert!(result.is_ok(), "Move semantics should work");
}
#[test]
#[ignore = "Runtime limitation: Copy trait not implemented - needs [RUNTIME-398] ticket"]
fn test_sqlite_545_copy_trait() {
let result = execute_program(
r"
let x = 5;
let y = x;
let z = x;
",
);
assert!(result.is_ok(), "Copy trait should allow multiple uses");
}
#[test]
#[ignore = "Runtime limitation: macro invocation not implemented - needs [RUNTIME-399] ticket"]
fn test_sqlite_546_macro_invoke() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
",
);
assert!(result.is_ok(), "Macro invocation should work");
}
#[test]
#[ignore = "Runtime limitation: macro expansion not implemented - needs [RUNTIME-400] ticket"]
fn test_sqlite_547_macro_expand() {
let result = execute_program(
r"
macro_rules! double {
($x:expr) => { $x * 2 }
}
let result = double!(5);
",
);
assert!(result.is_ok(), "Macro expansion should work");
}
#[test]
#[ignore = "Runtime limitation: macro hygiene not implemented - needs [RUNTIME-401] ticket"]
fn test_sqlite_548_macro_hygiene() {
let result = execute_program(
r"
macro_rules! my_macro {
() => { let x = 1; }
}
my_macro!();
let x = 2;
",
);
assert!(
result.is_ok(),
"Macro hygiene should prevent name conflicts"
);
}
#[test]
#[ignore = "Runtime limitation: macro repetition not implemented - needs [RUNTIME-402] ticket"]
fn test_sqlite_549_macro_repeat() {
let result = execute_program(
r"
macro_rules! sum {
($($x:expr),*) => { $($x)+* }
}
let result = sum!(1, 2, 3);
",
);
assert!(result.is_ok(), "Macro repetition should work");
}
#[test]
#[ignore = "Runtime limitation: macro metavariables not implemented - needs [RUNTIME-403] ticket"]
fn test_sqlite_550_macro_metavar() {
let result = execute_program(
r"
macro_rules! create_fn {
($name:ident) => {
fun $name() -> i32 { 42 }
}
}
create_fn!(my_func);
",
);
assert!(result.is_ok(), "Macro metavariables should work");
}
#[test]
#[ignore = "Runtime limitation: module visibility not implemented - needs [RUNTIME-404] ticket"]
fn test_sqlite_551_mod_visibility() {
let result = execute_program(
r"
mod outer {
pub fun public_fn() { }
fun private_fn() { }
}
outer::public_fn();
",
);
assert!(result.is_ok(), "Module visibility should work");
}
#[test]
#[ignore = "Runtime limitation: nested modules not implemented - needs [RUNTIME-405] ticket"]
fn test_sqlite_552_nested_mods() {
let result = execute_program(
r"
mod outer {
pub mod inner {
pub fun foo() { }
}
}
outer::inner::foo();
",
);
assert!(result.is_ok(), "Nested modules should work");
}
#[test]
#[ignore = "Runtime limitation: use statements not implemented - needs [RUNTIME-406] ticket"]
fn test_sqlite_553_use_stmt() {
let result = execute_program(
r"
mod my_mod {
pub fun my_fn() { }
}
use my_mod::my_fn;
my_fn();
",
);
assert!(result.is_ok(), "Use statements should work");
}
#[test]
#[ignore = "Runtime limitation: glob imports not implemented - needs [RUNTIME-407] ticket"]
fn test_sqlite_554_glob_import() {
let result = execute_program(
r"
mod my_mod {
pub fun fn1() { }
pub fun fn2() { }
}
use my_mod::*;
fn1();
",
);
assert!(result.is_ok(), "Glob imports should work");
}
#[test]
#[ignore = "Runtime limitation: re-exports not implemented - needs [RUNTIME-408] ticket"]
fn test_sqlite_555_reexport() {
let result = execute_program(
r"
mod inner {
pub fun foo() { }
}
mod outer {
pub use super::inner::foo;
}
outer::foo();
",
);
assert!(result.is_ok(), "Re-exports should work");
}
#[test]
#[ignore = "Runtime limitation: generic functions not implemented - needs [RUNTIME-409] ticket"]
fn test_sqlite_556_generic_fn() {
let result = execute_program(
r"
fun identity<T>(x: T) -> T { x }
let result = identity(42);
",
);
assert!(result.is_ok(), "Generic functions should work");
}
#[test]
#[ignore = "Runtime limitation: generic function bounds not implemented - needs [RUNTIME-410] ticket"]
fn test_sqlite_557_generic_fn_bounds() {
let result = execute_program(
r"
fun print_clone<T: Clone>(x: T) {
let y = x.clone();
}
",
);
assert!(result.is_ok(), "Generic function bounds should work");
}
#[test]
#[ignore = "Runtime limitation: generic function multiple params not implemented - needs [RUNTIME-411] ticket"]
fn test_sqlite_558_generic_fn_multi() {
let result = execute_program(
r"
fun pair<T, U>(x: T, y: U) -> (T, U) {
(x, y)
}
",
);
assert!(
result.is_ok(),
"Generic functions with multiple params should work"
);
}
#[test]
#[ignore = "Runtime limitation: generic function type inference not implemented - needs [RUNTIME-412] ticket"]
fn test_sqlite_559_generic_fn_infer() {
let result = execute_program(
r"
fun wrap<T>(x: T) -> Option<T> {
Some(x)
}
let result = wrap(42);
",
);
assert!(
result.is_ok(),
"Generic function type inference should work"
);
}
#[test]
#[ignore = "Runtime limitation: turbofish syntax not implemented - needs [RUNTIME-413] ticket"]
fn test_sqlite_560_turbofish() {
let result = execute_program(
r"
fun identity<T>(x: T) -> T { x }
let result = identity::<i32>(42);
",
);
assert!(result.is_ok(), "Turbofish syntax should work");
}
#[test]
#[ignore = "Runtime limitation: trait object creation not implemented - needs [RUNTIME-414] ticket"]
fn test_sqlite_561_trait_obj_create() {
let result = execute_program(
r"
trait Animal {
fun speak(&self);
}
struct Dog;
impl Animal for Dog {
fun speak(&self) { }
}
let animal: Box<dyn Animal> = Box::new(Dog);
",
);
assert!(result.is_ok(), "Trait object creation should work");
}
#[test]
#[ignore = "Runtime limitation: trait object method call not implemented - needs [RUNTIME-415] ticket"]
fn test_sqlite_562_trait_obj_call() {
let result = execute_program(
r#"
trait Greet {
fun greet(&self) -> String;
}
struct Person;
impl Greet for Person {
fun greet(&self) -> String { "Hello".to_string() }
}
let g: Box<dyn Greet> = Box::new(Person);
g.greet();
"#,
);
assert!(result.is_ok(), "Trait object method call should work");
}
#[test]
#[ignore = "Runtime limitation: trait object downcasting not implemented - needs [RUNTIME-416] ticket"]
fn test_sqlite_563_trait_obj_downcast() {
let result = execute_program(
r"
use std::any::Any;
let x: Box<dyn Any> = Box::new(42);
let y = x.downcast::<i32>();
",
);
assert!(result.is_ok(), "Trait object downcasting should work");
}
#[test]
#[ignore = "Runtime limitation: trait object with associated types not implemented - needs [RUNTIME-417] ticket"]
fn test_sqlite_564_trait_obj_assoc() {
let result = execute_program(
r"
trait Iterator {
type Item;
fun next(&mut self) -> Option<Self::Item>;
}
",
);
assert!(
result.is_ok(),
"Trait object with associated types should work"
);
}
#[test]
#[ignore = "Runtime limitation: trait object sizing not implemented - needs [RUNTIME-418] ticket"]
fn test_sqlite_565_trait_obj_size() {
let result = execute_program(
r"
trait Drawable {}
struct Circle;
impl Drawable for Circle {}
let d: &dyn Drawable = &Circle;
",
);
assert!(result.is_ok(), "Trait object sizing should work");
}
#[test]
#[ignore = "Runtime limitation: thread spawn not implemented - needs [RUNTIME-419] ticket"]
fn test_sqlite_566_thread_spawn() {
let result = execute_program(
r"
use std::thread;
let handle = thread::spawn(|| { 42 });
let result = handle.join();
",
);
assert!(result.is_ok(), "Thread spawn should work");
}
#[test]
#[ignore = "Runtime limitation: Arc sharing not implemented - needs [RUNTIME-420] ticket"]
fn test_sqlite_567_arc_share() {
let result = execute_program(
r"
use std::sync::Arc;
let data = Arc::new(vec![1, 2, 3]);
let data2 = Arc::clone(&data);
",
);
assert!(result.is_ok(), "Arc sharing should work");
}
#[test]
#[ignore = "Runtime limitation: channel communication not implemented - needs [RUNTIME-421] ticket"]
fn test_sqlite_568_channel() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
tx.send(42).unwrap();
let val = rx.recv().unwrap();
",
);
assert!(result.is_ok(), "Channel communication should work");
}
#[test]
#[ignore = "Runtime limitation: Mutex synchronization not implemented - needs [RUNTIME-422] ticket"]
fn test_sqlite_569_mutex_sync() {
let result = execute_program(
r"
use std::sync::Mutex;
let m = Mutex::new(5);
let mut num = m.lock().unwrap();
*num = 6;
",
);
assert!(result.is_ok(), "Mutex synchronization should work");
}
#[test]
#[ignore = "Runtime limitation: Send/Sync traits not implemented - needs [RUNTIME-423] ticket"]
fn test_sqlite_570_send_sync() {
let result = execute_program(
r"
fun is_send<T: Send>() {}
fun is_sync<T: Sync>() {}
is_send::<i32>();
is_sync::<i32>();
",
);
assert!(result.is_ok(), "Send/Sync traits should work");
}
#[test]
#[ignore = "Runtime limitation: async executor not implemented - needs [RUNTIME-424] ticket"]
fn test_sqlite_571_async_exec() {
let result = execute_program(
r"
async fun foo() -> i32 { 42 }
let result = foo().await;
",
);
assert!(result.is_ok(), "Async executor should work");
}
#[test]
#[ignore = "Runtime limitation: async task spawning not implemented - needs [RUNTIME-425] ticket"]
fn test_sqlite_572_async_spawn() {
let result = execute_program(
r"
async fun task() { }
let handle = tokio::spawn(task());
",
);
assert!(result.is_ok(), "Async task spawning should work");
}
#[test]
#[ignore = "Runtime limitation: async select not implemented - needs [RUNTIME-426] ticket"]
fn test_sqlite_573_async_select() {
let result = execute_program(
r"
async fun foo() -> i32 { 1 }
async fun bar() -> i32 { 2 }
let result = tokio::select! {
x = foo() => x,
y = bar() => y,
};
",
);
assert!(result.is_ok(), "Async select should work");
}
#[test]
#[ignore = "Runtime limitation: async timeout not implemented - needs [RUNTIME-427] ticket"]
fn test_sqlite_574_async_timeout() {
let result = execute_program(
r"
use tokio::time::{timeout, Duration};
async fun slow() { }
let result = timeout(Duration::from_secs(1), slow()).await;
",
);
assert!(result.is_ok(), "Async timeout should work");
}
#[test]
#[ignore = "Runtime limitation: async streams not implemented - needs [RUNTIME-428] ticket"]
fn test_sqlite_575_async_stream() {
let result = execute_program(
r"
use futures::stream::{self, StreamExt};
let stream = stream::iter(vec![1, 2, 3]);
stream.for_each(|x| async { }).await;
",
);
assert!(result.is_ok(), "Async streams should work");
}
#[test]
#[ignore = "Runtime limitation: memory allocation tracking not implemented - needs [RUNTIME-429] ticket"]
fn test_sqlite_576_mem_alloc() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4, 5];
drop(v);
",
);
assert!(result.is_ok(), "Memory allocation should work");
}
#[test]
#[ignore = "Runtime limitation: stack/heap distinction not implemented - needs [RUNTIME-430] ticket"]
fn test_sqlite_577_stack_heap() {
let result = execute_program(
r"
let stack_val = 42;
let heap_val = Box::new(42);
",
);
assert!(result.is_ok(), "Stack vs heap should work");
}
#[test]
#[ignore = "Runtime limitation: memory leak detection not implemented - needs [RUNTIME-431] ticket"]
fn test_sqlite_578_mem_leak() {
let result = execute_program(
r"
use std::rc::Rc;
let a = Rc::new(5);
let b = Rc::clone(&a);
",
);
assert!(result.is_ok(), "Memory leak detection should work");
}
#[test]
#[ignore = "Runtime limitation: weak references not implemented - needs [RUNTIME-432] ticket"]
fn test_sqlite_579_weak_ref() {
let result = execute_program(
r"
use std::rc::{Rc, Weak};
let strong = Rc::new(5);
let weak: Weak<_> = Rc::downgrade(&strong);
",
);
assert!(result.is_ok(), "Weak references should work");
}
#[test]
#[ignore = "Runtime limitation: custom allocators not implemented - needs [RUNTIME-433] ticket"]
fn test_sqlite_580_custom_alloc() {
let result = execute_program(
r"
use std::alloc::{System, GlobalAlloc};
let layout = Layout::new::<i32>();
unsafe { System.alloc(layout) };
",
);
assert!(result.is_ok(), "Custom allocators should work");
}
#[test]
#[ignore = "Runtime limitation: C function calling not implemented - needs [RUNTIME-434] ticket"]
fn test_sqlite_581_c_call() {
let result = execute_program(
r#"
extern "C" {
fun abs(x: i32) -> i32;
}
unsafe { abs(-5); }
"#,
);
assert!(result.is_ok(), "C function calling should work");
}
#[test]
#[ignore = "Runtime limitation: FFI types not implemented - needs [RUNTIME-435] ticket"]
fn test_sqlite_582_ffi_types() {
let result = execute_program(
r"
use std::os::raw::{c_int, c_char};
let x: c_int = 42;
",
);
assert!(result.is_ok(), "FFI types should work");
}
#[test]
#[ignore = "Runtime limitation: callback functions not implemented - needs [RUNTIME-436] ticket"]
fn test_sqlite_583_callback() {
let result = execute_program(
r#"
extern "C" fun callback(x: i32) -> i32 { x * 2 }
type Callback = extern "C" fn(i32) -> i32;
let cb: Callback = callback;
"#,
);
assert!(result.is_ok(), "Callback functions should work");
}
#[test]
#[ignore = "Runtime limitation: external library linking not implemented - needs [RUNTIME-437] ticket"]
fn test_sqlite_584_extern_lib() {
let result = execute_program(
r#"
#[link(name = "m")]
extern "C" {
fun sqrt(x: f64) -> f64;
}
"#,
);
assert!(result.is_ok(), "External library linking should work");
}
#[test]
#[ignore = "Runtime limitation: raw pointer conversion not implemented - needs [RUNTIME-438] ticket"]
fn test_sqlite_585_raw_ptr_conv() {
let result = execute_program(
r"
let x = 5;
let ptr = &x as *const i32;
unsafe { *ptr };
",
);
assert!(result.is_ok(), "Raw pointer conversion should work");
}
#[test]
#[ignore = "Runtime limitation: zero-cost abstraction verification not implemented - needs [RUNTIME-439] ticket"]
fn test_sqlite_586_zero_cost() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let sum: i32 = v.iter().map(|x| x * 2).sum();
",
);
assert!(result.is_ok(), "Zero-cost abstraction should work");
}
#[test]
#[ignore = "Runtime limitation: inline optimization not implemented - needs [RUNTIME-440] ticket"]
fn test_sqlite_587_inline() {
let result = execute_program(
r"
#[inline(always)]
fun add(a: i32, b: i32) -> i32 { a + b }
let result = add(1, 2);
",
);
assert!(result.is_ok(), "Inline optimization should work");
}
#[test]
#[ignore = "Runtime limitation: const evaluation not implemented - needs [RUNTIME-441] ticket"]
fn test_sqlite_588_const_eval() {
let result = execute_program(
r"
const fn factorial(n: u32) -> u32 {
if n == 0 { 1 } else { n * factorial(n - 1) }
}
const RESULT: u32 = factorial(5);
",
);
assert!(result.is_ok(), "Const evaluation should work");
}
#[test]
#[ignore = "Runtime limitation: SIMD operations not implemented - needs [RUNTIME-442] ticket"]
fn test_sqlite_589_simd() {
let result = execute_program(
r"
use std::arch::x86_64::*;
unsafe {
let a = _mm_set_ps(1.0, 2.0, 3.0, 4.0);
let b = _mm_set_ps(5.0, 6.0, 7.0, 8.0);
let c = _mm_add_ps(a, b);
}
",
);
assert!(result.is_ok(), "SIMD operations should work");
}
#[test]
#[ignore = "Runtime limitation: lazy evaluation not implemented - needs [RUNTIME-443] ticket"]
fn test_sqlite_590_lazy_eval() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4, 5];
let iter = v.iter().map(|x| x * 2);
let first = iter.take(2).collect::<Vec<_>>();
",
);
assert!(result.is_ok(), "Lazy evaluation should work");
}
#[test]
#[ignore = "Runtime limitation: tuple destructuring not implemented - needs [RUNTIME-444] ticket"]
fn test_sqlite_591_tuple_destruct() {
let result = execute_program(
r"
let (x, y, z) = (1, 2, 3);
",
);
assert!(result.is_ok(), "Tuple destructuring should work");
}
#[test]
#[ignore = "Runtime limitation: nested destructuring not implemented - needs [RUNTIME-445] ticket"]
fn test_sqlite_592_nested_destruct() {
let result = execute_program(
r"
let ((a, b), c) = ((1, 2), 3);
",
);
assert!(result.is_ok(), "Nested destructuring should work");
}
#[test]
#[ignore = "Runtime limitation: struct destructuring not implemented - needs [RUNTIME-446] ticket"]
fn test_sqlite_593_struct_destruct() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
let Point { x, y } = Point { x: 1, y: 2 };
",
);
assert!(result.is_ok(), "Struct destructuring should work");
}
#[test]
#[ignore = "Runtime limitation: array destructuring not implemented - needs [RUNTIME-447] ticket"]
fn test_sqlite_594_array_destruct() {
let result = execute_program(
r"
let [a, b, c] = [1, 2, 3];
",
);
assert!(result.is_ok(), "Array destructuring should work");
}
#[test]
#[ignore = "Runtime limitation: slice pattern destructuring not implemented - needs [RUNTIME-448] ticket"]
fn test_sqlite_595_slice_destruct() {
let result = execute_program(
r"
let [first, .., last] = [1, 2, 3, 4, 5];
",
);
assert!(result.is_ok(), "Slice pattern destructuring should work");
}
#[test]
#[ignore = "Runtime limitation: type inference not implemented - needs [RUNTIME-449] ticket"]
fn test_sqlite_596_type_inference() {
let result = execute_program(
r"
let x = 42;
let y = x + 1;
",
);
assert!(result.is_ok(), "Type inference should work");
}
#[test]
#[ignore = "Runtime limitation: type ascription not implemented - needs [RUNTIME-450] ticket"]
fn test_sqlite_597_type_ascription() {
let result = execute_program(
r"
let x = 42: i32;
",
);
assert!(result.is_ok(), "Type ascription should work");
}
#[test]
#[ignore = "Runtime limitation: type bounds checking not implemented - needs [RUNTIME-451] ticket"]
fn test_sqlite_598_type_bounds() {
let result = execute_program(
r"
fun foo<T: Clone>(x: T) { }
foo(42);
",
);
assert!(result.is_ok(), "Type bounds checking should work");
}
#[test]
#[ignore = "Runtime limitation: type unification not implemented - needs [RUNTIME-452] ticket"]
fn test_sqlite_599_type_unify() {
let result = execute_program(
r"
let x = if true { 1 } else { 2 };
",
);
assert!(result.is_ok(), "Type unification should work");
}
#[test]
#[ignore = "Runtime limitation: recursive types not implemented - needs [RUNTIME-453] ticket"]
fn test_sqlite_600_recursive_type() {
let result = execute_program(
r"
enum List {
Nil,
Cons(i32, Box<List>),
}
",
);
assert!(result.is_ok(), "Recursive types should work");
}
#[test]
#[ignore = "Runtime limitation: early return not implemented - needs [RUNTIME-454] ticket"]
fn test_sqlite_601_early_return() {
let result = execute_program(
r"
fun foo() -> i32 {
return 42;
100
}
",
);
assert!(result.is_ok(), "Early return should work");
}
#[test]
#[ignore = "Runtime limitation: nested loops not implemented - needs [RUNTIME-455] ticket"]
fn test_sqlite_602_nested_loops() {
let result = execute_program(
r"
for i in 0..3 {
for j in 0..3 {
let x = i * j;
}
}
",
);
assert!(result.is_ok(), "Nested loops should work");
}
#[test]
#[ignore = "Runtime limitation: labeled breaks not implemented - needs [RUNTIME-456] ticket"]
fn test_sqlite_603_labeled_break() {
let result = execute_program(
r"
'outer: for i in 0..3 {
for j in 0..3 {
break 'outer;
}
}
",
);
assert!(result.is_ok(), "Labeled breaks should work");
}
#[test]
#[ignore = "Runtime limitation: continue in loop not implemented - needs [RUNTIME-457] ticket"]
fn test_sqlite_604_continue() {
let result = execute_program(
r"
for i in 0..5 {
if i == 2 { continue; }
}
",
);
assert!(result.is_ok(), "Continue in loop should work");
}
#[test]
#[ignore = "Runtime limitation: loop expressions not implemented - needs [RUNTIME-458] ticket"]
fn test_sqlite_605_loop_expr() {
let result = execute_program(
r"
let x = loop { break 42; };
",
);
assert!(result.is_ok(), "Loop expressions should work");
}
#[test]
#[ignore = "Runtime limitation: Add trait not implemented - needs [RUNTIME-459] ticket"]
fn test_sqlite_606_add_trait() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
impl std::ops::Add for Point {
type Output = Point;
fun add(self, other: Point) -> Point {
Point { x: self.x + other.x, y: self.y + other.y }
}
}
",
);
assert!(result.is_ok(), "Add trait should work");
}
#[test]
#[ignore = "Runtime limitation: Index trait not implemented - needs [RUNTIME-460] ticket"]
fn test_sqlite_607_index_trait() {
let result = execute_program(
r"
struct MyVec { data: Vec<i32> }
impl std::ops::Index<usize> for MyVec {
type Output = i32;
fun index(&self, idx: usize) -> &i32 {
&self.data[idx]
}
}
",
);
assert!(result.is_ok(), "Index trait should work");
}
#[test]
#[ignore = "Runtime limitation: Deref trait not implemented - needs [RUNTIME-461] ticket"]
fn test_sqlite_608_deref_trait() {
let result = execute_program(
r"
struct MyBox<T>(T);
impl<T> std::ops::Deref for MyBox<T> {
type Target = T;
fun deref(&self) -> &T {
&self.0
}
}
",
);
assert!(result.is_ok(), "Deref trait should work");
}
#[test]
#[ignore = "Runtime limitation: Mul trait not implemented - needs [RUNTIME-462] ticket"]
fn test_sqlite_609_mul_trait() {
let result = execute_program(
r"
struct Scalar(i32);
impl std::ops::Mul for Scalar {
type Output = Scalar;
fun mul(self, other: Scalar) -> Scalar {
Scalar(self.0 * other.0)
}
}
",
);
assert!(result.is_ok(), "Mul trait should work");
}
#[test]
#[ignore = "Runtime limitation: Neg trait not implemented - needs [RUNTIME-463] ticket"]
fn test_sqlite_610_neg_trait() {
let result = execute_program(
r"
struct Value(i32);
impl std::ops::Neg for Value {
type Output = Value;
fun neg(self) -> Value {
Value(-self.0)
}
}
",
);
assert!(result.is_ok(), "Neg trait should work");
}
#[test]
#[ignore = "Runtime limitation: Box usage not implemented - needs [RUNTIME-464] ticket"]
fn test_sqlite_611_box_usage() {
let result = execute_program(
r"
let b = Box::new(42);
let x = *b;
",
);
assert!(result.is_ok(), "Box usage should work");
}
#[test]
#[ignore = "Runtime limitation: Rc usage not implemented - needs [RUNTIME-465] ticket"]
fn test_sqlite_612_rc_usage() {
let result = execute_program(
r"
use std::rc::Rc;
let a = Rc::new(5);
let b = Rc::clone(&a);
",
);
assert!(result.is_ok(), "Rc usage should work");
}
#[test]
#[ignore = "Runtime limitation: Arc usage not implemented - needs [RUNTIME-466] ticket"]
fn test_sqlite_613_arc_usage() {
let result = execute_program(
r"
use std::sync::Arc;
let a = Arc::new(5);
let b = Arc::clone(&a);
",
);
assert!(result.is_ok(), "Arc usage should work");
}
#[test]
#[ignore = "Runtime limitation: RefCell usage not implemented - needs [RUNTIME-467] ticket"]
fn test_sqlite_614_refcell_usage() {
let result = execute_program(
r"
use std::cell::RefCell;
let x = RefCell::new(5);
*x.borrow_mut() = 10;
",
);
assert!(result.is_ok(), "RefCell usage should work");
}
#[test]
#[ignore = "Runtime limitation: Cow usage not implemented - needs [RUNTIME-468] ticket"]
fn test_sqlite_615_cow_usage() {
let result = execute_program(
r#"
use std::borrow::Cow;
let s: Cow<str> = "hello".into();
"#,
);
assert!(result.is_ok(), "Cow usage should work");
}
#[test]
#[ignore = "Runtime limitation: match guard not implemented - needs [RUNTIME-469] ticket"]
fn test_sqlite_616_match_guard() {
let result = execute_program(
r#"
let x = Some(5);
match x {
Some(n) if n > 3 => "large",
_ => "small"
}
"#,
);
assert!(result.is_ok(), "Match guard should work");
}
#[test]
#[ignore = "Runtime limitation: if let guard not implemented - needs [RUNTIME-470] ticket"]
fn test_sqlite_617_if_let_guard() {
let result = execute_program(
r#"
let x = Some(5);
if let Some(n) = x {
if n > 3 { "large" } else { "small" }
} else { "none" }
"#,
);
assert!(result.is_ok(), "If let guard should work");
}
#[test]
#[ignore = "Runtime limitation: while let guard not implemented - needs [RUNTIME-471] ticket"]
fn test_sqlite_618_while_let_guard() {
let result = execute_program(
r"
let mut x = Some(0);
while let Some(n) = x {
if n >= 5 { x = None; } else { x = Some(n + 1); }
}
",
);
assert!(result.is_ok(), "While let guard should work");
}
#[test]
#[ignore = "Runtime limitation: guard with complex pattern not implemented - needs [RUNTIME-472] ticket"]
fn test_sqlite_619_guard_complex() {
let result = execute_program(
r#"
match (1, 2) {
(x, y) if x + y == 3 => "match",
_ => "no match"
}
"#,
);
assert!(result.is_ok(), "Guard with complex pattern should work");
}
#[test]
#[ignore = "Runtime limitation: guard with range not implemented - needs [RUNTIME-473] ticket"]
fn test_sqlite_620_guard_range() {
let result = execute_program(
r#"
let x = 5;
match x {
n if (1..=10).contains(&n) => "in range",
_ => "out of range"
}
"#,
);
assert!(result.is_ok(), "Guard with range should work");
}
#[test]
#[ignore = "Runtime limitation: explicit lifetime not implemented - needs [RUNTIME-474] ticket"]
fn test_sqlite_621_explicit_lifetime() {
let result = execute_program(
r"
fun longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() { x } else { y }
}
",
);
assert!(result.is_ok(), "Explicit lifetime should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime in struct not implemented - needs [RUNTIME-475] ticket"]
fn test_sqlite_622_lifetime_struct() {
let result = execute_program(
r"
struct Ref<'a> { value: &'a i32 }
let x = 42;
let r = Ref { value: &x };
",
);
assert!(result.is_ok(), "Lifetime in struct should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime elision not implemented - needs [RUNTIME-476] ticket"]
fn test_sqlite_623_lifetime_elision() {
let result = execute_program(
r"
fun first(x: &str) -> &str {
&x[0..1]
}
",
);
assert!(result.is_ok(), "Lifetime elision should work");
}
#[test]
#[ignore = "Runtime limitation: multiple lifetimes not implemented - needs [RUNTIME-477] ticket"]
fn test_sqlite_624_multiple_lifetimes() {
let result = execute_program(
r"
fun foo<'a, 'b>(x: &'a str, y: &'b str) -> &'a str {
x
}
",
);
assert!(result.is_ok(), "Multiple lifetimes should work");
}
#[test]
#[ignore = "Runtime limitation: static lifetime not implemented - needs [RUNTIME-478] ticket"]
fn test_sqlite_625_static_lifetime() {
let result = execute_program(
r#"
static MSG: &'static str = "Hello";
"#,
);
assert!(result.is_ok(), "Static lifetime should work");
}
#[test]
#[ignore = "Runtime limitation: trait implementation not implemented - needs [RUNTIME-479] ticket"]
fn test_sqlite_626_trait_impl() {
let result = execute_program(
r#"
trait Speak {
fun speak(&self) -> String;
}
struct Dog;
impl Speak for Dog {
fun speak(&self) -> String { "Woof".to_string() }
}
"#,
);
assert!(result.is_ok(), "Trait implementation should work");
}
#[test]
#[ignore = "Runtime limitation: default trait method not implemented - needs [RUNTIME-480] ticket"]
fn test_sqlite_627_default_method() {
let result = execute_program(
r#"
trait Summary {
fun summarize(&self) -> String {
"Read more...".to_string()
}
}
"#,
);
assert!(result.is_ok(), "Default trait method should work");
}
#[test]
#[ignore = "Runtime limitation: trait bounds in impl not implemented - needs [RUNTIME-481] ticket"]
fn test_sqlite_628_trait_bounds_impl() {
let result = execute_program(
r"
trait Display {}
struct Wrapper<T: Display>(T);
impl<T: Display> Wrapper<T> {
fun new(value: T) -> Self { Wrapper(value) }
}
",
);
assert!(result.is_ok(), "Trait bounds in impl should work");
}
#[test]
#[ignore = "Runtime limitation: supertrait not implemented - needs [RUNTIME-482] ticket"]
fn test_sqlite_629_supertrait() {
let result = execute_program(
r"
trait Base {}
trait Derived: Base {}
",
);
assert!(result.is_ok(), "Supertrait should work");
}
#[test]
#[ignore = "Runtime limitation: blanket implementation not implemented - needs [RUNTIME-483] ticket"]
fn test_sqlite_630_blanket_impl() {
let result = execute_program(
r"
trait MyTrait {}
impl<T> MyTrait for T {}
",
);
assert!(result.is_ok(), "Blanket implementation should work");
}
#[test]
#[ignore = "Runtime limitation: unsafe block not implemented - needs [RUNTIME-484] ticket"]
fn test_sqlite_631_unsafe_block() {
let result = execute_program(
r"
let x = 5;
let ptr = &x as *const i32;
unsafe { *ptr }
",
);
assert!(result.is_ok(), "Unsafe block should work");
}
#[test]
#[ignore = "Runtime limitation: unsafe function not implemented - needs [RUNTIME-485] ticket"]
fn test_sqlite_632_unsafe_fn() {
let result = execute_program(
r"
unsafe fun dangerous() { }
unsafe { dangerous(); }
",
);
assert!(result.is_ok(), "Unsafe function should work");
}
#[test]
#[ignore = "Runtime limitation: raw pointer operations not implemented - needs [RUNTIME-486] ticket"]
fn test_sqlite_633_raw_ptr_ops() {
let result = execute_program(
r"
let x = 5;
let ptr = &x as *const i32;
let ptr2 = unsafe { ptr.offset(0) };
",
);
assert!(result.is_ok(), "Raw pointer operations should work");
}
#[test]
#[ignore = "Runtime limitation: mutable static not implemented - needs [RUNTIME-487] ticket"]
fn test_sqlite_634_mut_static() {
let result = execute_program(
r"
static mut COUNTER: i32 = 0;
unsafe {
COUNTER += 1;
}
",
);
assert!(result.is_ok(), "Mutable static should work");
}
#[test]
#[ignore = "Runtime limitation: unsafe trait not implemented - needs [RUNTIME-488] ticket"]
fn test_sqlite_635_unsafe_trait() {
let result = execute_program(
r"
unsafe trait UnsafeTrait {}
struct MyType;
unsafe impl UnsafeTrait for MyType {}
",
);
assert!(result.is_ok(), "Unsafe trait should work");
}
#[test]
#[ignore = "Runtime limitation: derive attribute not implemented - needs [RUNTIME-489] ticket"]
fn test_sqlite_636_derive_attr() {
let result = execute_program(
r"
#[derive(Debug, Clone)]
struct Point { x: i32, y: i32 }
",
);
assert!(result.is_ok(), "Derive attribute should work");
}
#[test]
#[ignore = "Runtime limitation: cfg attribute not implemented - needs [RUNTIME-490] ticket"]
fn test_sqlite_637_cfg_attr() {
let result = execute_program(
r"
#[cfg(test)]
mod tests { }
",
);
assert!(result.is_ok(), "Cfg attribute should work");
}
#[test]
#[ignore = "Runtime limitation: inline attribute not implemented - needs [RUNTIME-491] ticket"]
fn test_sqlite_638_inline_attr() {
let result = execute_program(
r"
#[inline(always)]
fun foo() { }
",
);
assert!(result.is_ok(), "Inline attribute should work");
}
#[test]
#[ignore = "Runtime limitation: allow attribute not implemented - needs [RUNTIME-492] ticket"]
fn test_sqlite_639_allow_attr() {
let result = execute_program(
r"
#[allow(dead_code)]
fun unused() { }
",
);
assert!(result.is_ok(), "Allow attribute should work");
}
#[test]
#[ignore = "Runtime limitation: deprecated attribute not implemented - needs [RUNTIME-493] ticket"]
fn test_sqlite_640_deprecated_attr() {
let result = execute_program(
r#"
#[deprecated(since = "1.0", note = "Use new_fn instead")]
fun old_fn() { }
"#,
);
assert!(result.is_ok(), "Deprecated attribute should work");
}
#[test]
#[ignore = "Runtime limitation: range iteration not implemented - needs [RUNTIME-494] ticket"]
fn test_sqlite_641_range_iter() {
let result = execute_program(
r"
for i in 0..5 { }
",
);
assert!(result.is_ok(), "Range iteration should work");
}
#[test]
#[ignore = "Runtime limitation: range collect not implemented - needs [RUNTIME-495] ticket"]
fn test_sqlite_642_range_collect() {
let result = execute_program(
r"
let v: Vec<i32> = (0..5).collect();
",
);
assert!(result.is_ok(), "Range collect should work");
}
#[test]
#[ignore = "Runtime limitation: inclusive range not implemented - needs [RUNTIME-496] ticket"]
fn test_sqlite_643_range_inclusive() {
let result = execute_program(
r"
for i in 0..=5 { }
",
);
assert!(result.is_ok(), "Inclusive range should work");
}
#[test]
#[ignore = "Runtime limitation: range methods not implemented - needs [RUNTIME-497] ticket"]
fn test_sqlite_644_range_methods() {
let result = execute_program(
r"
let r = 0..10;
let contains = r.contains(&5);
",
);
assert!(result.is_ok(), "Range methods should work");
}
#[test]
#[ignore = "Runtime limitation: range step_by not implemented - needs [RUNTIME-498] ticket"]
fn test_sqlite_645_range_step() {
let result = execute_program(
r"
for i in (0..10).step_by(2) { }
",
);
assert!(result.is_ok(), "Range step_by should work");
}
#[test]
#[ignore = "Runtime limitation: async function execution not implemented - needs [RUNTIME-499] ticket"]
fn test_sqlite_646_async_fn_exec() {
let result = execute_program(
r"
async fun foo() -> i32 { 42 }
",
);
assert!(result.is_ok(), "Async function execution should work");
}
#[test]
#[ignore = "Runtime limitation: await expression not implemented - needs [RUNTIME-500] ticket"]
fn test_sqlite_647_await_expr() {
let result = execute_program(
r"
async fun main() {
let x = async_fn().await;
}
",
);
assert!(result.is_ok(), "Await expression should work");
}
#[test]
#[ignore = "Runtime limitation: async block runtime not implemented - needs [RUNTIME-501] ticket"]
fn test_sqlite_648_async_block() {
let result = execute_program(
r"
let future = async { 42 };
",
);
assert!(result.is_ok(), "Async block should work");
}
#[test]
#[ignore = "Runtime limitation: async closure not implemented - needs [RUNTIME-502] ticket"]
fn test_sqlite_649_async_closure() {
let result = execute_program(
r"
let f = async || { 42 };
",
);
assert!(result.is_ok(), "Async closure should work");
}
#[test]
#[ignore = "Runtime limitation: async trait method not implemented - needs [RUNTIME-503] ticket"]
fn test_sqlite_650_async_trait() {
let result = execute_program(
r"
trait AsyncTrait {
async fun method(&self) -> i32;
}
",
);
assert!(result.is_ok(), "Async trait method should work");
}
#[test]
#[ignore = "Runtime limitation: try operator success not implemented - needs [RUNTIME-504] ticket"]
fn test_sqlite_651_try_ok() {
let result = execute_program(
r"
fun foo() -> Result<i32, String> {
let x = Ok(42)?;
Ok(x)
}
",
);
assert!(result.is_ok(), "Try operator on Ok should work");
}
#[test]
#[ignore = "Runtime limitation: try operator error not implemented - needs [RUNTIME-505] ticket"]
fn test_sqlite_652_try_err() {
let result = execute_program(
r#"
fun foo() -> Result<i32, String> {
let x = Err("failed")?;
Ok(42)
}
"#,
);
assert!(result.is_ok(), "Try operator on Err should work");
}
#[test]
#[ignore = "Runtime limitation: try in match not implemented - needs [RUNTIME-506] ticket"]
fn test_sqlite_653_try_match() {
let result = execute_program(
r"
match Ok(42)? {
x => x
}
",
);
assert!(result.is_ok(), "Try in match should work");
}
#[test]
#[ignore = "Runtime limitation: try chaining not implemented - needs [RUNTIME-507] ticket"]
fn test_sqlite_654_try_chain() {
let result = execute_program(
r"
let result = func1()?.func2()?.func3()?;
",
);
assert!(result.is_ok(), "Try chaining should work");
}
#[test]
#[ignore = "Runtime limitation: try with Option not implemented - needs [RUNTIME-508] ticket"]
fn test_sqlite_655_try_option() {
let result = execute_program(
r"
fun foo() -> Option<i32> {
let x = Some(42)?;
Some(x)
}
",
);
assert!(result.is_ok(), "Try operator with Option should work");
}
#[test]
#[ignore = "Runtime limitation: const fn evaluation not implemented - needs [RUNTIME-509] ticket"]
fn test_sqlite_656_const_fn() {
let result = execute_program(
r"
const fun double(x: i32) -> i32 { x * 2 }
let x = double(21);
",
);
assert!(result.is_ok(), "Const fn evaluation should work");
}
#[test]
#[ignore = "Runtime limitation: const in array size not implemented - needs [RUNTIME-510] ticket"]
fn test_sqlite_657_const_array_size() {
let result = execute_program(
r"
const SIZE: usize = 10;
let arr: [i32; SIZE] = [0; SIZE];
",
);
assert!(result.is_ok(), "Const in array size should work");
}
#[test]
#[ignore = "Runtime limitation: const generic evaluation not implemented - needs [RUNTIME-511] ticket"]
fn test_sqlite_658_const_generic_eval() {
let result = execute_program(
r"
struct Array<const N: usize>;
let a: Array<10> = Array;
",
);
assert!(result.is_ok(), "Const generic evaluation should work");
}
#[test]
#[ignore = "Runtime limitation: const block evaluation not implemented - needs [RUNTIME-512] ticket"]
fn test_sqlite_659_const_block_eval() {
let result = execute_program(
r"
let x = const { 1 + 2 };
",
);
assert!(result.is_ok(), "Const block evaluation should work");
}
#[test]
#[ignore = "Runtime limitation: compile-time const not implemented - needs [RUNTIME-513] ticket"]
fn test_sqlite_660_compile_const() {
let result = execute_program(
r"
const VALUE: i32 = 42;
let x = VALUE;
",
);
assert!(result.is_ok(), "Compile-time const should work");
}
#[test]
#[ignore = "Runtime limitation: labeled break not implemented - needs [RUNTIME-514] ticket"]
fn test_sqlite_661_labeled_break() {
let result = execute_program(
r"
'outer: loop {
loop {
break 'outer;
}
}
",
);
assert!(result.is_ok(), "Labeled break should work");
}
#[test]
#[ignore = "Runtime limitation: labeled continue not implemented - needs [RUNTIME-515] ticket"]
fn test_sqlite_662_labeled_continue() {
let result = execute_program(
r"
'outer: loop {
loop {
continue 'outer;
}
}
",
);
assert!(result.is_ok(), "Labeled continue should work");
}
#[test]
#[ignore = "Runtime limitation: break with value not implemented - needs [RUNTIME-516] ticket"]
fn test_sqlite_663_break_value() {
let result = execute_program(
r"
let x = loop {
break 42;
};
",
);
assert!(result.is_ok(), "Break with value should work");
}
#[test]
#[ignore = "Runtime limitation: labeled block not implemented - needs [RUNTIME-517] ticket"]
fn test_sqlite_664_labeled_block() {
let result = execute_program(
r"
let x = 'block: {
break 'block 42;
};
",
);
assert!(result.is_ok(), "Labeled block should work");
}
#[test]
#[ignore = "Runtime limitation: nested labels not implemented - needs [RUNTIME-518] ticket"]
fn test_sqlite_665_nested_labels() {
let result = execute_program(
r"
'a: 'b: 'c: loop {
break 'a;
}
",
);
assert!(result.is_ok(), "Nested labels should work");
}
#[test]
#[ignore = "Runtime limitation: pattern with guard not implemented - needs [RUNTIME-519] ticket"]
fn test_sqlite_666_pattern_guard() {
let result = execute_program(
r#"
match x {
n if n > 0 => "positive",
_ => "other"
}
"#,
);
assert!(result.is_ok(), "Pattern with guard should work");
}
#[test]
#[ignore = "Runtime limitation: or-pattern not implemented - needs [RUNTIME-520] ticket"]
fn test_sqlite_667_or_pattern() {
let result = execute_program(
r#"
match x {
1 | 2 | 3 => "small",
_ => "other"
}
"#,
);
assert!(result.is_ok(), "Or-pattern should work");
}
#[test]
#[ignore = "Runtime limitation: range pattern not implemented - needs [RUNTIME-521] ticket"]
fn test_sqlite_668_range_pattern() {
let result = execute_program(
r#"
match x {
1..=10 => "range",
_ => "other"
}
"#,
);
assert!(result.is_ok(), "Range pattern should work");
}
#[test]
#[ignore = "Runtime limitation: at-pattern not implemented - needs [RUNTIME-522] ticket"]
fn test_sqlite_669_at_pattern() {
let result = execute_program(
r"
match x {
val @ 1..=10 => val,
_ => 0
}
",
);
assert!(result.is_ok(), "At-pattern should work");
}
#[test]
#[ignore = "Runtime limitation: slice pattern not implemented - needs [RUNTIME-523] ticket"]
fn test_sqlite_670_slice_pattern() {
let result = execute_program(
r"
match slice {
[first, .., last] => (first, last),
_ => (0, 0)
}
",
);
assert!(result.is_ok(), "Slice pattern should work");
}
#[test]
#[ignore = "Runtime limitation: deref coercion not implemented - needs [RUNTIME-524] ticket"]
fn test_sqlite_671_deref_coerce() {
let result = execute_program(
r#"
let s: String = String::from("hello");
let slice: &str = &s;
"#,
);
assert!(result.is_ok(), "Deref coercion should work");
}
#[test]
#[ignore = "Runtime limitation: pointer coercion not implemented - needs [RUNTIME-525] ticket"]
fn test_sqlite_672_ptr_coerce() {
let result = execute_program(
r"
let x = 42;
let ptr: *const i32 = &x;
",
);
assert!(result.is_ok(), "Pointer coercion should work");
}
#[test]
#[ignore = "Runtime limitation: unsized coercion not implemented - needs [RUNTIME-526] ticket"]
fn test_sqlite_673_unsized_coerce() {
let result = execute_program(
r"
let arr: [i32; 3] = [1, 2, 3];
let slice: &[i32] = &arr;
",
);
assert!(result.is_ok(), "Unsized coercion should work");
}
#[test]
#[ignore = "Runtime limitation: trait object coercion not implemented - needs [RUNTIME-527] ticket"]
fn test_sqlite_674_trait_object_coerce() {
let result = execute_program(
r"
let x: i32 = 42;
let obj: &dyn Display = &x;
",
);
assert!(result.is_ok(), "Trait object coercion should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime coercion not implemented - needs [RUNTIME-528] ticket"]
fn test_sqlite_675_lifetime_coerce() {
let result = execute_program(
r#"
fun foo<'a>(x: &'a str) -> &'static str {
"static"
}
"#,
);
assert!(result.is_ok(), "Lifetime coercion should work");
}
#[test]
#[ignore = "Runtime limitation: declarative macro not implemented - needs [RUNTIME-529] ticket"]
fn test_sqlite_676_decl_macro() {
let result = execute_program(
r"
macro_rules! add {
($a:expr, $b:expr) => { $a + $b }
}
let x = add!(1, 2);
",
);
assert!(result.is_ok(), "Declarative macro should work");
}
#[test]
#[ignore = "Runtime limitation: macro repetition not implemented - needs [RUNTIME-530] ticket"]
fn test_sqlite_677_macro_repeat() {
let result = execute_program(
r"
macro_rules! vec {
($($x:expr),*) => { [$($x),*] }
}
let v = vec![1, 2, 3];
",
);
assert!(result.is_ok(), "Macro repetition should work");
}
#[test]
#[ignore = "Runtime limitation: nested macro not implemented - needs [RUNTIME-531] ticket"]
fn test_sqlite_678_nested_macro() {
let result = execute_program(
r"
macro_rules! outer {
($x:expr) => { inner!($x) }
}
outer!(42);
",
);
assert!(result.is_ok(), "Nested macro should work");
}
#[test]
#[ignore = "Runtime limitation: derive macro not implemented - needs [RUNTIME-532] ticket"]
fn test_sqlite_679_derive_macro() {
let result = execute_program(
r"
#[derive(Debug, Clone)]
struct Point { x: i32, y: i32 }
",
);
assert!(result.is_ok(), "Derive macro should work");
}
#[test]
#[ignore = "Runtime limitation: attribute macro not implemented - needs [RUNTIME-533] ticket"]
fn test_sqlite_680_attr_macro() {
let result = execute_program(
r#"
#[route(GET, "/")]
fun index() { }
"#,
);
assert!(result.is_ok(), "Attribute macro should work");
}
#[test]
#[ignore = "Runtime limitation: extern function call not implemented - needs [RUNTIME-534] ticket"]
fn test_sqlite_681_extern_call() {
let result = execute_program(
r#"
extern "C" {
fun abs(x: i32) -> i32;
}
let x = unsafe { abs(-42) };
"#,
);
assert!(result.is_ok(), "Extern function call should work");
}
#[test]
#[ignore = "Runtime limitation: FFI type conversion not implemented - needs [RUNTIME-535] ticket"]
fn test_sqlite_682_ffi_type() {
let result = execute_program(
r#"
extern "C" {
fun strlen(s: *const i8) -> usize;
}
"#,
);
assert!(result.is_ok(), "FFI type conversion should work");
}
#[test]
#[ignore = "Runtime limitation: C callback not implemented - needs [RUNTIME-536] ticket"]
fn test_sqlite_683_c_callback() {
let result = execute_program(
r#"
extern "C" fun callback(x: i32) -> i32 { x * 2 }
"#,
);
assert!(result.is_ok(), "C callback should work");
}
#[test]
#[ignore = "Runtime limitation: raw pointer FFI not implemented - needs [RUNTIME-537] ticket"]
fn test_sqlite_684_raw_ptr_ffi() {
let result = execute_program(
r"
let x = 42;
let ptr: *const i32 = &x as *const i32;
",
);
assert!(result.is_ok(), "Raw pointer FFI should work");
}
#[test]
#[ignore = "Runtime limitation: variadic FFI not implemented - needs [RUNTIME-538] ticket"]
fn test_sqlite_685_variadic_ffi() {
let result = execute_program(
r#"
extern "C" {
fun printf(fmt: *const i8, ...) -> i32;
}
"#,
);
assert!(result.is_ok(), "Variadic FFI should work");
}
#[test]
#[ignore = "Runtime limitation: inline function not implemented - needs [RUNTIME-539] ticket"]
fn test_sqlite_686_inline() {
let result = execute_program(
r"
#[inline]
fun add(a: i32, b: i32) -> i32 { a + b }
",
);
assert!(result.is_ok(), "Inline function should work");
}
#[test]
#[ignore = "Runtime limitation: zero-cost abstraction not implemented - needs [RUNTIME-540] ticket"]
fn test_sqlite_687_zero_cost() {
let result = execute_program(
r"
let sum: i32 = (0..100).map(|x| x * 2).sum();
",
);
assert!(result.is_ok(), "Zero-cost abstraction should work");
}
#[test]
#[ignore = "Runtime limitation: SIMD operations not implemented - needs [RUNTIME-541] ticket"]
fn test_sqlite_688_simd() {
let result = execute_program(
r"
use std::simd::*;
let a = i32x4::splat(1);
",
);
assert!(result.is_ok(), "SIMD operations should work");
}
#[test]
#[ignore = "Runtime limitation: const propagation not implemented - needs [RUNTIME-542] ticket"]
fn test_sqlite_689_const_prop() {
let result = execute_program(
r"
const X: i32 = 10;
const Y: i32 = X * 2;
let z = Y + 5;
",
);
assert!(result.is_ok(), "Const propagation should work");
}
#[test]
#[ignore = "Runtime limitation: tail call optimization not implemented - needs [RUNTIME-543] ticket"]
fn test_sqlite_690_tail_call() {
let result = execute_program(
r"
fun factorial(n: i32, acc: i32) -> i32 {
if n == 0 { acc } else { factorial(n - 1, acc * n) }
}
",
);
assert!(result.is_ok(), "Tail call optimization should work");
}
#[test]
#[ignore = "Runtime limitation: iterator map not implemented - needs [RUNTIME-544] ticket"]
fn test_sqlite_691_iter_map() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let doubled: Vec<i32> = v.iter().map(|x| x * 2).collect();
",
);
assert!(result.is_ok(), "Iterator map should work");
}
#[test]
#[ignore = "Runtime limitation: iterator filter not implemented - needs [RUNTIME-545] ticket"]
fn test_sqlite_692_iter_filter() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4];
let evens: Vec<i32> = v.iter().filter(|x| x % 2 == 0).collect();
",
);
assert!(result.is_ok(), "Iterator filter should work");
}
#[test]
#[ignore = "Runtime limitation: iterator fold not implemented - needs [RUNTIME-546] ticket"]
fn test_sqlite_693_iter_fold() {
let result = execute_program(
r"
let sum = vec![1, 2, 3].iter().fold(0, |acc, x| acc + x);
",
);
assert!(result.is_ok(), "Iterator fold should work");
}
#[test]
#[ignore = "Runtime limitation: iterator chain not implemented - needs [RUNTIME-547] ticket"]
fn test_sqlite_694_iter_chain() {
let result = execute_program(
r"
let a = vec![1, 2];
let b = vec![3, 4];
let chained: Vec<i32> = a.iter().chain(b.iter()).collect();
",
);
assert!(result.is_ok(), "Iterator chain should work");
}
#[test]
#[ignore = "Runtime limitation: iterator zip not implemented - needs [RUNTIME-548] ticket"]
fn test_sqlite_695_iter_zip() {
let result = execute_program(
r"
let a = vec![1, 2, 3];
let b = vec![4, 5, 6];
let zipped: Vec<(i32, i32)> = a.iter().zip(b.iter()).collect();
",
);
assert!(result.is_ok(), "Iterator zip should work");
}
#[test]
#[ignore = "Runtime limitation: string format not implemented - needs [RUNTIME-549] ticket"]
fn test_sqlite_696_string_format() {
let result = execute_program(
r#"
let s = format!("Hello {}", "world");
"#,
);
assert!(result.is_ok(), "String format should work");
}
#[test]
#[ignore = "Runtime limitation: string split not implemented - needs [RUNTIME-550] ticket"]
fn test_sqlite_697_string_split() {
let result = execute_program(
r#"
let parts: Vec<&str> = "a,b,c".split(",").collect();
"#,
);
assert!(result.is_ok(), "String split should work");
}
#[test]
#[ignore = "Runtime limitation: string trim not implemented - needs [RUNTIME-551] ticket"]
fn test_sqlite_698_string_trim() {
let result = execute_program(
r#"
let s = " hello ".trim();
"#,
);
assert!(result.is_ok(), "String trim should work");
}
#[test]
#[ignore = "Runtime limitation: string replace not implemented - needs [RUNTIME-552] ticket"]
fn test_sqlite_699_string_replace() {
let result = execute_program(
r#"
let s = "hello world".replace("world", "rust");
"#,
);
assert!(result.is_ok(), "String replace should work");
}
#[test]
#[ignore = "Runtime limitation: string parse not implemented - needs [RUNTIME-553] ticket"]
fn test_sqlite_700_string_parse() {
let result = execute_program(
r#"
let n: i32 = "42".parse().unwrap();
"#,
);
assert!(result.is_ok(), "String parse should work");
}
#[test]
#[ignore = "Runtime limitation: Vec push/pop not implemented - needs [RUNTIME-554] ticket"]
fn test_sqlite_701_vec_push_pop() {
let result = execute_program(
r"
let mut v = Vec::new();
v.push(1);
let x = v.pop();
",
);
assert!(result.is_ok(), "Vec push/pop should work");
}
#[test]
#[ignore = "Runtime limitation: HashMap insert/get not implemented - needs [RUNTIME-555] ticket"]
fn test_sqlite_702_hashmap_insert() {
let result = execute_program(
r#"
let mut map = HashMap::new();
map.insert("key", "value");
let v = map.get("key");
"#,
);
assert!(result.is_ok(), "HashMap insert/get should work");
}
#[test]
#[ignore = "Runtime limitation: HashSet operations not implemented - needs [RUNTIME-556] ticket"]
fn test_sqlite_703_hashset_ops() {
let result = execute_program(
r"
let mut set = HashSet::new();
set.insert(1);
let contains = set.contains(&1);
",
);
assert!(result.is_ok(), "HashSet operations should work");
}
#[test]
#[ignore = "Runtime limitation: BTreeMap not implemented - needs [RUNTIME-557] ticket"]
fn test_sqlite_704_btreemap() {
let result = execute_program(
r#"
let mut map = BTreeMap::new();
map.insert(1, "one");
"#,
);
assert!(result.is_ok(), "BTreeMap should work");
}
#[test]
#[ignore = "Runtime limitation: VecDeque not implemented - needs [RUNTIME-558] ticket"]
fn test_sqlite_705_vecdeque() {
let result = execute_program(
r"
let mut deque = VecDeque::new();
deque.push_back(1);
deque.push_front(0);
",
);
assert!(result.is_ok(), "VecDeque should work");
}
#[test]
#[ignore = "Runtime limitation: Result map not implemented - needs [RUNTIME-559] ticket"]
fn test_sqlite_706_result_map() {
let result = execute_program(
r"
let r: Result<i32, String> = Ok(42);
let doubled = r.map(|x| x * 2);
",
);
assert!(result.is_ok(), "Result map should work");
}
#[test]
#[ignore = "Runtime limitation: Result and_then not implemented - needs [RUNTIME-560] ticket"]
fn test_sqlite_707_result_and_then() {
let result = execute_program(
r"
let r: Result<i32, String> = Ok(42);
let result = r.and_then(|x| Ok(x * 2));
",
);
assert!(result.is_ok(), "Result and_then should work");
}
#[test]
#[ignore = "Runtime limitation: Result unwrap_or not implemented - needs [RUNTIME-561] ticket"]
fn test_sqlite_708_result_unwrap_or() {
let result = execute_program(
r#"
let r: Result<i32, String> = Err("error");
let value = r.unwrap_or(0);
"#,
);
assert!(result.is_ok(), "Result unwrap_or should work");
}
#[test]
#[ignore = "Runtime limitation: Option map not implemented - needs [RUNTIME-562] ticket"]
fn test_sqlite_709_option_map() {
let result = execute_program(
r"
let opt: Option<i32> = Some(42);
let doubled = opt.map(|x| x * 2);
",
);
assert!(result.is_ok(), "Option map should work");
}
#[test]
#[ignore = "Runtime limitation: Option and_then not implemented - needs [RUNTIME-563] ticket"]
fn test_sqlite_710_option_and_then() {
let result = execute_program(
r"
let opt: Option<i32> = Some(42);
let result = opt.and_then(|x| Some(x * 2));
",
);
assert!(result.is_ok(), "Option and_then should work");
}
#[test]
#[ignore = "Runtime limitation: closure move semantics not implemented - needs [RUNTIME-564] ticket"]
fn test_sqlite_711_closure_move() {
let result = execute_program(
r#"
let s = String::from("hello");
let f = move || s.len();
"#,
);
assert!(result.is_ok(), "Closure move semantics should work");
}
#[test]
#[ignore = "Runtime limitation: closure as function argument not implemented - needs [RUNTIME-565] ticket"]
fn test_sqlite_712_closure_arg() {
let result = execute_program(
r"
fun apply<F>(f: F, x: i32) -> i32 where F: Fn(i32) -> i32 {
f(x)
}
",
);
assert!(result.is_ok(), "Closure as function argument should work");
}
#[test]
#[ignore = "Runtime limitation: closure return not implemented - needs [RUNTIME-566] ticket"]
fn test_sqlite_713_closure_return() {
let result = execute_program(
r"
fun make_adder(n: i32) -> impl Fn(i32) -> i32 {
move |x| x + n
}
",
);
assert!(result.is_ok(), "Closure return should work");
}
#[test]
#[ignore = "Runtime limitation: Fn trait not implemented - needs [RUNTIME-567] ticket"]
fn test_sqlite_714_fn_trait() {
let result = execute_program(
r"
let f: &dyn Fn(i32) -> i32 = &|x| x * 2;
",
);
assert!(result.is_ok(), "Fn trait should work");
}
#[test]
#[ignore = "Runtime limitation: FnMut trait not implemented - needs [RUNTIME-568] ticket"]
fn test_sqlite_715_fnmut_trait() {
let result = execute_program(
r"
let mut sum = 0;
let mut add = |x| { sum += x; sum };
",
);
assert!(result.is_ok(), "FnMut trait should work");
}
#[test]
#[ignore = "Runtime limitation: trait object creation not implemented - needs [RUNTIME-569] ticket"]
fn test_sqlite_716_trait_obj_create() {
let result = execute_program(
r"
trait Animal { fun speak(&self) -> String; }
let animal: &dyn Animal = &Dog;
",
);
assert!(result.is_ok(), "Trait object creation should work");
}
#[test]
#[ignore = "Runtime limitation: trait object method call not implemented - needs [RUNTIME-570] ticket"]
fn test_sqlite_717_trait_obj_method() {
let result = execute_program(
r"
let obj: &dyn ToString = &42;
let s = obj.to_string();
",
);
assert!(result.is_ok(), "Trait object method call should work");
}
#[test]
#[ignore = "Runtime limitation: trait object in collection not implemented - needs [RUNTIME-571] ticket"]
fn test_sqlite_718_trait_obj_vec() {
let result = execute_program(
r#"
let objects: Vec<Box<dyn ToString>> = vec![Box::new(42), Box::new("hello")];
"#,
);
assert!(result.is_ok(), "Trait object in collection should work");
}
#[test]
#[ignore = "Runtime limitation: trait object casting not implemented - needs [RUNTIME-572] ticket"]
fn test_sqlite_719_trait_obj_cast() {
let result = execute_program(
r"
let obj: &dyn Any = &42;
let num: Option<&i32> = obj.downcast_ref::<i32>();
",
);
assert!(result.is_ok(), "Trait object casting should work");
}
#[test]
#[ignore = "Runtime limitation: trait object size not implemented - needs [RUNTIME-573] ticket"]
fn test_sqlite_720_trait_obj_size() {
let result = execute_program(
r"
let obj: &dyn ToString = &42;
let size = std::mem::size_of_val(obj);
",
);
assert!(result.is_ok(), "Trait object size should work");
}
#[test]
#[ignore = "Runtime limitation: Box deref not implemented - needs [RUNTIME-574] ticket"]
fn test_sqlite_721_box_deref() {
let result = execute_program(
r"
let boxed = Box::new(42);
let value = *boxed;
",
);
assert!(result.is_ok(), "Box deref should work");
}
#[test]
#[ignore = "Runtime limitation: Rc clone not implemented - needs [RUNTIME-575] ticket"]
fn test_sqlite_722_rc_clone() {
let result = execute_program(
r"
let rc1 = Rc::new(42);
let rc2 = Rc::clone(&rc1);
",
);
assert!(result.is_ok(), "Rc clone should work");
}
#[test]
#[ignore = "Runtime limitation: Arc thread safety not implemented - needs [RUNTIME-576] ticket"]
fn test_sqlite_723_arc_thread() {
let result = execute_program(
r"
let arc = Arc::new(42);
let arc_clone = Arc::clone(&arc);
",
);
assert!(result.is_ok(), "Arc thread safety should work");
}
#[test]
#[ignore = "Runtime limitation: RefCell borrow not implemented - needs [RUNTIME-577] ticket"]
fn test_sqlite_724_refcell_borrow() {
let result = execute_program(
r"
let cell = RefCell::new(42);
let borrowed = cell.borrow();
",
);
assert!(result.is_ok(), "RefCell borrow should work");
}
#[test]
#[ignore = "Runtime limitation: Cell get/set not implemented - needs [RUNTIME-578] ticket"]
fn test_sqlite_725_cell_get_set() {
let result = execute_program(
r"
let cell = Cell::new(42);
cell.set(43);
let value = cell.get();
",
);
assert!(result.is_ok(), "Cell get/set should work");
}
#[test]
#[ignore = "Runtime limitation: thread spawn not implemented - needs [RUNTIME-579] ticket"]
fn test_sqlite_726_thread_spawn() {
let result = execute_program(
r"
let handle = std::thread::spawn(|| { 42 });
let result = handle.join();
",
);
assert!(result.is_ok(), "Thread spawn should work");
}
#[test]
#[ignore = "Runtime limitation: channel send/recv not implemented - needs [RUNTIME-580] ticket"]
fn test_sqlite_727_channel() {
let result = execute_program(
r"
let (tx, rx) = std::sync::mpsc::channel();
tx.send(42);
let value = rx.recv();
",
);
assert!(result.is_ok(), "Channel send/recv should work");
}
#[test]
#[ignore = "Runtime limitation: Mutex lock not implemented - needs [RUNTIME-581] ticket"]
fn test_sqlite_728_mutex_lock() {
let result = execute_program(
r"
let mutex = Mutex::new(42);
let guard = mutex.lock().unwrap();
",
);
assert!(result.is_ok(), "Mutex lock should work");
}
#[test]
#[ignore = "Runtime limitation: RwLock read/write not implemented - needs [RUNTIME-582] ticket"]
fn test_sqlite_729_rwlock() {
let result = execute_program(
r"
let lock = RwLock::new(42);
let read = lock.read().unwrap();
let write = lock.write().unwrap();
",
);
assert!(result.is_ok(), "RwLock read/write should work");
}
#[test]
#[ignore = "Runtime limitation: atomic operations not implemented - needs [RUNTIME-583] ticket"]
fn test_sqlite_730_atomic() {
let result = execute_program(
r"
let atomic = AtomicI32::new(0);
atomic.fetch_add(1, Ordering::SeqCst);
",
);
assert!(result.is_ok(), "Atomic operations should work");
}
#[test]
#[ignore = "Runtime limitation: memory allocation not implemented - needs [RUNTIME-584] ticket"]
fn test_sqlite_731_mem_alloc() {
let result = execute_program(
r"
let layout = Layout::new::<i32>();
let ptr = unsafe { alloc(layout) };
",
);
assert!(result.is_ok(), "Memory allocation should work");
}
#[test]
#[ignore = "Runtime limitation: memory size_of not implemented - needs [RUNTIME-585] ticket"]
fn test_sqlite_732_mem_sizeof() {
let result = execute_program(
r"
let size = std::mem::size_of::<i32>();
",
);
assert!(result.is_ok(), "Memory size_of should work");
}
#[test]
#[ignore = "Runtime limitation: memory align_of not implemented - needs [RUNTIME-586] ticket"]
fn test_sqlite_733_mem_alignof() {
let result = execute_program(
r"
let align = std::mem::align_of::<i32>();
",
);
assert!(result.is_ok(), "Memory align_of should work");
}
#[test]
#[ignore = "Runtime limitation: memory drop not implemented - needs [RUNTIME-587] ticket"]
fn test_sqlite_734_mem_drop() {
let result = execute_program(
r#"
let s = String::from("hello");
drop(s);
"#,
);
assert!(result.is_ok(), "Memory drop should work");
}
#[test]
#[ignore = "Runtime limitation: memory forget not implemented - needs [RUNTIME-588] ticket"]
fn test_sqlite_735_mem_forget() {
let result = execute_program(
r#"
let s = String::from("hello");
std::mem::forget(s);
"#,
);
assert!(result.is_ok(), "Memory forget should work");
}
#[test]
#[ignore = "Runtime limitation: From trait not implemented - needs [RUNTIME-589] ticket"]
fn test_sqlite_736_from_trait() {
let result = execute_program(
r#"
let s = String::from("hello");
"#,
);
assert!(result.is_ok(), "From trait should work");
}
#[test]
#[ignore = "Runtime limitation: Into trait not implemented - needs [RUNTIME-590] ticket"]
fn test_sqlite_737_into_trait() {
let result = execute_program(
r#"
let s: String = "hello".into();
"#,
);
assert!(result.is_ok(), "Into trait should work");
}
#[test]
#[ignore = "Runtime limitation: TryFrom trait not implemented - needs [RUNTIME-591] ticket"]
fn test_sqlite_738_tryfrom_trait() {
let result = execute_program(
r"
let n = i32::try_from(42u64);
",
);
assert!(result.is_ok(), "TryFrom trait should work");
}
#[test]
#[ignore = "Runtime limitation: TryInto trait not implemented - needs [RUNTIME-592] ticket"]
fn test_sqlite_739_tryinto_trait() {
let result = execute_program(
r"
let n: Result<i32, _> = 42u64.try_into();
",
);
assert!(result.is_ok(), "TryInto trait should work");
}
#[test]
#[ignore = "Runtime limitation: AsRef trait not implemented - needs [RUNTIME-593] ticket"]
fn test_sqlite_740_asref_trait() {
let result = execute_program(
r#"
let s = String::from("hello");
let slice: &str = s.as_ref();
"#,
);
assert!(result.is_ok(), "AsRef trait should work");
}
#[test]
#[ignore = "Runtime limitation: Default trait basic not implemented - needs [RUNTIME-594] ticket"]
fn test_sqlite_741_default_basic() {
let result = execute_program(
r"
let x: i32 = Default::default();
",
);
assert!(result.is_ok(), "Default trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Default trait struct not implemented - needs [RUNTIME-595] ticket"]
fn test_sqlite_742_default_struct() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
impl Default for Point {
fun default() -> Self { Point { x: 0, y: 0 } }
}
",
);
assert!(result.is_ok(), "Default trait struct should work");
}
#[test]
#[ignore = "Runtime limitation: Default derive not implemented - needs [RUNTIME-596] ticket"]
fn test_sqlite_743_default_derive() {
let result = execute_program(
r"
#[derive(Default)]
struct Point { x: i32, y: i32 }
",
);
assert!(result.is_ok(), "Default derive should work");
}
#[test]
#[ignore = "Runtime limitation: Default for collections not implemented - needs [RUNTIME-597] ticket"]
fn test_sqlite_744_default_vec() {
let result = execute_program(
r"
let v: Vec<i32> = Default::default();
",
);
assert!(result.is_ok(), "Default for collections should work");
}
#[test]
#[ignore = "Runtime limitation: Default with new not implemented - needs [RUNTIME-598] ticket"]
fn test_sqlite_745_default_new() {
let result = execute_program(
r"
struct S;
impl Default for S {
fun default() -> Self { S::new() }
}
",
);
assert!(result.is_ok(), "Default with new should work");
}
#[test]
#[ignore = "Runtime limitation: Clone trait basic not implemented - needs [RUNTIME-599] ticket"]
fn test_sqlite_746_clone_basic() {
let result = execute_program(
r"
let x = vec![1, 2, 3];
let y = x.clone();
",
);
assert!(result.is_ok(), "Clone trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Clone derive not implemented - needs [RUNTIME-600] ticket"]
fn test_sqlite_747_clone_derive() {
let result = execute_program(
r"
#[derive(Clone)]
struct Point { x: i32, y: i32 }
",
);
assert!(result.is_ok(), "Clone derive should work");
}
#[test]
#[ignore = "Runtime limitation: Clone impl not implemented - needs [RUNTIME-601] ticket"]
fn test_sqlite_748_clone_impl() {
let result = execute_program(
r"
struct S;
impl Clone for S {
fun clone(&self) -> Self { S }
}
",
);
assert!(result.is_ok(), "Clone impl should work");
}
#[test]
#[ignore = "Runtime limitation: clone_from not implemented - needs [RUNTIME-602] ticket"]
fn test_sqlite_749_clone_from() {
let result = execute_program(
r"
let mut x = vec![1, 2, 3];
let y = vec![4, 5, 6];
x.clone_from(&y);
",
);
assert!(result.is_ok(), "clone_from should work");
}
#[test]
#[ignore = "Runtime limitation: Clone for generic not implemented - needs [RUNTIME-603] ticket"]
fn test_sqlite_750_clone_generic() {
let result = execute_program(
r"
struct Wrapper<T: Clone> { value: T }
impl<T: Clone> Clone for Wrapper<T> {
fun clone(&self) -> Self { Wrapper { value: self.value.clone() } }
}
",
);
assert!(result.is_ok(), "Clone for generic should work");
}
#[test]
#[ignore = "Runtime limitation: Copy trait basic not implemented - needs [RUNTIME-604] ticket"]
fn test_sqlite_751_copy_basic() {
let result = execute_program(
r"
let x = 42;
let y = x;
let z = x;
",
);
assert!(result.is_ok(), "Copy trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Copy derive not implemented - needs [RUNTIME-605] ticket"]
fn test_sqlite_752_copy_derive() {
let result = execute_program(
r"
#[derive(Copy, Clone)]
struct Point { x: i32, y: i32 }
",
);
assert!(result.is_ok(), "Copy derive should work");
}
#[test]
#[ignore = "Runtime limitation: Copy semantics not implemented - needs [RUNTIME-606] ticket"]
fn test_sqlite_753_copy_semantics() {
let result = execute_program(
r#"
let x = 42;
let y = x;
println!("{}", x);
"#,
);
assert!(result.is_ok(), "Copy semantics should work");
}
#[test]
#[ignore = "Runtime limitation: Copy vs Move not implemented - needs [RUNTIME-607] ticket"]
fn test_sqlite_754_copy_move() {
let result = execute_program(
r#"
let s = String::from("hello");
let t = s;
"#,
);
assert!(result.is_ok(), "Copy vs Move should work");
}
#[test]
#[ignore = "Runtime limitation: Copy marker trait not implemented - needs [RUNTIME-608] ticket"]
fn test_sqlite_755_copy_marker() {
let result = execute_program(
r"
fun is_copy<T: Copy>() { }
",
);
assert!(result.is_ok(), "Copy marker trait should work");
}
#[test]
#[ignore = "Runtime limitation: Debug trait basic not implemented - needs [RUNTIME-609] ticket"]
fn test_sqlite_756_debug_basic() {
let result = execute_program(
r#"
println!("{:?}", 42);
"#,
);
assert!(result.is_ok(), "Debug trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Debug derive not implemented - needs [RUNTIME-610] ticket"]
fn test_sqlite_757_debug_derive() {
let result = execute_program(
r"
#[derive(Debug)]
struct Point { x: i32, y: i32 }
",
);
assert!(result.is_ok(), "Debug derive should work");
}
#[test]
#[ignore = "Runtime limitation: Debug impl not implemented - needs [RUNTIME-611] ticket"]
fn test_sqlite_758_debug_impl() {
let result = execute_program(
r#"
use std::fmt;
impl fmt::Debug for S {
fun fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "S")
}
}
"#,
);
assert!(result.is_ok(), "Debug impl should work");
}
#[test]
#[ignore = "Runtime limitation: Debug pretty print not implemented - needs [RUNTIME-612] ticket"]
fn test_sqlite_759_debug_pretty() {
let result = execute_program(
r#"
println!("{:#?}", vec![1, 2, 3]);
"#,
);
assert!(result.is_ok(), "Debug pretty print should work");
}
#[test]
#[ignore = "Runtime limitation: Debug for collections not implemented - needs [RUNTIME-613] ticket"]
fn test_sqlite_760_debug_vec() {
let result = execute_program(
r#"
let v = vec![1, 2, 3];
println!("{:?}", v);
"#,
);
assert!(result.is_ok(), "Debug for collections should work");
}
#[test]
#[ignore = "Runtime limitation: Display trait basic not implemented - needs [RUNTIME-614] ticket"]
fn test_sqlite_761_display_basic() {
let result = execute_program(
r#"
println!("{}", 42);
"#,
);
assert!(result.is_ok(), "Display trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Display impl not implemented - needs [RUNTIME-615] ticket"]
fn test_sqlite_762_display_impl() {
let result = execute_program(
r#"
use std::fmt;
impl fmt::Display for Point {
fun fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "({}, {})", self.x, self.y)
}
}
"#,
);
assert!(result.is_ok(), "Display impl should work");
}
#[test]
#[ignore = "Runtime limitation: Display to_string not implemented - needs [RUNTIME-616] ticket"]
fn test_sqlite_763_display_to_string() {
let result = execute_program(
r"
let s = 42.to_string();
",
);
assert!(result.is_ok(), "Display to_string should work");
}
#[test]
#[ignore = "Runtime limitation: Display format not implemented - needs [RUNTIME-617] ticket"]
fn test_sqlite_764_display_format() {
let result = execute_program(
r#"
let s = format!("Value: {}", 42);
"#,
);
assert!(result.is_ok(), "Display format should work");
}
#[test]
#[ignore = "Runtime limitation: Display vs Debug not implemented - needs [RUNTIME-618] ticket"]
fn test_sqlite_765_display_debug() {
let result = execute_program(
r#"
println!("{}", "hello");
println!("{:?}", "hello");
"#,
);
assert!(result.is_ok(), "Display vs Debug should work");
}
#[test]
#[ignore = "Runtime limitation: PartialEq basic not implemented - needs [RUNTIME-619] ticket"]
fn test_sqlite_766_partialeq_basic() {
let result = execute_program(
r"
let x = 42;
let y = 42;
let equal = x == y;
",
);
assert!(result.is_ok(), "PartialEq basic should work");
}
#[test]
#[ignore = "Runtime limitation: PartialEq derive not implemented - needs [RUNTIME-620] ticket"]
fn test_sqlite_767_partialeq_derive() {
let result = execute_program(
r"
#[derive(PartialEq)]
struct Point { x: i32, y: i32 }
",
);
assert!(result.is_ok(), "PartialEq derive should work");
}
#[test]
#[ignore = "Runtime limitation: PartialEq impl not implemented - needs [RUNTIME-621] ticket"]
fn test_sqlite_768_partialeq_impl() {
let result = execute_program(
r"
impl PartialEq for S {
fun eq(&self, other: &Self) -> bool { true }
}
",
);
assert!(result.is_ok(), "PartialEq impl should work");
}
#[test]
#[ignore = "Runtime limitation: Eq trait not implemented - needs [RUNTIME-622] ticket"]
fn test_sqlite_769_eq_trait() {
let result = execute_program(
r"
#[derive(PartialEq, Eq)]
struct Point { x: i32, y: i32 }
",
);
assert!(result.is_ok(), "Eq trait should work");
}
#[test]
#[ignore = "Runtime limitation: ne method not implemented - needs [RUNTIME-623] ticket"]
fn test_sqlite_770_ne_method() {
let result = execute_program(
r"
let not_equal = 42 != 43;
",
);
assert!(result.is_ok(), "ne method should work");
}
#[test]
#[ignore = "Runtime limitation: PartialOrd basic not implemented - needs [RUNTIME-624] ticket"]
fn test_sqlite_771_partialord_basic() {
let result = execute_program(
r"
let less = 1 < 2;
",
);
assert!(result.is_ok(), "PartialOrd basic should work");
}
#[test]
#[ignore = "Runtime limitation: PartialOrd derive not implemented - needs [RUNTIME-625] ticket"]
fn test_sqlite_772_partialord_derive() {
let result = execute_program(
r"
#[derive(PartialOrd)]
struct Point { x: i32, y: i32 }
",
);
assert!(result.is_ok(), "PartialOrd derive should work");
}
#[test]
#[ignore = "Runtime limitation: PartialOrd impl not implemented - needs [RUNTIME-626] ticket"]
fn test_sqlite_773_partialord_impl() {
let result = execute_program(
r"
impl PartialOrd for S {
fun partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(Ordering::Equal)
}
}
",
);
assert!(result.is_ok(), "PartialOrd impl should work");
}
#[test]
#[ignore = "Runtime limitation: Ord trait not implemented - needs [RUNTIME-627] ticket"]
fn test_sqlite_774_ord_trait() {
let result = execute_program(
r"
#[derive(Ord, PartialOrd, Eq, PartialEq)]
struct Point { x: i32, y: i32 }
",
);
assert!(result.is_ok(), "Ord trait should work");
}
#[test]
#[ignore = "Runtime limitation: comparison operators not implemented - needs [RUNTIME-628] ticket"]
fn test_sqlite_775_cmp_ops() {
let result = execute_program(
r"
let lt = 1 < 2;
let le = 1 <= 2;
let gt = 2 > 1;
let ge = 2 >= 1;
",
);
assert!(result.is_ok(), "Comparison operators should work");
}
#[test]
#[ignore = "Runtime limitation: Hash trait basic not implemented - needs [RUNTIME-629] ticket"]
fn test_sqlite_776_hash_basic() {
let result = execute_program(
r"
use std::collections::HashSet;
let mut set = HashSet::new();
set.insert(42);
",
);
assert!(result.is_ok(), "Hash trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Hash derive not implemented - needs [RUNTIME-630] ticket"]
fn test_sqlite_777_hash_derive() {
let result = execute_program(
r"
#[derive(Hash)]
struct Point { x: i32, y: i32 }
",
);
assert!(result.is_ok(), "Hash derive should work");
}
#[test]
#[ignore = "Runtime limitation: Hash impl not implemented - needs [RUNTIME-631] ticket"]
fn test_sqlite_778_hash_impl() {
let result = execute_program(
r"
use std::hash::{Hash, Hasher};
impl Hash for S {
fun hash<H: Hasher>(&self, state: &mut H) {
42.hash(state);
}
}
",
);
assert!(result.is_ok(), "Hash impl should work");
}
#[test]
#[ignore = "Runtime limitation: HashMap with custom key not implemented - needs [RUNTIME-632] ticket"]
fn test_sqlite_779_hashmap_custom() {
let result = execute_program(
r#"
#[derive(Hash, Eq, PartialEq)]
struct Key { id: i32 }
let mut map = HashMap::new();
map.insert(Key { id: 1 }, "value");
"#,
);
assert!(result.is_ok(), "HashMap with custom key should work");
}
#[test]
#[ignore = "Runtime limitation: HashSet with custom type not implemented - needs [RUNTIME-633] ticket"]
fn test_sqlite_780_hashset_custom() {
let result = execute_program(
r"
#[derive(Hash, Eq, PartialEq)]
struct Item { id: i32 }
let mut set = HashSet::new();
set.insert(Item { id: 1 });
",
);
assert!(result.is_ok(), "HashSet with custom type should work");
}
#[test]
#[ignore = "Runtime limitation: Drop trait basic not implemented - needs [RUNTIME-634] ticket"]
fn test_sqlite_781_drop_basic() {
let result = execute_program(
r"
struct S;
impl Drop for S {
fun drop(&mut self) { }
}
",
);
assert!(result.is_ok(), "Drop trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Drop execution not implemented - needs [RUNTIME-635] ticket"]
fn test_sqlite_782_drop_exec() {
let result = execute_program(
r"
{
let s = S;
}
",
);
assert!(result.is_ok(), "Drop execution should work");
}
#[test]
#[ignore = "Runtime limitation: Drop order not implemented - needs [RUNTIME-636] ticket"]
fn test_sqlite_783_drop_order() {
let result = execute_program(
r"
let a = S1;
let b = S2;
",
);
assert!(result.is_ok(), "Drop order should work");
}
#[test]
#[ignore = "Runtime limitation: manual drop not implemented - needs [RUNTIME-637] ticket"]
fn test_sqlite_784_manual_drop() {
let result = execute_program(
r"
let s = S;
drop(s);
",
);
assert!(result.is_ok(), "Manual drop should work");
}
#[test]
#[ignore = "Runtime limitation: Drop with resources not implemented - needs [RUNTIME-638] ticket"]
fn test_sqlite_785_drop_resources() {
let result = execute_program(
r"
struct File { handle: i32 }
impl Drop for File {
fun drop(&mut self) {
close(self.handle);
}
}
",
);
assert!(result.is_ok(), "Drop with resources should work");
}
#[test]
#[ignore = "Runtime limitation: Deref trait basic not implemented - needs [RUNTIME-639] ticket"]
fn test_sqlite_786_deref_basic() {
let result = execute_program(
r"
let boxed = Box::new(42);
let value = *boxed;
",
);
assert!(result.is_ok(), "Deref trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Deref impl not implemented - needs [RUNTIME-640] ticket"]
fn test_sqlite_787_deref_impl() {
let result = execute_program(
r"
use std::ops::Deref;
impl Deref for Wrapper {
type Target = i32;
fun deref(&self) -> &Self::Target { &self.value }
}
",
);
assert!(result.is_ok(), "Deref impl should work");
}
#[test]
#[ignore = "Runtime limitation: DerefMut trait not implemented - needs [RUNTIME-641] ticket"]
fn test_sqlite_788_derefmut_trait() {
let result = execute_program(
r"
let mut boxed = Box::new(42);
*boxed = 43;
",
);
assert!(result.is_ok(), "DerefMut trait should work");
}
#[test]
#[ignore = "Runtime limitation: Deref coercion not implemented - needs [RUNTIME-642] ticket"]
fn test_sqlite_789_deref_coercion() {
let result = execute_program(
r#"
let s: String = String::from("hello");
let slice: &str = &s;
"#,
);
assert!(result.is_ok(), "Deref coercion should work");
}
#[test]
#[ignore = "Runtime limitation: Deref chain not implemented - needs [RUNTIME-643] ticket"]
fn test_sqlite_790_deref_chain() {
let result = execute_program(
r"
let rc = Rc::new(Box::new(42));
let value = **rc;
",
);
assert!(result.is_ok(), "Deref chain should work");
}
fn execute_program(source: &str) -> Result<Value, String> {
let work_dir = PathBuf::from(".");
let mut repl = Repl::new(work_dir).map_err(|e| format!("REPL init error: {e:?}"))?;
repl.evaluate_expr_str(source, None)
.map_err(|e| format!("{e:?}"))
}
fn assert_runtime_error(source: &str, expected_fragments: &[&str]) {
let result = execute_program(source);
assert!(
result.is_err(),
"Expected runtime error for: {source}\nGot: {result:?}"
);
let error = result.unwrap_err().to_lowercase();
let found = expected_fragments
.iter()
.any(|fragment| error.contains(&fragment.to_lowercase()));
assert!(
found,
"Expected error containing one of {expected_fragments:?}, got: {error}"
);
}
fn assert_runtime_error_or_special(source: &str, expected_fragments: &[&str]) {
let result = execute_program(source);
match result {
Err(e) => {
let error = e.to_lowercase();
let found = expected_fragments
.iter()
.any(|fragment| error.contains(&fragment.to_lowercase()));
assert!(
found,
"Expected error containing one of {expected_fragments:?}, got: {error}"
);
}
Ok(value) => {
let val_str = format!("{value:?}").to_lowercase();
assert!(
val_str.contains("inf") || val_str.contains("nan"),
"Expected special value (Inf/NaN) or error, got: {value:?}"
);
}
}
}
#[test]
#[ignore = "Runtime limitation: AsRef trait basic not implemented - needs [RUNTIME-644] ticket"]
fn test_sqlite_791_asref_basic() {
let result = execute_program(
r#"
let s = String::from("hello");
let r: &str = s.as_ref();
"#,
);
assert!(result.is_ok(), "AsRef trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: AsRef trait generics not implemented - needs [RUNTIME-645] ticket"]
fn test_sqlite_792_asref_generic() {
let result = execute_program(
r#"
fun takes_str<T: AsRef<str>>(x: T) {}
takes_str("hello");
"#,
);
assert!(result.is_ok(), "AsRef trait generics should work");
}
#[test]
#[ignore = "Runtime limitation: AsMut trait not implemented - needs [RUNTIME-646] ticket"]
fn test_sqlite_793_asmut() {
let result = execute_program(
r"
let mut v = vec![1, 2, 3];
let s: &mut [i32] = v.as_mut();
",
);
assert!(result.is_ok(), "AsMut trait should work");
}
#[test]
#[ignore = "Runtime limitation: AsRef Vec to slice not implemented - needs [RUNTIME-647] ticket"]
fn test_sqlite_794_asref_vec() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let s: &[i32] = v.as_ref();
",
);
assert!(result.is_ok(), "AsRef Vec to slice should work");
}
#[test]
#[ignore = "Runtime limitation: AsRef String to str not implemented - needs [RUNTIME-648] ticket"]
fn test_sqlite_795_asref_string() {
let result = execute_program(
r#"
let s = String::from("test");
let r: &str = s.as_ref();
"#,
);
assert!(result.is_ok(), "AsRef String to str should work");
}
#[test]
#[ignore = "Runtime limitation: Borrow trait basic not implemented - needs [RUNTIME-649] ticket"]
fn test_sqlite_796_borrow_basic() {
let result = execute_program(
r#"
use std::borrow::Borrow;
let s = String::from("hello");
let r: &str = s.borrow();
"#,
);
assert!(result.is_ok(), "Borrow trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: BorrowMut trait not implemented - needs [RUNTIME-650] ticket"]
fn test_sqlite_797_borrow_mut() {
let result = execute_program(
r"
use std::borrow::BorrowMut;
let mut v = vec![1, 2, 3];
let s: &mut [i32] = v.borrow_mut();
",
);
assert!(result.is_ok(), "BorrowMut trait should work");
}
#[test]
#[ignore = "Runtime limitation: Borrow in HashMap not implemented - needs [RUNTIME-651] ticket"]
fn test_sqlite_798_borrow_hashmap() {
let result = execute_program(
r#"
let mut map = HashMap::new();
map.insert(String::from("key"), 42);
let val = map.get("key");
"#,
);
assert!(result.is_ok(), "Borrow in HashMap should work");
}
#[test]
#[ignore = "Runtime limitation: Borrow trait generic not implemented - needs [RUNTIME-652] ticket"]
fn test_sqlite_799_borrow_generic() {
let result = execute_program(
r#"
fun takes_borrowed<T, B: ?Sized>(x: &T) where T: Borrow<B> {}
takes_borrowed(&String::from("test"));
"#,
);
assert!(result.is_ok(), "Borrow trait generic should work");
}
#[test]
#[ignore = "Runtime limitation: Borrow ToOwned not implemented - needs [RUNTIME-653] ticket"]
fn test_sqlite_800_borrow_to_owned() {
let result = execute_program(
r#"
let s: &str = "hello";
let owned: String = s.to_owned();
"#,
);
assert!(result.is_ok(), "Borrow ToOwned should work");
}
#[test]
#[ignore = "Runtime limitation: Into trait basic not implemented - needs [RUNTIME-654] ticket"]
fn test_sqlite_801_into_basic() {
let result = execute_program(
r"
let x: i64 = 42i32.into();
",
);
assert!(result.is_ok(), "Into trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Into String from str not implemented - needs [RUNTIME-655] ticket"]
fn test_sqlite_802_into_string() {
let result = execute_program(
r#"
let s: String = "hello".into();
"#,
);
assert!(result.is_ok(), "Into String from str should work");
}
#[test]
#[ignore = "Runtime limitation: TryInto trait not implemented - needs [RUNTIME-656] ticket"]
fn test_sqlite_803_try_into() {
let result = execute_program(
r"
let x: Result<i32, _> = 42i64.try_into();
",
);
assert!(result.is_ok(), "TryInto trait should work");
}
#[test]
#[ignore = "Runtime limitation: Into generic function not implemented - needs [RUNTIME-657] ticket"]
fn test_sqlite_804_into_generic() {
let result = execute_program(
r#"
fun takes_into<T: Into<String>>(x: T) -> String { x.into() }
let result = takes_into("test");
"#,
);
assert!(result.is_ok(), "Into generic function should work");
}
#[test]
#[ignore = "Runtime limitation: TryInto error case not implemented - needs [RUNTIME-658] ticket"]
fn test_sqlite_805_try_into_err() {
let result = execute_program(
r"
let x: Result<i32, _> = 999999999999i64.try_into();
",
);
assert!(result.is_ok(), "TryInto error case should work");
}
#[test]
#[ignore = "Runtime limitation: FromIterator Vec not implemented - needs [RUNTIME-659] ticket"]
fn test_sqlite_806_from_iter_vec() {
let result = execute_program(
r"
let v: Vec<i32> = (0..5).collect();
",
);
assert!(result.is_ok(), "FromIterator Vec should work");
}
#[test]
#[ignore = "Runtime limitation: FromIterator String not implemented - needs [RUNTIME-660] ticket"]
fn test_sqlite_807_from_iter_string() {
let result = execute_program(
r"
let s: String = ['h', 'e', 'l', 'l', 'o'].iter().collect();
",
);
assert!(result.is_ok(), "FromIterator String should work");
}
#[test]
#[ignore = "Runtime limitation: IntoIterator for loop not implemented - needs [RUNTIME-661] ticket"]
fn test_sqlite_808_into_iter_for() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
for x in v { }
",
);
assert!(result.is_ok(), "IntoIterator for loop should work");
}
#[test]
#[ignore = "Runtime limitation: FromIterator HashMap not implemented - needs [RUNTIME-662] ticket"]
fn test_sqlite_809_from_iter_hashmap() {
let result = execute_program(
r"
let map: HashMap<i32, i32> = [(1, 2), (3, 4)].iter().cloned().collect();
",
);
assert!(result.is_ok(), "FromIterator HashMap should work");
}
#[test]
#[ignore = "Runtime limitation: IntoIterator explicit not implemented - needs [RUNTIME-663] ticket"]
fn test_sqlite_810_into_iter_explicit() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let iter = v.into_iter();
",
);
assert!(result.is_ok(), "IntoIterator explicit should work");
}
#[test]
#[ignore = "Runtime limitation: Add trait basic not implemented - needs [RUNTIME-664] ticket"]
fn test_sqlite_811_add_trait() {
let result = execute_program(
r"
use std::ops::Add;
let x = 1.add(2);
",
);
assert!(result.is_ok(), "Add trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Sub trait basic not implemented - needs [RUNTIME-665] ticket"]
fn test_sqlite_812_sub_trait() {
let result = execute_program(
r"
use std::ops::Sub;
let x = 5.sub(3);
",
);
assert!(result.is_ok(), "Sub trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: AddAssign trait not implemented - needs [RUNTIME-666] ticket"]
fn test_sqlite_813_add_assign() {
let result = execute_program(
r"
let mut x = 5;
x += 3;
",
);
assert!(result.is_ok(), "AddAssign trait should work");
}
#[test]
#[ignore = "Runtime limitation: SubAssign trait not implemented - needs [RUNTIME-667] ticket"]
fn test_sqlite_814_sub_assign() {
let result = execute_program(
r"
let mut x = 5;
x -= 3;
",
);
assert!(result.is_ok(), "SubAssign trait should work");
}
#[test]
#[ignore = "Runtime limitation: Add trait custom type not implemented - needs [RUNTIME-668] ticket"]
fn test_sqlite_815_add_custom() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
impl Add for Point {
type Output = Point;
fun add(self, other: Point) -> Point {
Point { x: self.x + other.x, y: self.y + other.y }
}
}
let p = Point { x: 1, y: 2 } + Point { x: 3, y: 4 };
",
);
assert!(result.is_ok(), "Add trait custom type should work");
}
#[test]
#[ignore = "Runtime limitation: Mul trait basic not implemented - needs [RUNTIME-669] ticket"]
fn test_sqlite_816_mul_trait() {
let result = execute_program(
r"
use std::ops::Mul;
let x = 3.mul(4);
",
);
assert!(result.is_ok(), "Mul trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Div trait basic not implemented - needs [RUNTIME-670] ticket"]
fn test_sqlite_817_div_trait() {
let result = execute_program(
r"
use std::ops::Div;
let x = 12.div(3);
",
);
assert!(result.is_ok(), "Div trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: MulAssign trait not implemented - needs [RUNTIME-671] ticket"]
fn test_sqlite_818_mul_assign() {
let result = execute_program(
r"
let mut x = 5;
x *= 3;
",
);
assert!(result.is_ok(), "MulAssign trait should work");
}
#[test]
#[ignore = "Runtime limitation: DivAssign trait not implemented - needs [RUNTIME-672] ticket"]
fn test_sqlite_819_div_assign() {
let result = execute_program(
r"
let mut x = 15;
x /= 3;
",
);
assert!(result.is_ok(), "DivAssign trait should work");
}
#[test]
#[ignore = "Runtime limitation: Rem trait not implemented - needs [RUNTIME-673] ticket"]
fn test_sqlite_820_rem_trait() {
let result = execute_program(
r"
use std::ops::Rem;
let x = 10.rem(3);
",
);
assert!(result.is_ok(), "Rem trait should work");
}
#[test]
#[ignore = "Runtime limitation: BitAnd trait basic not implemented - needs [RUNTIME-674] ticket"]
fn test_sqlite_821_bitand_trait() {
let result = execute_program(
r"
use std::ops::BitAnd;
let x = 0b1010.bitand(0b1100);
",
);
assert!(result.is_ok(), "BitAnd trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: BitOr trait basic not implemented - needs [RUNTIME-675] ticket"]
fn test_sqlite_822_bitor_trait() {
let result = execute_program(
r"
use std::ops::BitOr;
let x = 0b1010.bitor(0b1100);
",
);
assert!(result.is_ok(), "BitOr trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: BitXor trait not implemented - needs [RUNTIME-676] ticket"]
fn test_sqlite_823_bitxor_trait() {
let result = execute_program(
r"
use std::ops::BitXor;
let x = 0b1010.bitxor(0b1100);
",
);
assert!(result.is_ok(), "BitXor trait should work");
}
#[test]
#[ignore = "Runtime limitation: BitAndAssign trait not implemented - needs [RUNTIME-677] ticket"]
fn test_sqlite_824_bitand_assign() {
let result = execute_program(
r"
let mut x = 0b1111;
x &= 0b1010;
",
);
assert!(result.is_ok(), "BitAndAssign trait should work");
}
#[test]
#[ignore = "Runtime limitation: Not trait not implemented - needs [RUNTIME-678] ticket"]
fn test_sqlite_825_not_trait() {
let result = execute_program(
r"
use std::ops::Not;
let x = (!0b1010) as u8;
",
);
assert!(result.is_ok(), "Not trait should work");
}
#[test]
#[ignore = "Runtime limitation: Shl trait basic not implemented - needs [RUNTIME-679] ticket"]
fn test_sqlite_826_shl_trait() {
let result = execute_program(
r"
use std::ops::Shl;
let x = 1.shl(2);
",
);
assert!(result.is_ok(), "Shl trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Shr trait basic not implemented - needs [RUNTIME-680] ticket"]
fn test_sqlite_827_shr_trait() {
let result = execute_program(
r"
use std::ops::Shr;
let x = 8.shr(2);
",
);
assert!(result.is_ok(), "Shr trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: ShlAssign trait not implemented - needs [RUNTIME-681] ticket"]
fn test_sqlite_828_shl_assign() {
let result = execute_program(
r"
let mut x = 1;
x <<= 3;
",
);
assert!(result.is_ok(), "ShlAssign trait should work");
}
#[test]
#[ignore = "Runtime limitation: ShrAssign trait not implemented - needs [RUNTIME-682] ticket"]
fn test_sqlite_829_shr_assign() {
let result = execute_program(
r"
let mut x = 16;
x >>= 2;
",
);
assert!(result.is_ok(), "ShrAssign trait should work");
}
#[test]
#[ignore = "Runtime limitation: shift overflow behavior not implemented - needs [RUNTIME-683] ticket"]
fn test_sqlite_830_shift_overflow() {
let result = execute_program(
r"
let x = 1i32 << 31;
",
);
assert!(result.is_ok(), "Shift overflow behavior should work");
}
#[test]
#[ignore = "Runtime limitation: Index trait Vec not implemented - needs [RUNTIME-684] ticket"]
fn test_sqlite_831_index_vec() {
let result = execute_program(
r"
use std::ops::Index;
let v = vec![1, 2, 3];
let x = v.index(1);
",
);
assert!(result.is_ok(), "Index trait Vec should work");
}
#[test]
#[ignore = "Runtime limitation: IndexMut trait Vec not implemented - needs [RUNTIME-685] ticket"]
fn test_sqlite_832_index_mut_vec() {
let result = execute_program(
r"
use std::ops::IndexMut;
let mut v = vec![1, 2, 3];
v.index_mut(1) = 5;
",
);
assert!(result.is_ok(), "IndexMut trait Vec should work");
}
#[test]
#[ignore = "Runtime limitation: Index trait HashMap not implemented - needs [RUNTIME-686] ticket"]
fn test_sqlite_833_index_hashmap() {
let result = execute_program(
r#"
let mut map = HashMap::new();
map.insert("key", 42);
let x = &map["key"];
"#,
);
assert!(result.is_ok(), "Index trait HashMap should work");
}
#[test]
#[ignore = "Runtime limitation: Index trait custom type not implemented - needs [RUNTIME-687] ticket"]
fn test_sqlite_834_index_custom() {
let result = execute_program(
r"
struct Matrix { data: Vec<i32> }
impl Index<usize> for Matrix {
type Output = i32;
fun index(&self, i: usize) -> &i32 { &self.data[i] }
}
let m = Matrix { data: vec![1, 2, 3] };
let x = m[0];
",
);
assert!(result.is_ok(), "Index trait custom type should work");
}
#[test]
#[ignore = "Runtime limitation: Index out of bounds not implemented - needs [RUNTIME-688] ticket"]
fn test_sqlite_835_index_bounds() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let x = v[10];
",
);
assert!(result.is_err(), "Index out of bounds should panic");
}
#[test]
#[ignore = "Runtime limitation: Fn trait basic not implemented - needs [RUNTIME-689] ticket"]
fn test_sqlite_836_fn_trait() {
let result = execute_program(
r"
fun call_fn<F: Fn(i32) -> i32>(f: F) -> i32 { f(5) }
let result = call_fn(|x| x + 1);
",
);
assert!(result.is_ok(), "Fn trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: FnMut trait not implemented - needs [RUNTIME-690] ticket"]
fn test_sqlite_837_fn_mut_trait() {
let result = execute_program(
r"
fun call_fn_mut<F: FnMut(i32) -> i32>(mut f: F) -> i32 { f(5) }
let mut counter = 0;
call_fn_mut(|x| { counter += 1; x + counter });
",
);
assert!(result.is_ok(), "FnMut trait should work");
}
#[test]
#[ignore = "Runtime limitation: FnOnce trait not implemented - needs [RUNTIME-691] ticket"]
fn test_sqlite_838_fn_once_trait() {
let result = execute_program(
r"
fun call_fn_once<F: FnOnce() -> i32>(f: F) -> i32 { f() }
let x = Box::new(42);
call_fn_once(|| *x);
",
);
assert!(result.is_ok(), "FnOnce trait should work");
}
#[test]
#[ignore = "Runtime limitation: Fn trait closure capture not implemented - needs [RUNTIME-692] ticket"]
fn test_sqlite_839_fn_capture() {
let result = execute_program(
r"
let y = 10;
fun call_fn<F: Fn(i32) -> i32>(f: F) -> i32 { f(5) }
let result = call_fn(|x| x + y);
",
);
assert!(result.is_ok(), "Fn trait with closure capture should work");
}
#[test]
#[ignore = "Runtime limitation: FnMut trait mutable capture not implemented - needs [RUNTIME-693] ticket"]
fn test_sqlite_840_fn_mut_capture() {
let result = execute_program(
r"
let mut sum = 0;
let mut add = |x| { sum += x; sum };
add(5);
add(10);
",
);
assert!(
result.is_ok(),
"FnMut trait with mutable capture should work"
);
}
#[test]
#[ignore = "Runtime limitation: Sized trait basic not implemented - needs [RUNTIME-694] ticket"]
fn test_sqlite_841_sized_basic() {
let result = execute_program(
r"
fun foo<T: Sized>(x: T) {}
foo(42);
",
);
assert!(result.is_ok(), "Sized trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: ?Sized trait not implemented - needs [RUNTIME-695] ticket"]
fn test_sqlite_842_unsized() {
let result = execute_program(
r#"
fun foo<T: ?Sized>(x: &T) {}
let s: &str = "hello";
foo(s);
"#,
);
assert!(result.is_ok(), "?Sized trait should work");
}
#[test]
#[ignore = "Runtime limitation: Sized bound implicit not implemented - needs [RUNTIME-696] ticket"]
fn test_sqlite_843_sized_implicit() {
let result = execute_program(
r"
fun foo<T>(x: T) {}
foo(42);
",
);
assert!(result.is_ok(), "Sized bound implicit should work");
}
#[test]
#[ignore = "Runtime limitation: DST behind pointer not implemented - needs [RUNTIME-697] ticket"]
fn test_sqlite_844_dst_pointer() {
let result = execute_program(
r#"
let s: Box<str> = Box::new("hello".to_string()).into();
"#,
);
assert!(result.is_ok(), "DST behind pointer should work");
}
#[test]
#[ignore = "Runtime limitation: Unsize coercion not implemented - needs [RUNTIME-698] ticket"]
fn test_sqlite_845_unsize_coercion() {
let result = execute_program(
r"
let arr: [i32; 3] = [1, 2, 3];
let slice: &[i32] = &arr;
",
);
assert!(result.is_ok(), "Unsize coercion should work");
}
#[test]
#[ignore = "Runtime limitation: Send trait basic not implemented - needs [RUNTIME-699] ticket"]
fn test_sqlite_846_send_basic() {
let result = execute_program(
r"
use std::thread;
let x = 42;
thread::spawn(move || { let _ = x; });
",
);
assert!(result.is_ok(), "Send trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Sync trait basic not implemented - needs [RUNTIME-700] ticket"]
fn test_sqlite_847_sync_basic() {
let result = execute_program(
r"
use std::sync::Arc;
let x = Arc::new(42);
let y = x.clone();
",
);
assert!(result.is_ok(), "Sync trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Send bound in function not implemented - needs [RUNTIME-701] ticket"]
fn test_sqlite_848_send_bound() {
let result = execute_program(
r"
fun foo<T: Send>(x: T) {}
foo(42);
",
);
assert!(result.is_ok(), "Send bound in function should work");
}
#[test]
#[ignore = "Runtime limitation: Sync bound in function not implemented - needs [RUNTIME-702] ticket"]
fn test_sqlite_849_sync_bound() {
let result = execute_program(
r"
fun foo<T: Sync>(x: T) {}
foo(42);
",
);
assert!(result.is_ok(), "Sync bound in function should work");
}
#[test]
#[ignore = "Runtime limitation: Send Sync together not implemented - needs [RUNTIME-703] ticket"]
fn test_sqlite_850_send_sync() {
let result = execute_program(
r"
fun foo<T: Send + Sync>(x: T) {}
foo(42);
",
);
assert!(result.is_ok(), "Send Sync together should work");
}
#[test]
#[ignore = "Runtime limitation: Copy implies Clone not implemented - needs [RUNTIME-704] ticket"]
fn test_sqlite_851_copy_implies_clone() {
let result = execute_program(
r"
#[derive(Copy, Clone)]
struct Point { x: i32, y: i32 }
let p1 = Point { x: 1, y: 2 };
let p2 = p1;
let p3 = p1.clone();
",
);
assert!(result.is_ok(), "Copy implies Clone should work");
}
#[test]
#[ignore = "Runtime limitation: Copy semantics not implemented - needs [RUNTIME-705] ticket"]
fn test_sqlite_852_copy_semantics() {
let result = execute_program(
r"
let x = 42;
let y = x;
let z = x;
",
);
assert!(result.is_ok(), "Copy semantics should work");
}
#[test]
#[ignore = "Runtime limitation: Clone without Copy not implemented - needs [RUNTIME-706] ticket"]
fn test_sqlite_853_clone_no_copy() {
let result = execute_program(
r#"
let s1 = String::from("hello");
let s2 = s1.clone();
"#,
);
assert!(result.is_ok(), "Clone without Copy should work");
}
#[test]
#[ignore = "Runtime limitation: Copy bound not implemented - needs [RUNTIME-707] ticket"]
fn test_sqlite_854_copy_bound() {
let result = execute_program(
r"
fun foo<T: Copy>(x: T) -> T { x }
let result = foo(42);
",
);
assert!(result.is_ok(), "Copy bound should work");
}
#[test]
#[ignore = "Runtime limitation: Clone bound not implemented - needs [RUNTIME-708] ticket"]
fn test_sqlite_855_clone_bound() {
let result = execute_program(
r"
fun foo<T: Clone>(x: T) -> T { x.clone() }
let result = foo(42);
",
);
assert!(result.is_ok(), "Clone bound should work");
}
#[test]
#[ignore = "Runtime limitation: Drop order not implemented - needs [RUNTIME-709] ticket"]
fn test_sqlite_856_drop_order() {
let result = execute_program(
r"
struct A;
impl Drop for A { fun drop(&mut self) {} }
let x = A;
let y = A;
",
);
assert!(result.is_ok(), "Drop order should work");
}
#[test]
#[ignore = "Runtime limitation: Drop with resources not implemented - needs [RUNTIME-710] ticket"]
fn test_sqlite_857_drop_resources() {
let result = execute_program(
r"
struct File { handle: i32 }
impl Drop for File { fun drop(&mut self) {} }
let f = File { handle: 42 };
",
);
assert!(result.is_ok(), "Drop with resources should work");
}
#[test]
#[ignore = "Runtime limitation: manual drop not implemented - needs [RUNTIME-711] ticket"]
fn test_sqlite_858_manual_drop() {
let result = execute_program(
r#"
let x = String::from("hello");
drop(x);
"#,
);
assert!(result.is_ok(), "Manual drop should work");
}
#[test]
#[ignore = "Runtime limitation: Drop in scope not implemented - needs [RUNTIME-712] ticket"]
fn test_sqlite_859_drop_scope() {
let result = execute_program(
r"
struct A;
impl Drop for A { fun drop(&mut self) {} }
{ let x = A; }
",
);
assert!(result.is_ok(), "Drop in scope should work");
}
#[test]
#[ignore = "Runtime limitation: Drop not copyable not implemented - needs [RUNTIME-713] ticket"]
fn test_sqlite_860_drop_not_copy() {
let result = execute_program(
r"
struct A;
impl Drop for A { fun drop(&mut self) {} }
let x = A;
",
);
assert!(result.is_ok(), "Drop not copyable should work");
}
#[test]
#[ignore = "Runtime limitation: Iterator next not implemented - needs [RUNTIME-714] ticket"]
fn test_sqlite_861_iterator_next() {
let result = execute_program(
r"
let mut iter = vec![1, 2, 3].into_iter();
let x = iter.next();
",
);
assert!(result.is_ok(), "Iterator next should work");
}
#[test]
#[ignore = "Runtime limitation: Iterator collect not implemented - needs [RUNTIME-715] ticket"]
fn test_sqlite_862_iterator_collect() {
let result = execute_program(
r"
let v: Vec<i32> = (0..5).collect();
",
);
assert!(result.is_ok(), "Iterator collect should work");
}
#[test]
#[ignore = "Runtime limitation: Iterator map not implemented - needs [RUNTIME-716] ticket"]
fn test_sqlite_863_iterator_map() {
let result = execute_program(
r"
let v: Vec<i32> = vec![1, 2, 3].iter().map(|x| x * 2).collect();
",
);
assert!(result.is_ok(), "Iterator map should work");
}
#[test]
#[ignore = "Runtime limitation: Iterator filter not implemented - needs [RUNTIME-717] ticket"]
fn test_sqlite_864_iterator_filter() {
let result = execute_program(
r"
let v: Vec<i32> = vec![1, 2, 3, 4].iter().filter(|x| **x % 2 == 0).collect();
",
);
assert!(result.is_ok(), "Iterator filter should work");
}
#[test]
#[ignore = "Runtime limitation: Iterator fold not implemented - needs [RUNTIME-718] ticket"]
fn test_sqlite_865_iterator_fold() {
let result = execute_program(
r"
let sum = vec![1, 2, 3].iter().fold(0, |acc, x| acc + x);
",
);
assert!(result.is_ok(), "Iterator fold should work");
}
#[test]
#[ignore = "Runtime limitation: Future trait basic not implemented - needs [RUNTIME-719] ticket"]
fn test_sqlite_866_future_basic() {
let result = execute_program(
r"
use std::future::Future;
async fun foo() -> i32 { 42 }
",
);
assert!(result.is_ok(), "Future trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: async fn execution not implemented - needs [RUNTIME-720] ticket"]
fn test_sqlite_867_async_fn() {
let result = execute_program(
r"
async fun foo() -> i32 { 42 }
let result = foo().await;
",
);
assert!(result.is_ok(), "Async fn execution should work");
}
#[test]
#[ignore = "Runtime limitation: await expression not implemented - needs [RUNTIME-721] ticket"]
fn test_sqlite_868_await_expr() {
let result = execute_program(
r"
async fun foo() -> i32 { 42 }
async fun bar() -> i32 { foo().await }
",
);
assert!(result.is_ok(), "Await expression should work");
}
#[test]
#[ignore = "Runtime limitation: async block not implemented - needs [RUNTIME-722] ticket"]
fn test_sqlite_869_async_block() {
let result = execute_program(
r"
let future = async { 42 };
",
);
assert!(result.is_ok(), "Async block should work");
}
#[test]
#[ignore = "Runtime limitation: async closure not implemented - needs [RUNTIME-723] ticket"]
fn test_sqlite_870_async_closure() {
let result = execute_program(
r"
let f = async || 42;
",
);
assert!(result.is_ok(), "Async closure should work");
}
#[test]
#[ignore = "Runtime limitation: Error trait basic not implemented - needs [RUNTIME-724] ticket"]
fn test_sqlite_871_error_basic() {
let result = execute_program(
r"
use std::error::Error;
struct MyError;
impl Error for MyError {}
",
);
assert!(result.is_ok(), "Error trait basic should work");
}
#[test]
#[ignore = "Runtime limitation: Result Ok not implemented - needs [RUNTIME-725] ticket"]
fn test_sqlite_872_result_ok() {
let result = execute_program(
r"
let x: Result<i32, String> = Ok(42);
",
);
assert!(result.is_ok(), "Result Ok should work");
}
#[test]
#[ignore = "Runtime limitation: Result Err not implemented - needs [RUNTIME-726] ticket"]
fn test_sqlite_873_result_err() {
let result = execute_program(
r#"
let x: Result<i32, String> = Err("error".to_string());
"#,
);
assert!(result.is_ok(), "Result Err should work");
}
#[test]
#[ignore = "Runtime limitation: Result unwrap not implemented - needs [RUNTIME-727] ticket"]
fn test_sqlite_874_result_unwrap() {
let result = execute_program(
r"
let x: Result<i32, String> = Ok(42);
let value = x.unwrap();
",
);
assert!(result.is_ok(), "Result unwrap should work");
}
#[test]
#[ignore = "Runtime limitation: Result map not implemented - needs [RUNTIME-728] ticket"]
fn test_sqlite_875_result_map() {
let result = execute_program(
r"
let x: Result<i32, String> = Ok(42);
let y = x.map(|v| v * 2);
",
);
assert!(result.is_ok(), "Result map should work");
}
#[test]
#[ignore = "Runtime limitation: Option Some not implemented - needs [RUNTIME-729] ticket"]
fn test_sqlite_876_option_some() {
let result = execute_program(
r"
let x: Option<i32> = Some(42);
",
);
assert!(result.is_ok(), "Option Some should work");
}
#[test]
#[ignore = "Runtime limitation: Option None not implemented - needs [RUNTIME-730] ticket"]
fn test_sqlite_877_option_none() {
let result = execute_program(
r"
let x: Option<i32> = None;
",
);
assert!(result.is_ok(), "Option None should work");
}
#[test]
#[ignore = "Runtime limitation: Option unwrap not implemented - needs [RUNTIME-731] ticket"]
fn test_sqlite_878_option_unwrap() {
let result = execute_program(
r"
let x: Option<i32> = Some(42);
let value = x.unwrap();
",
);
assert!(result.is_ok(), "Option unwrap should work");
}
#[test]
#[ignore = "Runtime limitation: Option map not implemented - needs [RUNTIME-732] ticket"]
fn test_sqlite_879_option_map() {
let result = execute_program(
r"
let x: Option<i32> = Some(42);
let y = x.map(|v| v * 2);
",
);
assert!(result.is_ok(), "Option map should work");
}
#[test]
#[ignore = "Runtime limitation: Option and_then not implemented - needs [RUNTIME-733] ticket"]
fn test_sqlite_880_option_and_then() {
let result = execute_program(
r"
let x: Option<i32> = Some(42);
let y = x.and_then(|v| Some(v * 2));
",
);
assert!(result.is_ok(), "Option and_then should work");
}
#[test]
#[ignore = "Runtime limitation: raw pointer const not implemented - needs [RUNTIME-734] ticket"]
fn test_sqlite_881_raw_ptr_const() {
let result = execute_program(
r"
let x = 42;
let p: *const i32 = &x;
",
);
assert!(result.is_ok(), "Raw pointer const should work");
}
#[test]
#[ignore = "Runtime limitation: raw pointer mut not implemented - needs [RUNTIME-735] ticket"]
fn test_sqlite_882_raw_ptr_mut() {
let result = execute_program(
r"
let mut x = 42;
let p: *mut i32 = &mut x;
",
);
assert!(result.is_ok(), "Raw pointer mut should work");
}
#[test]
#[ignore = "Runtime limitation: raw pointer deref not implemented - needs [RUNTIME-736] ticket"]
fn test_sqlite_883_raw_ptr_deref() {
let result = execute_program(
r"
let x = 42;
let p: *const i32 = &x;
unsafe { let y = *p; }
",
);
assert!(result.is_ok(), "Raw pointer deref should work");
}
#[test]
#[ignore = "Runtime limitation: pointer offset not implemented - needs [RUNTIME-737] ticket"]
fn test_sqlite_884_ptr_offset() {
let result = execute_program(
r"
let arr = [1, 2, 3];
let p: *const i32 = &arr[0];
unsafe { let p2 = p.offset(1); }
",
);
assert!(result.is_ok(), "Pointer offset should work");
}
#[test]
#[ignore = "Runtime limitation: null pointer not implemented - needs [RUNTIME-738] ticket"]
fn test_sqlite_885_null_ptr() {
let result = execute_program(
r"
let p: *const i32 = std::ptr::null();
",
);
assert!(result.is_ok(), "Null pointer should work");
}
#[test]
#[ignore = "Runtime limitation: PhantomData basic not implemented - needs [RUNTIME-739] ticket"]
fn test_sqlite_886_phantom_data() {
let result = execute_program(
r"
use std::marker::PhantomData;
struct Foo<T> { marker: PhantomData<T> }
",
);
assert!(result.is_ok(), "PhantomData basic should work");
}
#[test]
#[ignore = "Runtime limitation: PhantomData with lifetime not implemented - needs [RUNTIME-740] ticket"]
fn test_sqlite_887_phantom_lifetime() {
let result = execute_program(
r"
use std::marker::PhantomData;
struct Foo<'a> { marker: PhantomData<&'a ()> }
",
);
assert!(result.is_ok(), "PhantomData with lifetime should work");
}
#[test]
#[ignore = "Runtime limitation: Unpin marker not implemented - needs [RUNTIME-741] ticket"]
fn test_sqlite_888_unpin_marker() {
let result = execute_program(
r"
use std::marker::Unpin;
struct Foo;
impl Unpin for Foo {}
",
);
assert!(result.is_ok(), "Unpin marker should work");
}
#[test]
#[ignore = "Runtime limitation: PhantomPinned marker not implemented - needs [RUNTIME-742] ticket"]
fn test_sqlite_889_phantom_pinned() {
let result = execute_program(
r"
use std::marker::PhantomPinned;
struct Foo { _pin: PhantomPinned }
",
);
assert!(result.is_ok(), "PhantomPinned marker should work");
}
#[test]
#[ignore = "Runtime limitation: marker trait impl not implemented - needs [RUNTIME-743] ticket"]
fn test_sqlite_890_marker_impl() {
let result = execute_program(
r"
struct Foo;
unsafe impl Send for Foo {}
unsafe impl Sync for Foo {}
",
);
assert!(result.is_ok(), "Marker trait impl should work");
}
#[test]
#[ignore = "Runtime limitation: Cell basic not implemented - needs [RUNTIME-744] ticket"]
fn test_sqlite_891_cell_basic() {
let result = execute_program(
r"
use std::cell::Cell;
let c = Cell::new(42);
c.set(43);
let x = c.get();
",
);
assert!(result.is_ok(), "Cell basic should work");
}
#[test]
#[ignore = "Runtime limitation: RefCell basic not implemented - needs [RUNTIME-745] ticket"]
fn test_sqlite_892_refcell_basic() {
let result = execute_program(
r"
use std::cell::RefCell;
let c = RefCell::new(42);
*c.borrow_mut() = 43;
let x = *c.borrow();
",
);
assert!(result.is_ok(), "RefCell basic should work");
}
#[test]
#[ignore = "Runtime limitation: Cell in struct not implemented - needs [RUNTIME-746] ticket"]
fn test_sqlite_893_cell_struct() {
let result = execute_program(
r"
use std::cell::Cell;
struct Counter { count: Cell<i32> }
let c = Counter { count: Cell::new(0) };
c.count.set(1);
",
);
assert!(result.is_ok(), "Cell in struct should work");
}
#[test]
#[ignore = "Runtime limitation: RefCell borrow not implemented - needs [RUNTIME-747] ticket"]
fn test_sqlite_894_refcell_borrow() {
let result = execute_program(
r"
use std::cell::RefCell;
let c = RefCell::new(vec![1, 2, 3]);
let borrowed = c.borrow();
let len = borrowed.len();
",
);
assert!(result.is_ok(), "RefCell borrow should work");
}
#[test]
#[ignore = "Runtime limitation: RefCell try_borrow not implemented - needs [RUNTIME-748] ticket"]
fn test_sqlite_895_refcell_try_borrow() {
let result = execute_program(
r"
use std::cell::RefCell;
let c = RefCell::new(42);
let result = c.try_borrow();
",
);
assert!(result.is_ok(), "RefCell try_borrow should work");
}
#[test]
#[ignore = "Runtime limitation: Rc clone not implemented - needs [RUNTIME-749] ticket"]
fn test_sqlite_896_rc_clone() {
let result = execute_program(
r"
use std::rc::Rc;
let x = Rc::new(42);
let y = x.clone();
",
);
assert!(result.is_ok(), "Rc clone should work");
}
#[test]
#[ignore = "Runtime limitation: Rc strong_count not implemented - needs [RUNTIME-750] ticket"]
fn test_sqlite_897_rc_strong_count() {
let result = execute_program(
r"
use std::rc::Rc;
let x = Rc::new(42);
let y = x.clone();
let count = Rc::strong_count(&x);
",
);
assert!(result.is_ok(), "Rc strong_count should work");
}
#[test]
#[ignore = "Runtime limitation: Arc thread safety not implemented - needs [RUNTIME-751] ticket"]
fn test_sqlite_898_arc_thread() {
let result = execute_program(
r"
use std::sync::Arc;
use std::thread;
let x = Arc::new(42);
let y = x.clone();
thread::spawn(move || { let _ = *y; });
",
);
assert!(result.is_ok(), "Arc thread safety should work");
}
#[test]
#[ignore = "Runtime limitation: Rc weak not implemented - needs [RUNTIME-752] ticket"]
fn test_sqlite_899_rc_weak() {
let result = execute_program(
r"
use std::rc::Rc;
let x = Rc::new(42);
let weak = Rc::downgrade(&x);
let upgraded = weak.upgrade();
",
);
assert!(result.is_ok(), "Rc weak should work");
}
#[test]
#[ignore = "Runtime limitation: Arc weak not implemented - needs [RUNTIME-753] ticket"]
fn test_sqlite_900_arc_weak() {
let result = execute_program(
r"
use std::sync::Arc;
let x = Arc::new(42);
let weak = Arc::downgrade(&x);
let upgraded = weak.upgrade();
",
);
assert!(result.is_ok(), "Arc weak should work");
}
#[test]
#[ignore = "Runtime limitation: Mutex lock not implemented - needs [RUNTIME-754] ticket"]
fn test_sqlite_901_mutex_lock() {
let result = execute_program(
r"
use std::sync::Mutex;
let m = Mutex::new(42);
let mut data = m.lock().unwrap();
*data = 43;
",
);
assert!(result.is_ok(), "Mutex lock should work");
}
#[test]
#[ignore = "Runtime limitation: Mutex try_lock not implemented - needs [RUNTIME-755] ticket"]
fn test_sqlite_902_mutex_try_lock() {
let result = execute_program(
r"
use std::sync::Mutex;
let m = Mutex::new(42);
let result = m.try_lock();
",
);
assert!(result.is_ok(), "Mutex try_lock should work");
}
#[test]
#[ignore = "Runtime limitation: RwLock read not implemented - needs [RUNTIME-756] ticket"]
fn test_sqlite_903_rwlock_read() {
let result = execute_program(
r"
use std::sync::RwLock;
let lock = RwLock::new(42);
let reader = lock.read().unwrap();
let value = *reader;
",
);
assert!(result.is_ok(), "RwLock read should work");
}
#[test]
#[ignore = "Runtime limitation: RwLock write not implemented - needs [RUNTIME-757] ticket"]
fn test_sqlite_904_rwlock_write() {
let result = execute_program(
r"
use std::sync::RwLock;
let lock = RwLock::new(42);
let mut writer = lock.write().unwrap();
*writer = 43;
",
);
assert!(result.is_ok(), "RwLock write should work");
}
#[test]
#[ignore = "Runtime limitation: Mutex with Arc not implemented - needs [RUNTIME-758] ticket"]
fn test_sqlite_905_mutex_arc() {
let result = execute_program(
r"
use std::sync::{Arc, Mutex};
let counter = Arc::new(Mutex::new(0));
let c = counter.clone();
*c.lock().unwrap() += 1;
",
);
assert!(result.is_ok(), "Mutex with Arc should work");
}
#[test]
#[ignore = "Runtime limitation: channel send recv not implemented - needs [RUNTIME-759] ticket"]
fn test_sqlite_906_channel_basic() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
tx.send(42).unwrap();
let val = rx.recv().unwrap();
",
);
assert!(result.is_ok(), "Channel send recv should work");
}
#[test]
#[ignore = "Runtime limitation: channel multiple sends not implemented - needs [RUNTIME-760] ticket"]
fn test_sqlite_907_channel_multi() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
tx.send(1).unwrap();
tx.send(2).unwrap();
tx.send(3).unwrap();
",
);
assert!(result.is_ok(), "Channel multiple sends should work");
}
#[test]
#[ignore = "Runtime limitation: channel try_recv not implemented - needs [RUNTIME-761] ticket"]
fn test_sqlite_908_channel_try_recv() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
let result = rx.try_recv();
",
);
assert!(result.is_ok(), "Channel try_recv should work");
}
#[test]
#[ignore = "Runtime limitation: channel iter not implemented - needs [RUNTIME-762] ticket"]
fn test_sqlite_909_channel_iter() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
tx.send(1).unwrap();
drop(tx);
for val in rx { }
",
);
assert!(result.is_ok(), "Channel iter should work");
}
#[test]
#[ignore = "Runtime limitation: channel clone sender not implemented - needs [RUNTIME-763] ticket"]
fn test_sqlite_910_channel_clone() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
let tx2 = tx.clone();
tx.send(1).unwrap();
tx2.send(2).unwrap();
",
);
assert!(result.is_ok(), "Channel clone sender should work");
}
#[test]
#[ignore = "Runtime limitation: AtomicBool not implemented - needs [RUNTIME-764] ticket"]
fn test_sqlite_911_atomic_bool() {
let result = execute_program(
r"
use std::sync::atomic::{AtomicBool, Ordering};
let flag = AtomicBool::new(false);
flag.store(true, Ordering::SeqCst);
let val = flag.load(Ordering::SeqCst);
",
);
assert!(result.is_ok(), "AtomicBool should work");
}
#[test]
#[ignore = "Runtime limitation: AtomicI32 not implemented - needs [RUNTIME-765] ticket"]
fn test_sqlite_912_atomic_i32() {
let result = execute_program(
r"
use std::sync::atomic::{AtomicI32, Ordering};
let counter = AtomicI32::new(0);
counter.fetch_add(1, Ordering::SeqCst);
",
);
assert!(result.is_ok(), "AtomicI32 should work");
}
#[test]
#[ignore = "Runtime limitation: AtomicUsize not implemented - needs [RUNTIME-766] ticket"]
fn test_sqlite_913_atomic_usize() {
let result = execute_program(
r"
use std::sync::atomic::{AtomicUsize, Ordering};
let counter = AtomicUsize::new(0);
counter.fetch_add(1, Ordering::Relaxed);
",
);
assert!(result.is_ok(), "AtomicUsize should work");
}
#[test]
#[ignore = "Runtime limitation: compare_exchange not implemented - needs [RUNTIME-767] ticket"]
fn test_sqlite_914_compare_exchange() {
let result = execute_program(
r"
use std::sync::atomic::{AtomicI32, Ordering};
let val = AtomicI32::new(42);
let result = val.compare_exchange(42, 43, Ordering::SeqCst, Ordering::SeqCst);
",
);
assert!(result.is_ok(), "compare_exchange should work");
}
#[test]
#[ignore = "Runtime limitation: fetch_update not implemented - needs [RUNTIME-768] ticket"]
fn test_sqlite_915_fetch_update() {
let result = execute_program(
r"
use std::sync::atomic::{AtomicI32, Ordering};
let val = AtomicI32::new(42);
let result = val.fetch_update(Ordering::SeqCst, Ordering::SeqCst, |x| Some(x + 1));
",
);
assert!(result.is_ok(), "fetch_update should work");
}
#[test]
#[ignore = "Runtime limitation: thread spawn not implemented - needs [RUNTIME-769] ticket"]
fn test_sqlite_916_thread_spawn() {
let result = execute_program(
r"
use std::thread;
let handle = thread::spawn(|| { 42 });
",
);
assert!(result.is_ok(), "Thread spawn should work");
}
#[test]
#[ignore = "Runtime limitation: thread join not implemented - needs [RUNTIME-770] ticket"]
fn test_sqlite_917_thread_join() {
let result = execute_program(
r"
use std::thread;
let handle = thread::spawn(|| { 42 });
let result = handle.join().unwrap();
",
);
assert!(result.is_ok(), "Thread join should work");
}
#[test]
#[ignore = "Runtime limitation: thread move closure not implemented - needs [RUNTIME-771] ticket"]
fn test_sqlite_918_thread_move() {
let result = execute_program(
r"
use std::thread;
let x = 42;
let handle = thread::spawn(move || { x + 1 });
",
);
assert!(result.is_ok(), "Thread move closure should work");
}
#[test]
#[ignore = "Runtime limitation: thread sleep not implemented - needs [RUNTIME-772] ticket"]
fn test_sqlite_919_thread_sleep() {
let result = execute_program(
r"
use std::thread;
use std::time::Duration;
thread::sleep(Duration::from_millis(1));
",
);
assert!(result.is_ok(), "Thread sleep should work");
}
#[test]
#[ignore = "Runtime limitation: thread current not implemented - needs [RUNTIME-773] ticket"]
fn test_sqlite_920_thread_current() {
let result = execute_program(
r"
use std::thread;
let current = thread::current();
",
);
assert!(result.is_ok(), "Thread current should work");
}
#[test]
#[ignore = "Runtime limitation: Vec push pop not implemented - needs [RUNTIME-774] ticket"]
fn test_sqlite_921_vec_push_pop() {
let result = execute_program(
r"
let mut v = Vec::new();
v.push(1);
v.push(2);
let x = v.pop();
",
);
assert!(result.is_ok(), "Vec push pop should work");
}
#[test]
#[ignore = "Runtime limitation: Vec capacity not implemented - needs [RUNTIME-775] ticket"]
fn test_sqlite_922_vec_capacity() {
let result = execute_program(
r"
let v = Vec::with_capacity(10);
let cap = v.capacity();
",
);
assert!(result.is_ok(), "Vec capacity should work");
}
#[test]
#[ignore = "Runtime limitation: Vec extend not implemented - needs [RUNTIME-776] ticket"]
fn test_sqlite_923_vec_extend() {
let result = execute_program(
r"
let mut v = vec![1, 2];
v.extend(vec![3, 4]);
",
);
assert!(result.is_ok(), "Vec extend should work");
}
#[test]
#[ignore = "Runtime limitation: Vec retain not implemented - needs [RUNTIME-777] ticket"]
fn test_sqlite_924_vec_retain() {
let result = execute_program(
r"
let mut v = vec![1, 2, 3, 4];
v.retain(|x| x % 2 == 0);
",
);
assert!(result.is_ok(), "Vec retain should work");
}
#[test]
#[ignore = "Runtime limitation: Vec sort not implemented - needs [RUNTIME-778] ticket"]
fn test_sqlite_925_vec_sort() {
let result = execute_program(
r"
let mut v = vec![3, 1, 2];
v.sort();
",
);
assert!(result.is_ok(), "Vec sort should work");
}
#[test]
#[ignore = "Runtime limitation: HashMap insert get not implemented - needs [RUNTIME-779] ticket"]
fn test_sqlite_926_hashmap_insert_get() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key", 42);
let val = map.get("key");
"#,
);
assert!(result.is_ok(), "HashMap insert get should work");
}
#[test]
#[ignore = "Runtime limitation: HashMap entry not implemented - needs [RUNTIME-780] ticket"]
fn test_sqlite_927_hashmap_entry() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.entry("key").or_insert(42);
"#,
);
assert!(result.is_ok(), "HashMap entry should work");
}
#[test]
#[ignore = "Runtime limitation: HashMap remove not implemented - needs [RUNTIME-781] ticket"]
fn test_sqlite_928_hashmap_remove() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key", 42);
let val = map.remove("key");
"#,
);
assert!(result.is_ok(), "HashMap remove should work");
}
#[test]
#[ignore = "Runtime limitation: HashMap iter not implemented - needs [RUNTIME-782] ticket"]
fn test_sqlite_929_hashmap_iter() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);
for (k, v) in &map { }
"#,
);
assert!(result.is_ok(), "HashMap iter should work");
}
#[test]
#[ignore = "Runtime limitation: HashMap len not implemented - needs [RUNTIME-783] ticket"]
fn test_sqlite_930_hashmap_len() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key", 42);
let len = map.len();
"#,
);
assert!(result.is_ok(), "HashMap len should work");
}
#[test]
#[ignore = "Runtime limitation: String push_str not implemented - needs [RUNTIME-784] ticket"]
fn test_sqlite_931_string_push_str() {
let result = execute_program(
r#"
let mut s = String::from("hello");
s.push_str(" world");
"#,
);
assert!(result.is_ok(), "String push_str should work");
}
#[test]
#[ignore = "Runtime limitation: String split not implemented - needs [RUNTIME-785] ticket"]
fn test_sqlite_932_string_split() {
let result = execute_program(
r#"
let s = "a,b,c";
let parts: Vec<&str> = s.split(",").collect();
"#,
);
assert!(result.is_ok(), "String split should work");
}
#[test]
#[ignore = "Runtime limitation: String trim not implemented - needs [RUNTIME-786] ticket"]
fn test_sqlite_933_string_trim() {
let result = execute_program(
r#"
let s = " hello ";
let trimmed = s.trim();
"#,
);
assert!(result.is_ok(), "String trim should work");
}
#[test]
#[ignore = "Runtime limitation: String replace not implemented - needs [RUNTIME-787] ticket"]
fn test_sqlite_934_string_replace() {
let result = execute_program(
r#"
let s = "hello world";
let replaced = s.replace("world", "Rust");
"#,
);
assert!(result.is_ok(), "String replace should work");
}
#[test]
#[ignore = "Runtime limitation: String contains not implemented - needs [RUNTIME-788] ticket"]
fn test_sqlite_935_string_contains() {
let result = execute_program(
r#"
let s = "hello world";
let has = s.contains("world");
"#,
);
assert!(result.is_ok(), "String contains should work");
}
#[test]
#[ignore = "Runtime limitation: Range basic not implemented - needs [RUNTIME-789] ticket"]
fn test_sqlite_936_range_basic() {
let result = execute_program(
r"
let r = 0..5;
",
);
assert!(result.is_ok(), "Range basic should work");
}
#[test]
#[ignore = "Runtime limitation: RangeInclusive not implemented - needs [RUNTIME-790] ticket"]
fn test_sqlite_937_range_inclusive() {
let result = execute_program(
r"
let r = 0..=5;
",
);
assert!(result.is_ok(), "RangeInclusive should work");
}
#[test]
#[ignore = "Runtime limitation: Range contains not implemented - needs [RUNTIME-791] ticket"]
fn test_sqlite_938_range_contains() {
let result = execute_program(
r"
let r = 0..10;
let has = r.contains(&5);
",
);
assert!(result.is_ok(), "Range contains should work");
}
#[test]
#[ignore = "Runtime limitation: RangeFrom not implemented - needs [RUNTIME-792] ticket"]
fn test_sqlite_939_range_from() {
let result = execute_program(
r"
let r = 5..;
",
);
assert!(result.is_ok(), "RangeFrom should work");
}
#[test]
#[ignore = "Runtime limitation: RangeTo not implemented - needs [RUNTIME-793] ticket"]
fn test_sqlite_940_range_to() {
let result = execute_program(
r"
let r = ..5;
",
);
assert!(result.is_ok(), "RangeTo should work");
}
#[test]
#[ignore = "Runtime limitation: heap allocation not implemented - needs [RUNTIME-944] ticket"]
fn test_sqlite_1091_heap_allocation() {
let result = execute_program(
r"
let b = Box::new(42);
",
);
assert!(result.is_ok(), "heap allocation should work");
}
#[test]
#[ignore = "Runtime limitation: Vec growth not implemented - needs [RUNTIME-945] ticket"]
fn test_sqlite_1092_vec_growth() {
let result = execute_program(
r"
let mut v = Vec::new();
v.push(1);
v.push(2);
",
);
assert!(result.is_ok(), "Vec growth should work");
}
#[test]
#[ignore = "Runtime limitation: String heap not implemented - needs [RUNTIME-946] ticket"]
fn test_sqlite_1093_string_heap() {
let result = execute_program(
r#"
let s = String::from("hello");
"#,
);
assert!(result.is_ok(), "String heap should work");
}
#[test]
#[ignore = "Runtime limitation: Rc reference counting not implemented - needs [RUNTIME-947] ticket"]
fn test_sqlite_1094_rc_refcount() {
let result = execute_program(
r"
use std::rc::Rc;
let r = Rc::new(42);
let r2 = r.clone();
",
);
assert!(result.is_ok(), "Rc reference counting should work");
}
#[test]
#[ignore = "Runtime limitation: Arc thread-safe counting not implemented - needs [RUNTIME-948] ticket"]
fn test_sqlite_1095_arc_atomic() {
let result = execute_program(
r"
use std::sync::Arc;
let a = Arc::new(42);
let a2 = a.clone();
",
);
assert!(result.is_ok(), "Arc thread-safe counting should work");
}
#[test]
#[ignore = "Runtime limitation: ? operator propagation not implemented - needs [RUNTIME-949] ticket"]
fn test_sqlite_1096_try_operator() {
let result = execute_program(
r"
fn foo() -> Result<i32, String> {
let x = bar()?;
Ok(x)
}
fn bar() -> Result<i32, String> { Ok(42) }
",
);
assert!(result.is_ok(), "? operator propagation should work");
}
#[test]
#[ignore = "Runtime limitation: Result unwrap panic not implemented - needs [RUNTIME-950] ticket"]
fn test_sqlite_1097_result_unwrap_panic() {
let result = execute_program(
r#"
let r: Result<i32, &str> = Err("fail");
let x = r.unwrap();
"#,
);
assert!(result.is_err(), "Result unwrap panic should fail");
}
#[test]
#[ignore = "Runtime limitation: Option unwrap panic not implemented - needs [RUNTIME-951] ticket"]
fn test_sqlite_1098_option_unwrap_panic() {
let result = execute_program(
r"
let o: Option<i32> = None;
let x = o.unwrap();
",
);
assert!(result.is_err(), "Option unwrap panic should fail");
}
#[test]
#[ignore = "Runtime limitation: expect custom message not implemented - needs [RUNTIME-952] ticket"]
fn test_sqlite_1099_expect_message() {
let result = execute_program(
r#"
let o: Option<i32> = None;
let x = o.expect("custom message");
"#,
);
assert!(result.is_err(), "expect custom message should fail");
}
#[test]
#[ignore = "Runtime limitation: panic macro not implemented - needs [RUNTIME-953] ticket"]
fn test_sqlite_1100_panic_macro() {
let result = execute_program(
r#"
panic!("explicit panic");
"#,
);
assert!(result.is_err(), "panic macro should fail");
}
#[test]
#[ignore = "Runtime limitation: Mutex lock not implemented - needs [RUNTIME-954] ticket"]
fn test_sqlite_1101_mutex_lock() {
let result = execute_program(
r"
use std::sync::Mutex;
let m = Mutex::new(42);
let guard = m.lock().unwrap();
",
);
assert!(result.is_ok(), "Mutex lock should work");
}
#[test]
#[ignore = "Runtime limitation: RwLock read not implemented - needs [RUNTIME-955] ticket"]
fn test_sqlite_1102_rwlock_read() {
let result = execute_program(
r"
use std::sync::RwLock;
let rw = RwLock::new(42);
let guard = rw.read().unwrap();
",
);
assert!(result.is_ok(), "RwLock read should work");
}
#[test]
#[ignore = "Runtime limitation: RwLock write not implemented - needs [RUNTIME-956] ticket"]
fn test_sqlite_1103_rwlock_write() {
let result = execute_program(
r"
use std::sync::RwLock;
let rw = RwLock::new(42);
let mut guard = rw.write().unwrap();
*guard = 43;
",
);
assert!(result.is_ok(), "RwLock write should work");
}
#[test]
#[ignore = "Runtime limitation: channel send/recv not implemented - needs [RUNTIME-957] ticket"]
fn test_sqlite_1104_channel_basic() {
let result = execute_program(
r"
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
tx.send(42).unwrap();
let x = rx.recv().unwrap();
",
);
assert!(result.is_ok(), "channel send/recv should work");
}
#[test]
#[ignore = "Runtime limitation: thread spawn not implemented - needs [RUNTIME-958] ticket"]
fn test_sqlite_1105_thread_spawn() {
let result = execute_program(
r"
use std::thread;
let h = thread::spawn(|| { 42 });
let x = h.join().unwrap();
",
);
assert!(result.is_ok(), "thread spawn should work");
}
#[test]
#[ignore = "Runtime limitation: Vec iterator not implemented - needs [RUNTIME-959] ticket"]
fn test_sqlite_1106_vec_iter() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
for x in v.iter() { }
",
);
assert!(result.is_ok(), "Vec iterator should work");
}
#[test]
#[ignore = "Runtime limitation: HashMap iterator not implemented - needs [RUNTIME-960] ticket"]
fn test_sqlite_1107_hashmap_iter() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut m = HashMap::new();
m.insert("a", 1);
for (k, v) in m.iter() { }
"#,
);
assert!(result.is_ok(), "HashMap iterator should work");
}
#[test]
#[ignore = "Runtime limitation: HashSet iterator not implemented - needs [RUNTIME-961] ticket"]
fn test_sqlite_1108_hashset_iter() {
let result = execute_program(
r"
use std::collections::HashSet;
let mut s = HashSet::new();
s.insert(1);
for x in s.iter() { }
",
);
assert!(result.is_ok(), "HashSet iterator should work");
}
#[test]
#[ignore = "Runtime limitation: BTreeMap iterator not implemented - needs [RUNTIME-962] ticket"]
fn test_sqlite_1109_btreemap_iter() {
let result = execute_program(
r#"
use std::collections::BTreeMap;
let mut m = BTreeMap::new();
m.insert("a", 1);
for (k, v) in m.iter() { }
"#,
);
assert!(result.is_ok(), "BTreeMap iterator should work");
}
#[test]
#[ignore = "Runtime limitation: BTreeSet iterator not implemented - needs [RUNTIME-963] ticket"]
fn test_sqlite_1110_btreeset_iter() {
let result = execute_program(
r"
use std::collections::BTreeSet;
let mut s = BTreeSet::new();
s.insert(1);
for x in s.iter() { }
",
);
assert!(result.is_ok(), "BTreeSet iterator should work");
}
#[test]
#[ignore = "Runtime limitation: as cast i32 to i64 not implemented - needs [RUNTIME-964] ticket"]
fn test_sqlite_1111_cast_i32_i64() {
let result = execute_program(
r"
let x: i32 = 42;
let y = x as i64;
",
);
assert!(result.is_ok(), "as cast i32 to i64 should work");
}
#[test]
#[ignore = "Runtime limitation: as cast f32 to f64 not implemented - needs [RUNTIME-965] ticket"]
fn test_sqlite_1112_cast_f32_f64() {
let result = execute_program(
r"
let x: f32 = 3.14;
let y = x as f64;
",
);
assert!(result.is_ok(), "as cast f32 to f64 should work");
}
#[test]
#[ignore = "Runtime limitation: as cast i32 to f64 not implemented - needs [RUNTIME-966] ticket"]
fn test_sqlite_1113_cast_i32_f64() {
let result = execute_program(
r"
let x: i32 = 42;
let y = x as f64;
",
);
assert!(result.is_ok(), "as cast i32 to f64 should work");
}
#[test]
#[ignore = "Runtime limitation: as cast f64 to i32 not implemented - needs [RUNTIME-967] ticket"]
fn test_sqlite_1114_cast_f64_i32() {
let result = execute_program(
r"
let x: f64 = 3.14;
let y = x as i32;
",
);
assert!(result.is_ok(), "as cast f64 to i32 should work");
}
#[test]
#[ignore = "Runtime limitation: u8 to char cast not implemented - needs [RUNTIME-968] ticket"]
fn test_sqlite_1115_cast_u8_char() {
let result = execute_program(
r"
let x: u8 = 65;
let c = x as char;
",
);
assert!(result.is_ok(), "u8 to char cast should work");
}
#[test]
#[ignore = "Runtime limitation: slice indexing not implemented - needs [RUNTIME-969] ticket"]
fn test_sqlite_1116_slice_index() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let s = &v[..];
let x = s[0];
",
);
assert!(result.is_ok(), "slice indexing should work");
}
#[test]
#[ignore = "Runtime limitation: slice range not implemented - needs [RUNTIME-970] ticket"]
fn test_sqlite_1117_slice_range() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4, 5];
let s = &v[1..3];
",
);
assert!(result.is_ok(), "slice range should work");
}
#[test]
#[ignore = "Runtime limitation: slice len not implemented - needs [RUNTIME-971] ticket"]
fn test_sqlite_1118_slice_len() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let s = &v[..];
let n = s.len();
",
);
assert!(result.is_ok(), "slice len should work");
}
#[test]
#[ignore = "Runtime limitation: slice is_empty not implemented - needs [RUNTIME-972] ticket"]
fn test_sqlite_1119_slice_is_empty() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let s = &v[..];
let e = s.is_empty();
",
);
assert!(result.is_ok(), "slice is_empty should work");
}
#[test]
#[ignore = "Runtime limitation: slice first/last not implemented - needs [RUNTIME-973] ticket"]
fn test_sqlite_1120_slice_first_last() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let s = &v[..];
let f = s.first();
let l = s.last();
",
);
assert!(result.is_ok(), "slice first/last should work");
}
#[test]
#[ignore = "Runtime limitation: String push not implemented - needs [RUNTIME-974] ticket"]
fn test_sqlite_1121_string_push() {
let result = execute_program(
r#"
let mut s = String::from("hello");
s.push('!');
"#,
);
assert!(result.is_ok(), "String push should work");
}
#[test]
#[ignore = "Runtime limitation: String push_str not implemented - needs [RUNTIME-975] ticket"]
fn test_sqlite_1122_string_push_str() {
let result = execute_program(
r#"
let mut s = String::from("hello");
s.push_str(" world");
"#,
);
assert!(result.is_ok(), "String push_str should work");
}
#[test]
#[ignore = "Runtime limitation: String pop not implemented - needs [RUNTIME-976] ticket"]
fn test_sqlite_1123_string_pop() {
let result = execute_program(
r#"
let mut s = String::from("hello");
let c = s.pop();
"#,
);
assert!(result.is_ok(), "String pop should work");
}
#[test]
#[ignore = "Runtime limitation: String clear not implemented - needs [RUNTIME-977] ticket"]
fn test_sqlite_1124_string_clear() {
let result = execute_program(
r#"
let mut s = String::from("hello");
s.clear();
"#,
);
assert!(result.is_ok(), "String clear should work");
}
#[test]
#[ignore = "Runtime limitation: String trim not implemented - needs [RUNTIME-978] ticket"]
fn test_sqlite_1125_string_trim() {
let result = execute_program(
r#"
let s = " hello ";
let t = s.trim();
"#,
);
assert!(result.is_ok(), "String trim should work");
}
#[test]
#[ignore = "Runtime limitation: closure capture by value not implemented - needs [RUNTIME-979] ticket"]
fn test_sqlite_1126_closure_capture_value() {
let result = execute_program(
r"
let x = 42;
let f = move || x;
",
);
assert!(result.is_ok(), "closure capture by value should work");
}
#[test]
#[ignore = "Runtime limitation: closure capture by reference not implemented - needs [RUNTIME-980] ticket"]
fn test_sqlite_1127_closure_capture_ref() {
let result = execute_program(
r"
let x = 42;
let f = || &x;
",
);
assert!(result.is_ok(), "closure capture by reference should work");
}
#[test]
#[ignore = "Runtime limitation: closure capture mutable not implemented - needs [RUNTIME-981] ticket"]
fn test_sqlite_1128_closure_capture_mut() {
let result = execute_program(
r"
let mut x = 42;
let mut f = || { x += 1; };
",
);
assert!(result.is_ok(), "closure capture mutable should work");
}
#[test]
#[ignore = "Runtime limitation: closure call not implemented - needs [RUNTIME-982] ticket"]
fn test_sqlite_1129_closure_call() {
let result = execute_program(
r"
let f = || 42;
let x = f();
",
);
assert!(result.is_ok(), "closure call should work");
}
#[test]
#[ignore = "Runtime limitation: closure with parameters not implemented - needs [RUNTIME-983] ticket"]
fn test_sqlite_1130_closure_params() {
let result = execute_program(
r"
let f = |x, y| x + y;
let z = f(1, 2);
",
);
assert!(result.is_ok(), "closure with parameters should work");
}
#[test]
#[ignore = "Runtime limitation: vec! macro not implemented - needs [RUNTIME-984] ticket"]
fn test_sqlite_1131_macro_vec() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
",
);
assert!(result.is_ok(), "vec! macro should work");
}
#[test]
#[ignore = "Runtime limitation: println! macro not implemented - needs [RUNTIME-985] ticket"]
fn test_sqlite_1132_macro_println() {
let result = execute_program(
r#"
println!("hello");
"#,
);
assert!(result.is_ok(), "println! macro should work");
}
#[test]
#[ignore = "Runtime limitation: format! macro not implemented - needs [RUNTIME-986] ticket"]
fn test_sqlite_1133_macro_format() {
let result = execute_program(
r#"
let s = format!("hello {}", 42);
"#,
);
assert!(result.is_ok(), "format! macro should work");
}
#[test]
#[ignore = "Runtime limitation: assert! macro not implemented - needs [RUNTIME-987] ticket"]
fn test_sqlite_1134_macro_assert() {
let result = execute_program(
r"
assert!(true);
",
);
assert!(result.is_ok(), "assert! macro should work");
}
#[test]
#[ignore = "Runtime limitation: assert_eq! macro not implemented - needs [RUNTIME-988] ticket"]
fn test_sqlite_1135_macro_assert_eq() {
let result = execute_program(
r"
assert_eq!(1 + 1, 2);
",
);
assert!(result.is_ok(), "assert_eq! macro should work");
}
#[test]
#[ignore = "Runtime limitation: Drop trait not implemented - needs [RUNTIME-989] ticket"]
fn test_sqlite_1136_drop_trait() {
let result = execute_program(
r"
struct Foo;
impl Drop for Foo {
fn drop(&mut self) { }
}
let f = Foo;
",
);
assert!(result.is_ok(), "Drop trait should work");
}
#[test]
#[ignore = "Runtime limitation: drop order not implemented - needs [RUNTIME-990] ticket"]
fn test_sqlite_1137_drop_order() {
let result = execute_program(
r"
struct A;
struct B;
impl Drop for A { fn drop(&mut self) { } }
impl Drop for B { fn drop(&mut self) { } }
let a = A;
let b = B;
",
);
assert!(result.is_ok(), "drop order should work");
}
#[test]
#[ignore = "Runtime limitation: drop scope not implemented - needs [RUNTIME-991] ticket"]
fn test_sqlite_1138_drop_scope() {
let result = execute_program(
r"
struct Foo;
impl Drop for Foo { fn drop(&mut self) { } }
{
let f = Foo;
}
",
);
assert!(result.is_ok(), "drop scope should work");
}
#[test]
#[ignore = "Runtime limitation: drop function not implemented - needs [RUNTIME-992] ticket"]
fn test_sqlite_1139_drop_function() {
let result = execute_program(
r"
struct Foo;
let f = Foo;
drop(f);
",
);
assert!(result.is_ok(), "drop function should work");
}
#[test]
#[ignore = "Runtime limitation: mem::forget not implemented - needs [RUNTIME-993] ticket"]
fn test_sqlite_1140_mem_forget() {
let result = execute_program(
r"
use std::mem;
struct Foo;
let f = Foo;
mem::forget(f);
",
);
assert!(result.is_ok(), "mem::forget should work");
}
#[test]
#[ignore = "Runtime limitation: trait method simple not implemented - needs [RUNTIME-994] ticket"]
fn test_sqlite_1141_trait_method_simple() {
let result = execute_program(
r"
trait Foo {
fn bar(&self) -> i32;
}
struct S;
impl Foo for S {
fn bar(&self) -> i32 { 42 }
}
let s = S;
let x = s.bar();
",
);
assert!(result.is_ok(), "trait method simple should work");
}
#[test]
#[ignore = "Runtime limitation: trait method default not implemented - needs [RUNTIME-995] ticket"]
fn test_sqlite_1142_trait_method_default() {
let result = execute_program(
r"
trait Foo {
fn bar(&self) -> i32 { 42 }
}
struct S;
impl Foo for S { }
let s = S;
let x = s.bar();
",
);
assert!(result.is_ok(), "trait method default should work");
}
#[test]
#[ignore = "Runtime limitation: trait method override not implemented - needs [RUNTIME-996] ticket"]
fn test_sqlite_1143_trait_method_override() {
let result = execute_program(
r"
trait Foo {
fn bar(&self) -> i32 { 0 }
}
struct S;
impl Foo for S {
fn bar(&self) -> i32 { 42 }
}
let s = S;
let x = s.bar();
",
);
assert!(result.is_ok(), "trait method override should work");
}
#[test]
#[ignore = "Runtime limitation: trait method generic not implemented - needs [RUNTIME-997] ticket"]
fn test_sqlite_1144_trait_method_generic() {
let result = execute_program(
r"
trait Foo<T> {
fn bar(&self, x: T) -> T;
}
struct S;
impl Foo<i32> for S {
fn bar(&self, x: i32) -> i32 { x }
}
let s = S;
let x = s.bar(42);
",
);
assert!(result.is_ok(), "trait method generic should work");
}
#[test]
#[ignore = "Runtime limitation: trait method self not implemented - needs [RUNTIME-998] ticket"]
fn test_sqlite_1145_trait_method_self() {
let result = execute_program(
r"
trait Foo {
fn bar(self) -> i32;
}
struct S;
impl Foo for S {
fn bar(self) -> i32 { 42 }
}
let s = S;
let x = s.bar();
",
);
assert!(result.is_ok(), "trait method self should work");
}
#[test]
#[ignore = "Runtime limitation: generic fn simple not implemented - needs [RUNTIME-999] ticket"]
fn test_sqlite_1146_generic_fn_simple() {
let result = execute_program(
r"
fn foo<T>(x: T) -> T { x }
let x = foo(42);
",
);
assert!(result.is_ok(), "generic fn simple should work");
}
#[test]
#[ignore = "Runtime limitation: generic fn multi param not implemented - needs [RUNTIME-1000] ticket"]
fn test_sqlite_1147_generic_fn_multi() {
let result = execute_program(
r#"
fn foo<T, U>(x: T, y: U) -> T { x }
let x = foo(42, "hello");
"#,
);
assert!(result.is_ok(), "generic fn multi param should work");
}
#[test]
#[ignore = "Runtime limitation: generic fn bound not implemented - needs [RUNTIME-1001] ticket"]
fn test_sqlite_1148_generic_fn_bound() {
let result = execute_program(
r"
fn foo<T: Clone>(x: T) -> T { x.clone() }
let x = foo(42);
",
);
assert!(result.is_ok(), "generic fn bound should work");
}
#[test]
#[ignore = "Runtime limitation: generic fn where not implemented - needs [RUNTIME-1002] ticket"]
fn test_sqlite_1149_generic_fn_where() {
let result = execute_program(
r"
fn foo<T>(x: T) -> T where T: Clone { x.clone() }
let x = foo(42);
",
);
assert!(result.is_ok(), "generic fn where should work");
}
#[test]
#[ignore = "Runtime limitation: generic fn turbofish not implemented - needs [RUNTIME-1003] ticket"]
fn test_sqlite_1150_generic_fn_turbofish() {
let result = execute_program(
r"
fn foo<T>(x: T) -> T { x }
let x = foo::<i32>(42);
",
);
assert!(result.is_ok(), "generic fn turbofish should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime fn param not implemented - needs [RUNTIME-1004] ticket"]
fn test_sqlite_1151_lifetime_fn_param() {
let result = execute_program(
r"
fn foo<'a>(x: &'a i32) -> &'a i32 { x }
let x = 42;
let y = foo(&x);
",
);
assert!(result.is_ok(), "lifetime fn param should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime struct field not implemented - needs [RUNTIME-1005] ticket"]
fn test_sqlite_1152_lifetime_struct_field() {
let result = execute_program(
r"
struct Foo<'a> { x: &'a i32 }
let x = 42;
let f = Foo { x: &x };
",
);
assert!(result.is_ok(), "lifetime struct field should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime elision not implemented - needs [RUNTIME-1006] ticket"]
fn test_sqlite_1153_lifetime_elision() {
let result = execute_program(
r"
fn foo(x: &i32) -> &i32 { x }
let x = 42;
let y = foo(&x);
",
);
assert!(result.is_ok(), "lifetime elision should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime static not implemented - needs [RUNTIME-1007] ticket"]
fn test_sqlite_1154_lifetime_static() {
let result = execute_program(
r#"
fn foo() -> &'static str { "hello" }
let s = foo();
"#,
);
assert!(result.is_ok(), "lifetime static should work");
}
#[test]
#[ignore = "Runtime limitation: lifetime multiple not implemented - needs [RUNTIME-1008] ticket"]
fn test_sqlite_1155_lifetime_multiple() {
let result = execute_program(
r"
fn foo<'a, 'b>(x: &'a i32, y: &'b i32) -> &'a i32 { x }
let x = 42;
let y = 43;
let z = foo(&x, &y);
",
);
assert!(result.is_ok(), "lifetime multiple should work");
}
#[test]
#[ignore = "Runtime limitation: pattern tuple destruct not implemented - needs [RUNTIME-1009] ticket"]
fn test_sqlite_1156_pattern_tuple_destruct() {
let result = execute_program(
r"
let (x, y) = (1, 2);
",
);
assert!(result.is_ok(), "pattern tuple destruct should work");
}
#[test]
#[ignore = "Runtime limitation: pattern struct destruct not implemented - needs [RUNTIME-1010] ticket"]
fn test_sqlite_1157_pattern_struct_destruct() {
let result = execute_program(
r"
struct Point { x: i32, y: i32 }
let Point { x, y } = Point { x: 1, y: 2 };
",
);
assert!(result.is_ok(), "pattern struct destruct should work");
}
#[test]
#[ignore = "Runtime limitation: pattern enum destruct not implemented - needs [RUNTIME-1011] ticket"]
fn test_sqlite_1158_pattern_enum_destruct() {
let result = execute_program(
r"
enum Opt { Some(i32), None }
let Opt::Some(x) = Opt::Some(42);
",
);
assert!(result.is_ok(), "pattern enum destruct should work");
}
#[test]
#[ignore = "Runtime limitation: pattern ref destruct not implemented - needs [RUNTIME-1012] ticket"]
fn test_sqlite_1159_pattern_ref_destruct() {
let result = execute_program(
r"
let x = 42;
let ref y = x;
",
);
assert!(result.is_ok(), "pattern ref destruct should work");
}
#[test]
#[ignore = "Runtime limitation: pattern slice destruct not implemented - needs [RUNTIME-1013] ticket"]
fn test_sqlite_1160_pattern_slice_destruct() {
let result = execute_program(
r"
let [x, y] = [1, 2];
",
);
assert!(result.is_ok(), "pattern slice destruct should work");
}
#[test]
#[ignore = "Runtime limitation: iter map not implemented - needs [RUNTIME-1014] ticket"]
fn test_sqlite_1161_iter_map() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let v2: Vec<_> = v.iter().map(|x| x + 1).collect();
",
);
assert!(result.is_ok(), "iter map should work");
}
#[test]
#[ignore = "Runtime limitation: iter filter not implemented - needs [RUNTIME-1015] ticket"]
fn test_sqlite_1162_iter_filter() {
let result = execute_program(
r"
let v = vec![1, 2, 3, 4];
let v2: Vec<_> = v.iter().filter(|x| **x % 2 == 0).collect();
",
);
assert!(result.is_ok(), "iter filter should work");
}
#[test]
#[ignore = "Runtime limitation: iter fold not implemented - needs [RUNTIME-1016] ticket"]
fn test_sqlite_1163_iter_fold() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let sum = v.iter().fold(0, |acc, x| acc + x);
",
);
assert!(result.is_ok(), "iter fold should work");
}
#[test]
#[ignore = "Runtime limitation: iter chain not implemented - needs [RUNTIME-1017] ticket"]
fn test_sqlite_1164_iter_chain() {
let result = execute_program(
r"
let v1 = vec![1, 2];
let v2 = vec![3, 4];
let v3: Vec<_> = v1.iter().chain(v2.iter()).collect();
",
);
assert!(result.is_ok(), "iter chain should work");
}
#[test]
#[ignore = "Runtime limitation: iter zip not implemented - needs [RUNTIME-1018] ticket"]
fn test_sqlite_1165_iter_zip() {
let result = execute_program(
r"
let v1 = vec![1, 2];
let v2 = vec![3, 4];
let v3: Vec<_> = v1.iter().zip(v2.iter()).collect();
",
);
assert!(result.is_ok(), "iter zip should work");
}
#[test]
#[ignore = "Runtime limitation: deref coercion simple not implemented - needs [RUNTIME-1019] ticket"]
fn test_sqlite_1166_deref_coercion_simple() {
let result = execute_program(
r"
let b = Box::new(42);
let x: &i32 = &b;
",
);
assert!(result.is_ok(), "deref coercion simple should work");
}
#[test]
#[ignore = "Runtime limitation: deref coercion string not implemented - needs [RUNTIME-1020] ticket"]
fn test_sqlite_1167_deref_coercion_string() {
let result = execute_program(
r#"
let s = String::from("hello");
let slice: &str = &s;
"#,
);
assert!(result.is_ok(), "deref coercion string should work");
}
#[test]
#[ignore = "Runtime limitation: deref coercion vec not implemented - needs [RUNTIME-1021] ticket"]
fn test_sqlite_1168_deref_coercion_vec() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let slice: &[i32] = &v;
",
);
assert!(result.is_ok(), "deref coercion vec should work");
}
#[test]
#[ignore = "Runtime limitation: deref method call not implemented - needs [RUNTIME-1022] ticket"]
fn test_sqlite_1169_deref_method_call() {
let result = execute_program(
r"
let b = Box::new(42);
let s = b.to_string();
",
);
assert!(result.is_ok(), "deref method call should work");
}
#[test]
#[ignore = "Runtime limitation: deref trait impl not implemented - needs [RUNTIME-1023] ticket"]
fn test_sqlite_1170_deref_trait_impl() {
let result = execute_program(
r"
use std::ops::Deref;
struct Foo(i32);
impl Deref for Foo {
type Target = i32;
fn deref(&self) -> &i32 { &self.0 }
}
let f = Foo(42);
let x = *f;
",
);
assert!(result.is_ok(), "deref trait impl should work");
}
#[test]
#[ignore = "Runtime limitation: from simple not implemented - needs [RUNTIME-1024] ticket"]
fn test_sqlite_1171_from_simple() {
let result = execute_program(
r#"
let s = String::from("hello");
"#,
);
assert!(result.is_ok(), "from simple should work");
}
#[test]
#[ignore = "Runtime limitation: into simple not implemented - needs [RUNTIME-1025] ticket"]
fn test_sqlite_1172_into_simple() {
let result = execute_program(
r#"
let s: String = "hello".into();
"#,
);
assert!(result.is_ok(), "into simple should work");
}
#[test]
#[ignore = "Runtime limitation: from custom not implemented - needs [RUNTIME-1026] ticket"]
fn test_sqlite_1173_from_custom() {
let result = execute_program(
r"
struct Foo(i32);
impl From<i32> for Foo {
fn from(x: i32) -> Foo { Foo(x) }
}
let f = Foo::from(42);
",
);
assert!(result.is_ok(), "from custom should work");
}
#[test]
#[ignore = "Runtime limitation: into custom not implemented - needs [RUNTIME-1027] ticket"]
fn test_sqlite_1174_into_custom() {
let result = execute_program(
r"
struct Foo(i32);
impl From<i32> for Foo {
fn from(x: i32) -> Foo { Foo(x) }
}
let f: Foo = 42.into();
",
);
assert!(result.is_ok(), "into custom should work");
}
#[test]
#[ignore = "Runtime limitation: try from not implemented - needs [RUNTIME-1028] ticket"]
fn test_sqlite_1175_try_from() {
let result = execute_program(
r"
use std::convert::TryFrom;
let x = i32::try_from(42u64);
",
);
assert!(result.is_ok(), "try from should work");
}
#[test]
#[ignore = "Runtime limitation: debug simple not implemented - needs [RUNTIME-1029] ticket"]
fn test_sqlite_1176_debug_simple() {
let result = execute_program(
r#"
let x = 42;
let s = format!("{:?}", x);
"#,
);
assert!(result.is_ok(), "debug simple should work");
}
#[test]
#[ignore = "Runtime limitation: display simple not implemented - needs [RUNTIME-1030] ticket"]
fn test_sqlite_1177_display_simple() {
let result = execute_program(
r#"
let x = 42;
let s = format!("{}", x);
"#,
);
assert!(result.is_ok(), "display simple should work");
}
#[test]
#[ignore = "Runtime limitation: debug custom not implemented - needs [RUNTIME-1031] ticket"]
fn test_sqlite_1178_debug_custom() {
let result = execute_program(
r#"
use std::fmt;
struct Foo;
impl fmt::Debug for Foo {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Foo")
}
}
let x = Foo;
let s = format!("{:?}", x);
"#,
);
assert!(result.is_ok(), "debug custom should work");
}
#[test]
#[ignore = "Runtime limitation: display custom not implemented - needs [RUNTIME-1032] ticket"]
fn test_sqlite_1179_display_custom() {
let result = execute_program(
r#"
use std::fmt;
struct Foo;
impl fmt::Display for Foo {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Foo")
}
}
let x = Foo;
let s = format!("{}", x);
"#,
);
assert!(result.is_ok(), "display custom should work");
}
#[test]
#[ignore = "Runtime limitation: debug derive not implemented - needs [RUNTIME-1033] ticket"]
fn test_sqlite_1180_debug_derive() {
let result = execute_program(
r#"
#[derive(Debug)]
struct Foo { x: i32 }
let f = Foo { x: 42 };
let s = format!("{:?}", f);
"#,
);
assert!(result.is_ok(), "debug derive should work");
}
#[test]
#[ignore = "Runtime limitation: add trait not implemented - needs [RUNTIME-1034] ticket"]
fn test_sqlite_1181_add_trait() {
let result = execute_program(
r"
use std::ops::Add;
struct Foo(i32);
impl Add for Foo {
type Output = Foo;
fn add(self, other: Foo) -> Foo { Foo(self.0 + other.0) }
}
let f1 = Foo(1);
let f2 = Foo(2);
let f3 = f1 + f2;
",
);
assert!(result.is_ok(), "add trait should work");
}
#[test]
#[ignore = "Runtime limitation: sub trait not implemented - needs [RUNTIME-1035] ticket"]
fn test_sqlite_1182_sub_trait() {
let result = execute_program(
r"
use std::ops::Sub;
struct Foo(i32);
impl Sub for Foo {
type Output = Foo;
fn sub(self, other: Foo) -> Foo { Foo(self.0 - other.0) }
}
let f1 = Foo(3);
let f2 = Foo(1);
let f3 = f1 - f2;
",
);
assert!(result.is_ok(), "sub trait should work");
}
#[test]
#[ignore = "Runtime limitation: mul trait not implemented - needs [RUNTIME-1036] ticket"]
fn test_sqlite_1183_mul_trait() {
let result = execute_program(
r"
use std::ops::Mul;
struct Foo(i32);
impl Mul for Foo {
type Output = Foo;
fn mul(self, other: Foo) -> Foo { Foo(self.0 * other.0) }
}
let f1 = Foo(2);
let f2 = Foo(3);
let f3 = f1 * f2;
",
);
assert!(result.is_ok(), "mul trait should work");
}
#[test]
#[ignore = "Runtime limitation: index trait not implemented - needs [RUNTIME-1037] ticket"]
fn test_sqlite_1184_index_trait() {
let result = execute_program(
r"
use std::ops::Index;
struct Foo(Vec<i32>);
impl Index<usize> for Foo {
type Output = i32;
fn index(&self, i: usize) -> &i32 { &self.0[i] }
}
let f = Foo(vec![1, 2, 3]);
let x = f[0];
",
);
assert!(result.is_ok(), "index trait should work");
}
#[test]
#[ignore = "Runtime limitation: neg trait not implemented - needs [RUNTIME-1038] ticket"]
fn test_sqlite_1185_neg_trait() {
let result = execute_program(
r"
use std::ops::Neg;
struct Foo(i32);
impl Neg for Foo {
type Output = Foo;
fn neg(self) -> Foo { Foo(-self.0) }
}
let f = Foo(42);
let f2 = -f;
",
);
assert!(result.is_ok(), "neg trait should work");
}
#[test]
#[ignore = "Runtime limitation: async fn basic not implemented - needs [RUNTIME-1039] ticket"]
fn test_sqlite_1186_async_fn_basic() {
let result = execute_program(
r"
async fn foo() -> i32 { 42 }
",
);
assert!(result.is_ok(), "async fn basic should work");
}
#[test]
#[ignore = "Runtime limitation: await basic not implemented - needs [RUNTIME-1040] ticket"]
fn test_sqlite_1187_await_basic() {
let result = execute_program(
r"
async fn foo() -> i32 { 42 }
async fn bar() -> i32 {
let x = foo().await;
x
}
",
);
assert!(result.is_ok(), "await basic should work");
}
#[test]
#[ignore = "Runtime limitation: async block basic not implemented - needs [RUNTIME-1041] ticket"]
fn test_sqlite_1188_async_block_basic() {
let result = execute_program(
r"
let f = async { 42 };
",
);
assert!(result.is_ok(), "async block basic should work");
}
#[test]
#[ignore = "Runtime limitation: async move capture not implemented - needs [RUNTIME-1042] ticket"]
fn test_sqlite_1189_async_move_capture() {
let result = execute_program(
r"
let x = 42;
let f = async move { x };
",
);
assert!(result.is_ok(), "async move capture should work");
}
#[test]
#[ignore = "Runtime limitation: future poll not implemented - needs [RUNTIME-1043] ticket"]
fn test_sqlite_1190_future_poll() {
let result = execute_program(
r"
use std::future::Future;
use std::task::{Context, Poll};
struct Foo;
impl Future for Foo {
type Output = i32;
fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<i32> {
Poll::Ready(42)
}
}
",
);
assert!(result.is_ok(), "future poll should work");
}
#[test]
#[ignore = "Runtime limitation: default simple not implemented - needs [RUNTIME-1044] ticket"]
fn test_sqlite_1191_default_simple() {
let result = execute_program(
r"
#[derive(Default)]
struct Foo { x: i32 }
let f = Foo::default();
",
);
assert!(result.is_ok(), "default simple should work");
}
#[test]
#[ignore = "Runtime limitation: default custom not implemented - needs [RUNTIME-1045] ticket"]
fn test_sqlite_1192_default_custom() {
let result = execute_program(
r"
struct Foo { x: i32 }
impl Default for Foo {
fn default() -> Foo { Foo { x: 42 } }
}
let f = Foo::default();
",
);
assert!(result.is_ok(), "default custom should work");
}
#[test]
#[ignore = "Runtime limitation: default generic not implemented - needs [RUNTIME-1046] ticket"]
fn test_sqlite_1193_default_generic() {
let result = execute_program(
r"
struct Foo<T> { x: T }
impl<T: Default> Default for Foo<T> {
fn default() -> Foo<T> { Foo { x: T::default() } }
}
let f = Foo::<i32>::default();
",
);
assert!(result.is_ok(), "default generic should work");
}
#[test]
#[ignore = "Runtime limitation: default vec not implemented - needs [RUNTIME-1047] ticket"]
fn test_sqlite_1194_default_vec() {
let result = execute_program(
r"
let v: Vec<i32> = Default::default();
",
);
assert!(result.is_ok(), "default vec should work");
}
#[test]
#[ignore = "Runtime limitation: default string not implemented - needs [RUNTIME-1048] ticket"]
fn test_sqlite_1195_default_string() {
let result = execute_program(
r"
let s: String = Default::default();
",
);
assert!(result.is_ok(), "default string should work");
}
#[test]
#[ignore = "Runtime limitation: partialeq simple not implemented - needs [RUNTIME-1049] ticket"]
fn test_sqlite_1196_partialeq_simple() {
let result = execute_program(
r"
let x = 42;
let y = 42;
let eq = x == y;
",
);
assert!(result.is_ok(), "partialeq simple should work");
}
#[test]
#[ignore = "Runtime limitation: partialeq custom not implemented - needs [RUNTIME-1050] ticket"]
fn test_sqlite_1197_partialeq_custom() {
let result = execute_program(
r"
struct Foo { x: i32 }
impl PartialEq for Foo {
fn eq(&self, other: &Foo) -> bool { self.x == other.x }
}
let f1 = Foo { x: 42 };
let f2 = Foo { x: 42 };
let eq = f1 == f2;
",
);
assert!(result.is_ok(), "partialeq custom should work");
}
#[test]
#[ignore = "Runtime limitation: eq trait not implemented - needs [RUNTIME-1051] ticket"]
fn test_sqlite_1198_eq_trait() {
let result = execute_program(
r"
#[derive(PartialEq, Eq)]
struct Foo { x: i32 }
let f1 = Foo { x: 42 };
let f2 = Foo { x: 42 };
let eq = f1 == f2;
",
);
assert!(result.is_ok(), "eq trait should work");
}
#[test]
#[ignore = "Runtime limitation: ne operator not implemented - needs [RUNTIME-1052] ticket"]
fn test_sqlite_1199_ne_operator() {
let result = execute_program(
r"
let x = 42;
let y = 43;
let ne = x != y;
",
);
assert!(result.is_ok(), "ne operator should work");
}
#[test]
#[ignore = "Runtime limitation: partialeq derive not implemented - needs [RUNTIME-1053] ticket"]
fn test_sqlite_1200_partialeq_derive() {
let result = execute_program(
r"
#[derive(PartialEq)]
struct Foo { x: i32, y: i32 }
let f1 = Foo { x: 1, y: 2 };
let f2 = Foo { x: 1, y: 2 };
let eq = f1 == f2;
",
);
assert!(result.is_ok(), "partialeq derive should work");
}
#[test]
#[ignore = "Runtime limitation: partialord simple not implemented - needs [RUNTIME-1054] ticket"]
fn test_sqlite_1201_partialord_simple() {
let result = execute_program(
r"
let x = 42;
let y = 43;
let lt = x < y;
",
);
assert!(result.is_ok(), "partialord simple should work");
}
#[test]
#[ignore = "Runtime limitation: partialord custom not implemented - needs [RUNTIME-1055] ticket"]
fn test_sqlite_1202_partialord_custom() {
let result = execute_program(
r"
use std::cmp::Ordering;
struct Foo { x: i32 }
impl PartialOrd for Foo {
fn partial_cmp(&self, other: &Foo) -> Option<Ordering> {
self.x.partial_cmp(&other.x)
}
}
let f1 = Foo { x: 42 };
let f2 = Foo { x: 43 };
let lt = f1 < f2;
",
);
assert!(result.is_ok(), "partialord custom should work");
}
#[test]
#[ignore = "Runtime limitation: ord trait not implemented - needs [RUNTIME-1056] ticket"]
fn test_sqlite_1203_ord_trait() {
let result = execute_program(
r"
use std::cmp::Ordering;
#[derive(PartialEq, Eq, PartialOrd, Ord)]
struct Foo { x: i32 }
let f1 = Foo { x: 42 };
let f2 = Foo { x: 43 };
let cmp = f1.cmp(&f2);
",
);
assert!(result.is_ok(), "ord trait should work");
}
#[test]
#[ignore = "Runtime limitation: comparison ops not implemented - needs [RUNTIME-1057] ticket"]
fn test_sqlite_1204_comparison_ops() {
let result = execute_program(
r"
let x = 42;
let y = 43;
let lt = x < y;
let le = x <= y;
let gt = x > y;
let ge = x >= y;
",
);
assert!(result.is_ok(), "comparison ops should work");
}
#[test]
#[ignore = "Runtime limitation: min max not implemented - needs [RUNTIME-1058] ticket"]
fn test_sqlite_1205_min_max() {
let result = execute_program(
r"
use std::cmp::{min, max};
let x = 42;
let y = 43;
let mn = min(x, y);
let mx = max(x, y);
",
);
assert!(result.is_ok(), "min max should work");
}
#[test]
#[ignore = "Runtime limitation: hash simple not implemented - needs [RUNTIME-1059] ticket"]
fn test_sqlite_1206_hash_simple() {
let result = execute_program(
r"
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
let x = 42;
let mut hasher = DefaultHasher::new();
x.hash(&mut hasher);
let hash = hasher.finish();
",
);
assert!(result.is_ok(), "hash simple should work");
}
#[test]
#[ignore = "Runtime limitation: hash custom not implemented - needs [RUNTIME-1060] ticket"]
fn test_sqlite_1207_hash_custom() {
let result = execute_program(
r"
use std::hash::{Hash, Hasher};
struct Foo { x: i32 }
impl Hash for Foo {
fn hash<H: Hasher>(&self, state: &mut H) {
self.x.hash(state);
}
}
",
);
assert!(result.is_ok(), "hash custom should work");
}
#[test]
#[ignore = "Runtime limitation: hash derive not implemented - needs [RUNTIME-1061] ticket"]
fn test_sqlite_1208_hash_derive() {
let result = execute_program(
r#"
use std::collections::HashMap;
#[derive(Hash, PartialEq, Eq)]
struct Foo { x: i32 }
let mut map = HashMap::new();
map.insert(Foo { x: 42 }, "value");
"#,
);
assert!(result.is_ok(), "hash derive should work");
}
#[test]
#[ignore = "Runtime limitation: hashmap insert not implemented - needs [RUNTIME-1062] ticket"]
fn test_sqlite_1209_hashmap_insert() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key", 42);
"#,
);
assert!(result.is_ok(), "hashmap insert should work");
}
#[test]
#[ignore = "Runtime limitation: hashmap get not implemented - needs [RUNTIME-1063] ticket"]
fn test_sqlite_1210_hashmap_get() {
let result = execute_program(
r#"
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("key", 42);
let value = map.get("key");
"#,
);
assert!(result.is_ok(), "hashmap get should work");
}
#[test]
#[ignore = "Runtime limitation: clone simple not implemented - needs [RUNTIME-1064] ticket"]
fn test_sqlite_1211_clone_simple() {
let result = execute_program(
r"
let x = 42;
let y = x.clone();
",
);
assert!(result.is_ok(), "clone simple should work");
}
#[test]
#[ignore = "Runtime limitation: clone custom not implemented - needs [RUNTIME-1065] ticket"]
fn test_sqlite_1212_clone_custom() {
let result = execute_program(
r"
struct Foo { x: i32 }
impl Clone for Foo {
fn clone(&self) -> Foo { Foo { x: self.x } }
}
let f1 = Foo { x: 42 };
let f2 = f1.clone();
",
);
assert!(result.is_ok(), "clone custom should work");
}
#[test]
#[ignore = "Runtime limitation: clone derive not implemented - needs [RUNTIME-1066] ticket"]
fn test_sqlite_1213_clone_derive() {
let result = execute_program(
r"
#[derive(Clone)]
struct Foo { x: i32 }
let f1 = Foo { x: 42 };
let f2 = f1.clone();
",
);
assert!(result.is_ok(), "clone derive should work");
}
#[test]
#[ignore = "Runtime limitation: clone vec not implemented - needs [RUNTIME-1067] ticket"]
fn test_sqlite_1214_clone_vec() {
let result = execute_program(
r"
let v1 = vec![1, 2, 3];
let v2 = v1.clone();
",
);
assert!(result.is_ok(), "clone vec should work");
}
#[test]
#[ignore = "Runtime limitation: clone string not implemented - needs [RUNTIME-1068] ticket"]
fn test_sqlite_1215_clone_string() {
let result = execute_program(
r#"
let s1 = String::from("hello");
let s2 = s1.clone();
"#,
);
assert!(result.is_ok(), "clone string should work");
}
#[test]
#[ignore = "Runtime limitation: copy simple not implemented - needs [RUNTIME-1069] ticket"]
fn test_sqlite_1216_copy_simple() {
let result = execute_program(
r"
let x: i32 = 42;
let y = x;
let z = x;
",
);
assert!(result.is_ok(), "copy simple should work");
}
#[test]
#[ignore = "Runtime limitation: copy custom not implemented - needs [RUNTIME-1070] ticket"]
fn test_sqlite_1217_copy_custom() {
let result = execute_program(
r"
#[derive(Copy, Clone)]
struct Foo { x: i32 }
let f1 = Foo { x: 42 };
let f2 = f1;
let f3 = f1;
",
);
assert!(result.is_ok(), "copy custom should work");
}
#[test]
#[ignore = "Runtime limitation: copy vs move not implemented - needs [RUNTIME-1071] ticket"]
fn test_sqlite_1218_copy_vs_move() {
let result = execute_program(
r#"
let x = 42;
let y = x;
let z = x;
let s = String::from("hello");
let s2 = s;
"#,
);
assert!(result.is_ok(), "copy vs move should work");
}
#[test]
#[ignore = "Runtime limitation: copy array not implemented - needs [RUNTIME-1072] ticket"]
fn test_sqlite_1219_copy_array() {
let result = execute_program(
r"
let a1 = [1, 2, 3];
let a2 = a1;
let a3 = a1;
",
);
assert!(result.is_ok(), "copy array should work");
}
#[test]
#[ignore = "Runtime limitation: copy tuple not implemented - needs [RUNTIME-1073] ticket"]
fn test_sqlite_1220_copy_tuple() {
let result = execute_program(
r"
let t1 = (1, 2);
let t2 = t1;
let t3 = t1;
",
);
assert!(result.is_ok(), "copy tuple should work");
}
#[test]
#[ignore = "Runtime limitation: send simple not implemented - needs [RUNTIME-1074] ticket"]
fn test_sqlite_1221_send_simple() {
let result = execute_program(
r"
fn is_send<T: Send>() { }
is_send::<i32>();
",
);
assert!(result.is_ok(), "send simple should work");
}
#[test]
#[ignore = "Runtime limitation: sync simple not implemented - needs [RUNTIME-1075] ticket"]
fn test_sqlite_1222_sync_simple() {
let result = execute_program(
r"
fn is_sync<T: Sync>() { }
is_sync::<i32>();
",
);
assert!(result.is_ok(), "sync simple should work");
}
#[test]
#[ignore = "Runtime limitation: send custom not implemented - needs [RUNTIME-1076] ticket"]
fn test_sqlite_1223_send_custom() {
let result = execute_program(
r"
struct Foo;
unsafe impl Send for Foo { }
",
);
assert!(result.is_ok(), "send custom should work");
}
#[test]
#[ignore = "Runtime limitation: sync custom not implemented - needs [RUNTIME-1077] ticket"]
fn test_sqlite_1224_sync_custom() {
let result = execute_program(
r"
struct Foo;
unsafe impl Sync for Foo { }
",
);
assert!(result.is_ok(), "sync custom should work");
}
#[test]
#[ignore = "Runtime limitation: send sync bound not implemented - needs [RUNTIME-1078] ticket"]
fn test_sqlite_1225_send_sync_bound() {
let result = execute_program(
r"
fn foo<T: Send + Sync>(x: T) { }
foo(42);
",
);
assert!(result.is_ok(), "send sync bound should work");
}
#[test]
#[ignore = "Runtime limitation: sized implicit not implemented - needs [RUNTIME-1079] ticket"]
fn test_sqlite_1226_sized_implicit() {
let result = execute_program(
r"
fn foo<T>(x: T) { }
foo(42);
",
);
assert!(result.is_ok(), "sized implicit should work");
}
#[test]
#[ignore = "Runtime limitation: unsized trait object not implemented - needs [RUNTIME-1080] ticket"]
fn test_sqlite_1227_unsized_trait_object() {
let result = execute_program(
r"
trait Foo { }
fn bar(x: &dyn Foo) { }
",
);
assert!(result.is_ok(), "unsized trait object should work");
}
#[test]
#[ignore = "Runtime limitation: unsized slice not implemented - needs [RUNTIME-1081] ticket"]
fn test_sqlite_1228_unsized_slice() {
let result = execute_program(
r"
fn foo(x: &[i32]) { }
let v = vec![1, 2, 3];
foo(&v);
",
);
assert!(result.is_ok(), "unsized slice should work");
}
#[test]
#[ignore = "Runtime limitation: unsized str not implemented - needs [RUNTIME-1082] ticket"]
fn test_sqlite_1229_unsized_str() {
let result = execute_program(
r#"
fn foo(x: &str) { }
foo("hello");
"#,
);
assert!(result.is_ok(), "unsized str should work");
}
#[test]
#[ignore = "Runtime limitation: sized bound explicit not implemented - needs [RUNTIME-1083] ticket"]
fn test_sqlite_1230_sized_bound_explicit() {
let result = execute_program(
r"
fn foo<T: Sized>(x: T) { }
foo(42);
",
);
assert!(result.is_ok(), "sized bound explicit should work");
}
#[test]
#[ignore = "Runtime limitation: asref simple not implemented - needs [RUNTIME-1084] ticket"]
fn test_sqlite_1231_asref_simple() {
let result = execute_program(
r#"
fn foo<T: AsRef<str>>(x: T) { }
foo("hello");
"#,
);
assert!(result.is_ok(), "asref simple should work");
}
#[test]
#[ignore = "Runtime limitation: asref string not implemented - needs [RUNTIME-1085] ticket"]
fn test_sqlite_1232_asref_string() {
let result = execute_program(
r#"
let s = String::from("hello");
let slice: &str = s.as_ref();
"#,
);
assert!(result.is_ok(), "asref string should work");
}
#[test]
#[ignore = "Runtime limitation: asref vec not implemented - needs [RUNTIME-1086] ticket"]
fn test_sqlite_1233_asref_vec() {
let result = execute_program(
r"
let v = vec![1, 2, 3];
let slice: &[i32] = v.as_ref();
",
);
assert!(result.is_ok(), "asref vec should work");
}
#[test]
#[ignore = "Runtime limitation: asmut simple not implemented - needs [RUNTIME-1087] ticket"]
fn test_sqlite_1234_asmut_simple() {
let result = execute_program(
r"
fn foo<T: AsMut<[i32]>>(mut x: T) { }
let mut v = vec![1, 2, 3];
foo(v);
",
);
assert!(result.is_ok(), "asmut simple should work");
}
#[test]
#[ignore = "Runtime limitation: asmut vec not implemented - needs [RUNTIME-1088] ticket"]
fn test_sqlite_1235_asmut_vec() {
let result = execute_program(
r"
let mut v = vec![1, 2, 3];
let slice: &mut [i32] = v.as_mut();
",
);
assert!(result.is_ok(), "asmut vec should work");
}
#[test]
#[ignore = "Runtime limitation: borrow simple not implemented - needs [RUNTIME-1089] ticket"]
fn test_sqlite_1236_borrow_simple() {
let result = execute_program(
r#"
use std::borrow::Borrow;
fn foo<T: Borrow<str>>(x: T) { }
foo("hello");
"#,
);
assert!(result.is_ok(), "borrow simple should work");
}
#[test]
#[ignore = "Runtime limitation: borrow string not implemented - needs [RUNTIME-1090] ticket"]
fn test_sqlite_1237_borrow_string() {
let result = execute_program(
r#"
use std::borrow::Borrow;
let s = String::from("hello");
let borrowed: &str = s.borrow();
"#,
);
assert!(result.is_ok(), "borrow string should work");
}
#[test]
#[ignore = "Runtime limitation: borrowmut simple not implemented - needs [RUNTIME-1091] ticket"]
fn test_sqlite_1238_borrowmut_simple() {
let result = execute_program(
r"
use std::borrow::BorrowMut;
fn foo<T: BorrowMut<[i32]>>(mut x: T) { }
let mut v = vec![1, 2, 3];
foo(v);
",
);
assert!(result.is_ok(), "borrowmut simple should work");
}
#[test]
#[ignore = "Runtime limitation: cow simple not implemented - needs [RUNTIME-1092] ticket"]
fn test_sqlite_1239_cow_simple() {
let result = execute_program(
r#"
use std::borrow::Cow;
let cow: Cow<str> = Cow::Borrowed("hello");
"#,
);
assert!(result.is_ok(), "cow simple should work");
}
#[test]
#[ignore = "Runtime limitation: cow owned not implemented - needs [RUNTIME-1093] ticket"]
fn test_sqlite_1240_cow_owned() {
let result = execute_program(
r#"
use std::borrow::Cow;
let cow: Cow<str> = Cow::Owned(String::from("hello"));
"#,
);
assert!(result.is_ok(), "cow owned should work");
}