all: remove intermediate handling for both global definition syntaxes (#6546)
parent
7e13518cc2
commit
c324169af0
|
@ -3,8 +3,10 @@
|
||||||
// that can be found in the LICENSE file.
|
// that can be found in the LICENSE file.
|
||||||
module builtin
|
module builtin
|
||||||
|
|
||||||
__global g_m2_buf byteptr
|
__global (
|
||||||
__global g_m2_ptr byteptr
|
g_m2_buf byteptr
|
||||||
|
g_m2_ptr byteptr
|
||||||
|
)
|
||||||
|
|
||||||
type FnExitCb = fn()
|
type FnExitCb = fn()
|
||||||
fn C.atexit(f FnExitCb) int
|
fn C.atexit(f FnExitCb) int
|
||||||
|
@ -125,10 +127,10 @@ pub fn println(s string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
__global total_m i64=0
|
__global (
|
||||||
__global nr_mallocs int=0
|
total_m = i64(0)
|
||||||
|
nr_mallocs = int(0)
|
||||||
fn looo(){} // TODO remove, [ pratt
|
)
|
||||||
|
|
||||||
[unsafe]
|
[unsafe]
|
||||||
pub fn malloc(n int) byteptr {
|
pub fn malloc(n int) byteptr {
|
||||||
|
|
|
@ -60,7 +60,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
// g_original_codepage - used to restore the original windows console code page when exiting
|
// g_original_codepage - used to restore the original windows console code page when exiting
|
||||||
__global g_original_codepage u32=0
|
__global ( g_original_codepage = u32(0) )
|
||||||
// utf8 to stdout needs C.SetConsoleOutputCP(C.CP_UTF8)
|
// utf8 to stdout needs C.SetConsoleOutputCP(C.CP_UTF8)
|
||||||
fn C.GetConsoleOutputCP() u32
|
fn C.GetConsoleOutputCP() u32
|
||||||
fn C.SetConsoleOutputCP(wCodePageID u32) bool
|
fn C.SetConsoleOutputCP(wCodePageID u32) bool
|
||||||
|
|
|
@ -1070,7 +1070,7 @@ pub fn (s string) ustring() ustring {
|
||||||
// A hack that allows to create ustring without allocations.
|
// A hack that allows to create ustring without allocations.
|
||||||
// It's called from functions like draw_text() where we know that the string is going to be freed
|
// It's called from functions like draw_text() where we know that the string is going to be freed
|
||||||
// right away. Uses global buffer for storing runes []int array.
|
// right away. Uses global buffer for storing runes []int array.
|
||||||
__global g_ustring_runes []int
|
__global ( g_ustring_runes []int )
|
||||||
|
|
||||||
pub fn (s string) ustring_tmp() ustring {
|
pub fn (s string) ustring_tmp() ustring {
|
||||||
if g_ustring_runes.len == 0 {
|
if g_ustring_runes.len == 0 {
|
||||||
|
|
|
@ -12,7 +12,7 @@ pub struct PRNGConfigStruct {
|
||||||
seed []u32 = util.time_seed_array(2)
|
seed []u32 = util.time_seed_array(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
__global default_rng &wyrand.WyRandRNG
|
__global ( default_rng &wyrand.WyRandRNG )
|
||||||
fn init() {
|
fn init() {
|
||||||
default_rng = new_default({})
|
default_rng = new_default({})
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
module sapp
|
module sapp
|
||||||
|
|
||||||
// Android needs a global reference to `g_desc`
|
// Android needs a global reference to `g_desc`
|
||||||
__global g_desc C.sapp_desc
|
__global ( g_desc C.sapp_desc )
|
||||||
|
|
||||||
pub fn create_desc() C.sg_desc {
|
pub fn create_desc() C.sg_desc {
|
||||||
mtl_desc := C.sg_mtl_context_desc {
|
mtl_desc := C.sg_mtl_context_desc {
|
||||||
|
|
|
@ -1679,33 +1679,7 @@ fn (mut p Parser) global_decl() ast.GlobalDecl {
|
||||||
end_pos := p.tok.position()
|
end_pos := p.tok.position()
|
||||||
p.check(.key_global)
|
p.check(.key_global)
|
||||||
if p.tok.kind != .lpar {
|
if p.tok.kind != .lpar {
|
||||||
// Need to work for intermediate V Compiler for PRs process
|
p.error('globals must be grouped, e.g. `__global ( a = int(1) )`')
|
||||||
// p.error('globals must be grouped, e.g. `__global ( a = int(1) )`')
|
|
||||||
pos := p.tok.position()
|
|
||||||
name := p.check_name()
|
|
||||||
typ := p.parse_type()
|
|
||||||
mut expr := ast.Expr{}
|
|
||||||
has_expr := p.tok.kind == .assign
|
|
||||||
if has_expr {
|
|
||||||
p.next()
|
|
||||||
expr = p.expr(0)
|
|
||||||
}
|
|
||||||
mut fields := []ast.GlobalField{}
|
|
||||||
field := ast.GlobalField{
|
|
||||||
name: name
|
|
||||||
has_expr: has_expr
|
|
||||||
expr: expr
|
|
||||||
pos: pos
|
|
||||||
typ: typ
|
|
||||||
comments: []ast.Comment{}
|
|
||||||
}
|
|
||||||
fields << field
|
|
||||||
p.global_scope.register(field.name, field)
|
|
||||||
return ast.GlobalDecl{
|
|
||||||
fields: fields
|
|
||||||
pos: start_pos.extend(end_pos)
|
|
||||||
end_comments: []ast.Comment{}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
p.next() // (
|
p.next() // (
|
||||||
mut fields := []ast.GlobalField{}
|
mut fields := []ast.GlobalField{}
|
||||||
|
@ -1722,6 +1696,9 @@ fn (mut p Parser) global_decl() ast.GlobalDecl {
|
||||||
p.next() // =
|
p.next() // =
|
||||||
}
|
}
|
||||||
typ := p.parse_type()
|
typ := p.parse_type()
|
||||||
|
if p.tok.kind == .assign {
|
||||||
|
p.error('global assign must have the type around the value, use `__global ( name = type(value) )`')
|
||||||
|
}
|
||||||
mut expr := ast.Expr{}
|
mut expr := ast.Expr{}
|
||||||
if has_expr {
|
if has_expr {
|
||||||
if p.tok.kind != .lpar {
|
if p.tok.kind != .lpar {
|
||||||
|
|
Loading…
Reference in New Issue