stage1 修复bug

This commit is contained in:
zzy
2026-07-13 21:50:28 +08:00
parent b67edc5cee
commit f7f71c5f52
5 changed files with 75 additions and 44 deletions

View File

@@ -91,8 +91,10 @@ const char *spl_type_str(spl_type_info_t *t);
int spl_type_is_integer(spl_type_t bt);
spl_type_info_t *spl_type_clone(spl_type_info_t *t);
/* Determine the uniform type for LOAD/STORE codegen (i32→SPL_I32, ptr→SPL_PTR, else→SPL_PTR) */
/* Determine the uniform type for LOAD/STORE codegen */
spl_type_t spl_type_emit_type(spl_type_info_t *type);
/* Returns 1 if type is scalar (fits in one slot, auto-loadable, comparable with ==/!=) */
int spl_type_is_scalar(spl_type_info_t *type);
/* Emit LOAD from [saved_ptr + byte_offset] and STORE to local var at var_offset.
* Stack: [] → []
@@ -259,7 +261,7 @@ spl_expr_result_t spl_parse_struct_literal(spl_comp_t *ctx, spl_type_info_t *typ
* For enum: parses .VariantName, emits tag comparison, returns variant.
* For value: parses expression, emits equality comparison. */
spl_enum_variant_t *spl_emit_match_enum_cmp(spl_comp_t *ctx, spl_type_info_t *enum_type,
int val_offset);
int val_offset, int by_value);
void spl_emit_match_value_cmp(spl_comp_t *ctx, int val_offset);
/* ============================================================