cl-ast: Allow c-like enums to take an expr

This commit is contained in:
2025-05-05 02:22:50 -04:00
parent fc80be5fcc
commit d6c0a6cf1b
4 changed files with 7 additions and 10 deletions

View File

@@ -159,7 +159,10 @@ impl Interpret for Enum {
for (idx, Variant { name, kind }) in variants.iter().enumerate() {
match kind {
VariantKind::Plain => env.insert(*name, Some(ConValue::Int(idx as _))),
VariantKind::CLike(idx) => env.insert(*name, Some(ConValue::Int(*idx as _))),
VariantKind::CLike(idx) => {
let idx = idx.interpret(env)?;
env.insert(*name, Some(idx))
}
VariantKind::Tuple(ty) => eprintln!("TODO: Enum-tuple variants: {ty}"),
VariantKind::Struct(_) => eprintln!("TODO: Enum-struct members: {kind}"),
}