mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
cgen: global/const fixes
This commit is contained in:
parent
ea4410cdb5
commit
0248349e7c
@ -4371,17 +4371,23 @@ fn (mut g Gen) global_decl(node ast.GlobalDecl) {
|
||||
if field.has_expr && mut anon_fn_expr is ast.AnonFn {
|
||||
g.gen_anon_fn_decl(mut anon_fn_expr)
|
||||
fn_type_name := g.get_anon_fn_type_name(mut anon_fn_expr, field.name)
|
||||
g.definitions.writeln('$fn_type_name = ${g.table.sym(field.typ).name}; // global')
|
||||
g.definitions.writeln('$fn_type_name = ${g.table.sym(field.typ).name}; // global2')
|
||||
continue
|
||||
}
|
||||
g.definitions.write_string('$visibility_kw$styp $attributes $field.name')
|
||||
if field.has_expr {
|
||||
if field.expr.is_literal() && should_init {
|
||||
if g.pref.translated {
|
||||
g.definitions.write_string(' = ${g.expr_string(field.expr)}')
|
||||
} else if field.expr.is_literal() && should_init {
|
||||
// Simple literals can be initialized right away in global scope in C.
|
||||
// e.g. `int myglobal = 10;`
|
||||
g.definitions.write_string(' = ${g.expr_string(field.expr)}')
|
||||
} else {
|
||||
g.global_init.writeln('\t$field.name = ${g.expr_string(field.expr)}; // global')
|
||||
// More complex expressions need to be moved to `_vinit()`
|
||||
// e.g. `__global ( mygblobal = 'hello ' + world' )`
|
||||
g.global_init.writeln('\t$field.name = ${g.expr_string(field.expr)}; // 3global')
|
||||
}
|
||||
} else {
|
||||
} else if !g.pref.translated { // don't zero globals from C code
|
||||
default_initializer := g.type_default(field.typ)
|
||||
if default_initializer == '{0}' && should_init {
|
||||
g.definitions.write_string(' = {0}')
|
||||
@ -4391,7 +4397,7 @@ fn (mut g Gen) global_decl(node ast.GlobalDecl) {
|
||||
}
|
||||
}
|
||||
}
|
||||
g.definitions.writeln('; // global')
|
||||
g.definitions.writeln('; // global4')
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -39,7 +39,7 @@ const (
|
||||
const builtin_module_names = ['builtin', 'strconv', 'strings', 'dlmalloc']
|
||||
|
||||
pub fn module_is_builtin(mod string) bool {
|
||||
return mod in util.builtin_module_names
|
||||
return mod in util.builtin_module_parts
|
||||
}
|
||||
|
||||
pub fn tabs(n int) string {
|
||||
|
Loading…
Reference in New Issue
Block a user