From 7b07f277748881d7e1d08105c1d97e5881474e56 Mon Sep 17 00:00:00 2001 From: kbkpbot Date: Fri, 19 Sep 2025 19:37:13 +0800 Subject: [PATCH] v.ast: fix type_size for hardcode map and array (preparing for new_int) (#25350) --- vlib/v/ast/type_size_test.v | 3 +++ vlib/v/ast/types.v | 12 ++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/vlib/v/ast/type_size_test.v b/vlib/v/ast/type_size_test.v index 63e33c8ad..250a9d858 100644 --- a/vlib/v/ast/type_size_test.v +++ b/vlib/v/ast/type_size_test.v @@ -12,6 +12,7 @@ type T02 = string type T03 = int | string type T04 = []T03 type T05 = [47]T03 +type T09 = map[string]string interface T06 { a int @@ -57,6 +58,8 @@ fn test_type_size() { assert sizeof(T07) == size07 size08, _ := t.type_size(t.type_idxs['main.T08']!) assert sizeof(T08) == size08 + size09, _ := t.type_size(t.type_idxs['main.T09']!) + assert sizeof(T09) == size09 println('done') } diff --git a/vlib/v/ast/types.v b/vlib/v/ast/types.v index ea1c2ce23..4e3e270ca 100644 --- a/vlib/v/ast/types.v +++ b/vlib/v/ast/types.v @@ -1320,11 +1320,19 @@ pub fn (t &Table) type_size(typ Type) (int, int) { } // TODO: hardcoded: .map { - size = if t.pointer_size == 8 { 120 } else { 80 } + size = if t.pointer_size == 8 { + $if new_int ? && x64 { 144 } $else { 120 } + } else { + 80 + } align = t.pointer_size } .array { - size = if t.pointer_size == 8 { 32 } else { 24 } + size = if t.pointer_size == 8 { + $if new_int ? && x64 { 48 } $else { 32 } + } else { + 24 + } align = t.pointer_size } } -- 2.39.5