1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

cgen: remove 'mut mut_table := unsafe { &ast.Table(g.table) }' (#18742)

This commit is contained in:
yuyi 2023-07-03 04:54:44 +08:00 committed by GitHub
parent fd6983fcb4
commit ad1d5e7adb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 11 deletions

View File

@ -49,7 +49,6 @@ pub struct Gen {
enum_data_type ast.Type // cache her to avoid map lookups
module_built string
timers_should_print bool
table &ast.Table = unsafe { nil }
mut:
out strings.Builder
cheaders strings.Builder
@ -81,7 +80,8 @@ mut:
sql_buf strings.Builder // for writing exprs to args via `sqlite3_bind_int()` etc
global_const_defs map[string]GlobalConstDef
sorted_global_const_names []string
file &ast.File = unsafe { nil }
file &ast.File = unsafe { nil }
table &ast.Table = unsafe { nil }
unique_file_path_hash u64 // a hash of file.path, used for making auxilary fn generation unique (like `compare_xyz`)
fn_decl &ast.FnDecl = unsafe { nil } // pointer to the FnDecl we are currently inside otherwise 0
last_fn_c_name string

View File

@ -184,7 +184,6 @@ fn (mut g Gen) struct_init(node ast.StructInit) {
continue
}
if sfield.expected_type.has_flag(.generic) && g.cur_fn != unsafe { nil } {
mut mut_table := unsafe { &ast.Table(g.table) }
mut t_generic_names := g.table.cur_fn.generic_names.clone()
mut t_concrete_types := g.cur_concrete_types.clone()
ts := g.table.sym(node.typ)
@ -202,15 +201,15 @@ fn (mut g Gen) struct_init(node ast.StructInit) {
t_concrete_types << g.cur_concrete_types[index]
}
} else {
if tt := mut_table.resolve_generic_to_concrete(t_typ,
g.table.cur_fn.generic_names, g.cur_concrete_types)
if tt := g.table.resolve_generic_to_concrete(t_typ, g.table.cur_fn.generic_names,
g.cur_concrete_types)
{
t_concrete_types << tt
}
}
}
}
if tt := mut_table.resolve_generic_to_concrete(sfield.expected_type,
if tt := g.table.resolve_generic_to_concrete(sfield.expected_type,
t_generic_names, t_concrete_types)
{
sfield.expected_type = tt

View File

@ -15,9 +15,8 @@ fn (mut g Gen) unwrap_generic(typ ast.Type) ast.Type {
// This should have already happened in the checker, since it also calls
// `resolve_generic_to_concrete`. `g.table` is made non-mut to make sure
// no one else can accidentally mutates the table.
mut mut_table := unsafe { &ast.Table(g.table) }
if g.cur_fn != unsafe { nil } && g.cur_fn.generic_names.len > 0 {
if t_typ := mut_table.resolve_generic_to_concrete(typ, g.cur_fn.generic_names,
if t_typ := g.table.resolve_generic_to_concrete(typ, g.cur_fn.generic_names,
g.cur_concrete_types)
{
return t_typ
@ -28,7 +27,7 @@ fn (mut g Gen) unwrap_generic(typ ast.Type) ast.Type {
if sym.info is ast.Struct {
if sym.info.generic_types.len > 0 {
generic_names := sym.info.generic_types.map(g.table.sym(it).name)
if t_typ := mut_table.resolve_generic_to_concrete(typ, generic_names,
if t_typ := g.table.resolve_generic_to_concrete(typ, generic_names,
sym.info.concrete_types)
{
return t_typ
@ -42,13 +41,13 @@ fn (mut g Gen) unwrap_generic(typ ast.Type) ast.Type {
if sym.info is ast.Struct {
if sym.info.generic_types.len > 0 {
generic_names := sym.info.generic_types.map(g.table.sym(it).name)
if t_typ := mut_table.resolve_generic_to_concrete(typ, generic_names,
if t_typ := g.table.resolve_generic_to_concrete(typ, generic_names,
sym.info.concrete_types)
{
return t_typ
}
if t_typ := mut_table.resolve_generic_to_concrete(typ, generic_names,
if t_typ := g.table.resolve_generic_to_concrete(typ, generic_names,
g.cur_concrete_types)
{
return t_typ