mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
ci: fix failing ./v vlib/builtin/builtin_test.v
(globals initialisation)
This commit is contained in:
parent
ed43bfc469
commit
dc1b54c669
@ -151,9 +151,11 @@ fn (mut g Gen) final_gen_str(typ StrType) {
|
||||
g.gen_str_for_thread(sym.info, styp, str_fn_name)
|
||||
}
|
||||
else {
|
||||
if sym.name != 'nil' {
|
||||
verror('could not generate string method `$str_fn_name` for type `$styp`')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn (mut g Gen) gen_str_for_option(typ ast.Type, styp string, str_fn_name string) {
|
||||
|
@ -4709,10 +4709,21 @@ fn (mut g Gen) global_decl(node ast.GlobalDecl) {
|
||||
continue
|
||||
}
|
||||
if field.has_expr || cinit {
|
||||
// `__global x = unsafe { nil }` should still use the simple direct initialisation, `g_main_argv` needs it.
|
||||
mut is_simple_unsafe_expr := false
|
||||
if field.expr is ast.UnsafeExpr {
|
||||
if field.expr.expr is ast.Nil {
|
||||
is_simple_unsafe_expr = true
|
||||
}
|
||||
if field.expr.expr.is_literal() {
|
||||
is_simple_unsafe_expr = true
|
||||
}
|
||||
}
|
||||
if g.pref.translated {
|
||||
def_builder.write_string(' = ${g.expr_string(field.expr)}')
|
||||
} else if (field.expr.is_literal() && should_init) || cinit
|
||||
|| (field.expr is ast.ArrayInit && (field.expr as ast.ArrayInit).is_fixed) {
|
||||
|| (field.expr is ast.ArrayInit && (field.expr as ast.ArrayInit).is_fixed)
|
||||
|| is_simple_unsafe_expr {
|
||||
// Simple literals can be initialized right away in global scope in C.
|
||||
// e.g. `int myglobal = 10;`
|
||||
def_builder.write_string(' = ${g.expr_string(field.expr)}')
|
||||
|
Loading…
Reference in New Issue
Block a user