@@ -3328,14 +3328,14 @@ fn (mut g Gen) gen_clone_assignment(var_type ast.Type, val ast.Expr, typ ast.Typ
3328
3328
return true
3329
3329
}
3330
3330
3331
- fn (mut g Gen) map_fn_ptrs (key_typ ast.TypeSymbol) (string , string , string , string ) {
3331
+ fn (mut g Gen) map_fn_ptrs (key_sym ast.TypeSymbol) (string , string , string , string ) {
3332
3332
mut hash_fn := ''
3333
3333
mut key_eq_fn := ''
3334
3334
mut clone_fn := ''
3335
3335
mut free_fn := '&map_free_nop'
3336
- match key_typ .kind {
3336
+ match key_sym .kind {
3337
3337
.alias {
3338
- alias_key_type := (key_typ .info as ast.Alias ).parent_type
3338
+ alias_key_type := (key_sym .info as ast.Alias ).parent_type
3339
3339
return g.map_fn_ptrs (g.table.sym (alias_key_type))
3340
3340
}
3341
3341
.u8 , .i8 , .char {
@@ -3348,8 +3348,11 @@ fn (mut g Gen) map_fn_ptrs(key_typ ast.TypeSymbol) (string, string, string, stri
3348
3348
key_eq_fn = '&map_eq_int_2'
3349
3349
clone_fn = '&map_clone_int_2'
3350
3350
}
3351
- .int, .i32 , .u32 , .rune, .f32 , .enum {
3352
- // XTODO i64
3351
+ .enum {
3352
+ einfo := (key_sym.info) as ast.Enum
3353
+ return g.map_fn_ptrs (g.table.sym (einfo.typ))
3354
+ }
3355
+ .int, .i32 , .u32 , .rune, .f32 {
3353
3356
hash_fn = '&map_hash_int_4'
3354
3357
key_eq_fn = '&map_eq_int_4'
3355
3358
clone_fn = '&map_clone_int_4'
@@ -3374,7 +3377,7 @@ fn (mut g Gen) map_fn_ptrs(key_typ ast.TypeSymbol) (string, string, string, stri
3374
3377
free_fn = '&map_free_string'
3375
3378
}
3376
3379
else {
3377
- verror ('map key type `${key_typ .name} ` not supported' )
3380
+ verror ('map key type `${key_sym .name} ` not supported' )
3378
3381
}
3379
3382
}
3380
3383
return hash_fn, key_eq_fn, clone_fn, free_fn
0 commit comments