v.ast: fix type_size for hardcode map and array (preparing for new_int) (#25350)

This commit is contained in:
kbkpbot 2025-09-19 19:37:13 +08:00 committed by GitHub
parent 1361002adc
commit 7b07f27774
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 2 deletions

View File

@ -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')
}

View File

@ -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
}
}