From 4e9e823246909f213635e62e94f9db8e86a46e81 Mon Sep 17 00:00:00 2001 From: Brandon Lucas Date: Thu, 19 Feb 2026 00:01:20 -0500 Subject: [PATCH] fix: record spread works with named type aliases Resolve type aliases (e.g. Player -> { pos: Vec2, speed: Float }) before checking if spread expression is a record type. Previously { ...p, field: val } failed with "must be a record type, got Player" when the variable had a named type annotation. Co-Authored-By: Claude Opus 4.6 --- src/typechecker.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/typechecker.rs b/src/typechecker.rs index 21ff54a..776459d 100644 --- a/src/typechecker.rs +++ b/src/typechecker.rs @@ -2569,6 +2569,7 @@ impl TypeChecker { // Start with spread fields if present let mut field_types: Vec<(String, Type)> = if let Some(spread_expr) = spread { let spread_type = self.infer_expr(spread_expr); + let spread_type = self.env.expand_type_alias(&spread_type); match spread_type { Type::Record(spread_fields) => spread_fields, _ => {