jsgen: fix maps being always constructed using string keys (fix #24607) (fix #24671) (#24673)

This commit is contained in:
Gonzalo Chumillas 2025-06-09 09:22:24 +01:00 committed by GitHub
parent e8fe334396
commit 2604fc186f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 129 additions and 18 deletions

View file

@ -10,7 +10,7 @@ fn (mut m map) internal_set(key JS.Any, val JS.Any) {
//$if es5 {
#if (key.hasOwnProperty('$toJS')) key = key.$toJS();
#if (!(key in m.val.map)) m.val.length++;
#m.val.map[key] = val
#m.val.map[key].val = val
/*} $else {
# if (key.hasOwnProperty('$toJS')) key = key.$toJS();
# m.val.m.set(key,val);
@ -23,7 +23,7 @@ fn (mut m map) internal_get(key JS.Any) JS.Any {
mut val := JS.Any(unsafe { nil })
//$if es5 {
#if (typeof key != "string" && key.hasOwnProperty('$toJS')) key = key.$toJS();
#val = m.val.map[key]
#val = m.val.map[key].val
/*} $else {
# if (key.hasOwnProperty('$toJS')) key = key.$toJS();
# val = m.val.m.get(key)
@ -49,14 +49,14 @@ pub fn (m &map) free() {}
pub fn (m map) keys() array {
ret := JS.makeEmptyArray()
#for (var key in m.map) array_push(ret,new string(`${key}`),false);
#for (var key in m.map) array_push(ret,m.map[key].key,false)
return ret
}
pub fn (m map) values() array {
ret := JS.makeEmptyArray()
#for (var key in m.map) array_push(ret,m.map[key],false);
#for (var key in m.map) array_push(ret,m.map[key].val,false);
return ret
}