2025-09-19 22:27:59 +09:00
|
|
|
use nyash_rust::parser::NyashParser;
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn macro_derive_injects_equals_and_tostring() {
|
|
|
|
|
// Enable macro engine and default derives
|
|
|
|
|
std::env::set_var("NYASH_MACRO_ENABLE", "1");
|
|
|
|
|
std::env::set_var("NYASH_MACRO_TRACE", "0");
|
|
|
|
|
std::env::remove_var("NYASH_MACRO_DERIVE");
|
|
|
|
|
|
|
|
|
|
let code = r#"
|
|
|
|
|
box UserBox {
|
|
|
|
|
name: StringBox
|
|
|
|
|
age: IntegerBox
|
|
|
|
|
}
|
|
|
|
|
"#;
|
|
|
|
|
let ast = NyashParser::parse_from_string(code).expect("parse ok");
|
|
|
|
|
let ast2 = crate::r#macro::maybe_expand_and_dump(&ast, false);
|
|
|
|
|
|
|
|
|
|
// Find UserBox and check methods
|
|
|
|
|
let mut found = false;
|
|
|
|
|
if let nyash_rust::ASTNode::Program { statements, .. } = ast2 {
|
|
|
|
|
for st in statements {
|
|
|
|
|
if let nyash_rust::ASTNode::BoxDeclaration { name, methods, .. } = st {
|
|
|
|
|
if name == "UserBox" {
|
refactor(tests): Reorganize test files into module directories
- Split join_ir_vm_bridge_dispatch.rs into module directory
- Reorganize test files into categorical directories:
- exec_parity/, flow/, if_no_phi/, joinir/, macro_tests/
- mir/, parser/, sugar/, vm/, vtable/
- Fix compilation errors after refactoring:
- BinaryOperator::LessThan → Less, Mod → Modulo
- Add VM re-export in backend::vm module
- Fix BinaryOp import to use public API
- Add callee: None for MirInstruction::Call
- Fix VMValue type mismatch with proper downcast
- Resolve borrow checker issues in vtable tests
- Mark 2 tests using internal APIs as #[ignore]
JoinIR tests: 50 passed, 0 failed, 20 ignored
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 18:28:20 +09:00
|
|
|
assert!(
|
|
|
|
|
methods.contains_key("equals"),
|
|
|
|
|
"equals method should be generated"
|
|
|
|
|
);
|
|
|
|
|
assert!(
|
|
|
|
|
methods.contains_key("toString"),
|
|
|
|
|
"toString method should be generated"
|
|
|
|
|
);
|
2025-09-19 22:27:59 +09:00
|
|
|
found = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
assert!(found, "UserBox declaration not found after expansion");
|
|
|
|
|
}
|