compiler: fix #3973 by dealing with name mangling problem
							parent
							
								
									d54843275f
								
							
						
					
					
						commit
						d8bcd13e86
					
				|  | @ -28,13 +28,13 @@ fn main() { | |||
| 
 | ||||
| fn init(user_data voidptr) { | ||||
| 	desc := sg_desc{ | ||||
| 		mtl_device: C.sapp_metal_get_device() | ||||
| 		mtl_renderpass_descriptor_cb: sapp_metal_get_renderpass_descriptor | ||||
| 		mtl_drawable_cb: sapp_metal_get_drawable | ||||
| 		d3d11_device: sapp_d3d11_get_device() | ||||
| 		d3d11_device_context: sapp_d3d11_get_device_context() | ||||
| 		d3d11_render_target_view_cb: sapp_d3d11_get_render_target_view | ||||
| 		d3d11_depth_stencil_view_cb: sapp_d3d11_get_depth_stencil_view | ||||
| 		mtl_device: sapp.metal_get_device() | ||||
| 		mtl_renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor | ||||
| 		mtl_drawable_cb: sapp.metal_get_drawable | ||||
| 		d3d11_device: sapp.d3d11_get_device() | ||||
| 		d3d11_device_context: sapp.d3d11_get_device_context() | ||||
| 		d3d11_render_target_view_cb: sapp.d3d11_get_render_target_view | ||||
| 		d3d11_depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view | ||||
| 	} | ||||
| 	gfx.setup(&desc) | ||||
| 	sgl_desc := sgl_desc_t{} | ||||
|  | @ -75,9 +75,9 @@ fn draw_hollow_rect(x, y, w, h f32) { | |||
| 
 | ||||
| fn draw_filled_rect(x, y, w, h f32) { | ||||
| 	sgl.begin_quads() | ||||
| 	sgl_v2f(x, y) | ||||
| 	sgl_v2f(x + w, y) | ||||
| 	sgl_v2f(x + w, y + h) | ||||
| 	sgl_v2f(x, y + h) | ||||
| 	sgl.v2f(x, y) | ||||
| 	sgl.v2f(x + w, y) | ||||
| 	sgl.v2f(x + w, y + h) | ||||
| 	sgl.v2f(x, y + h) | ||||
| 	sgl.end() | ||||
| } | ||||
|  |  | |||
|  | @ -42,13 +42,13 @@ fn init(user_data voidptr) { | |||
| 	mut state := &AppState(user_data) | ||||
| 	// dont actually alocate this on the heap in real life
 | ||||
| 	gfx.setup(&sg_desc{ | ||||
| 		mtl_device: C.sapp_metal_get_device() | ||||
| 		mtl_renderpass_descriptor_cb: sapp_metal_get_renderpass_descriptor | ||||
| 		mtl_drawable_cb: sapp_metal_get_drawable | ||||
| 		d3d11_device: sapp_d3d11_get_device() | ||||
| 		d3d11_device_context: sapp_d3d11_get_device_context() | ||||
| 		d3d11_render_target_view_cb: sapp_d3d11_get_render_target_view | ||||
| 		d3d11_depth_stencil_view_cb: sapp_d3d11_get_depth_stencil_view | ||||
| 		mtl_device: sapp.metal_get_device() | ||||
| 		mtl_renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor | ||||
| 		mtl_drawable_cb: sapp.metal_get_drawable | ||||
| 		d3d11_device: sapp.d3d11_get_device() | ||||
| 		d3d11_device_context: sapp.d3d11_get_device_context() | ||||
| 		d3d11_render_target_view_cb: sapp.d3d11_get_render_target_view | ||||
| 		d3d11_depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view | ||||
| 	}) | ||||
| 	s := &C.sgl_desc_t{} | ||||
| 	C.sgl_setup(s) | ||||
|  | @ -64,7 +64,7 @@ fn frame(user_data voidptr) { | |||
| 	t := time.ticks() | ||||
| 	mut state := &AppState(user_data) | ||||
| 	state.render_font() | ||||
| 	gfx.begin_default_pass(&state.pass_action, sapp_width(), sapp_height()) | ||||
| 	gfx.begin_default_pass(&state.pass_action, sapp.width(), sapp.height()) | ||||
| 	sgl.draw() | ||||
| 	gfx.end_pass() | ||||
| 	gfx.commit() | ||||
|  | @ -98,43 +98,43 @@ fn (state &AppState) render_font() { | |||
| 	dy += lh | ||||
| 	C.fonsSetColor(state.fons, white) | ||||
| 	dx = C.fonsDrawText(state.fons, dx, dy, c'The quick ', C.NULL) | ||||
| 	fonsSetFont(state.fons, state.font_normal) | ||||
| 	fonsSetSize(state.fons, 48.0) | ||||
| 	fonsSetColor(state.fons, brown) | ||||
| 	dx = fonsDrawText(state.fons, dx, dy, c'brown ', C.NULL) | ||||
| 	fonsSetFont(state.fons, state.font_normal) | ||||
| 	fonsSetSize(state.fons, 24.0) | ||||
| 	fonsSetColor(state.fons, white) | ||||
| 	dx = fonsDrawText(state.fons, dx, dy, c'fox ', C.NULL) | ||||
| 	C.fonsSetFont(state.fons, state.font_normal) | ||||
| 	C.fonsSetSize(state.fons, 48.0) | ||||
| 	C.fonsSetColor(state.fons, brown) | ||||
| 	dx = C.fonsDrawText(state.fons, dx, dy, c'brown ', C.NULL) | ||||
| 	C.fonsSetFont(state.fons, state.font_normal) | ||||
| 	C.fonsSetSize(state.fons, 24.0) | ||||
| 	C.fonsSetColor(state.fons, white) | ||||
| 	dx = C.fonsDrawText(state.fons, dx, dy, c'fox ', C.NULL) | ||||
| 	dx = sx | ||||
| 	dy += lh * 1.2 | ||||
| 	fonsSetSize(state.fons, 20.0) | ||||
| 	fonsSetFont(state.fons, state.font_normal) | ||||
| 	fonsSetColor(state.fons, blue) | ||||
| 	fonsDrawText(state.fons, dx, dy, c'Now is the time for all good men to come to the aid of the party.', C.NULL) | ||||
| 	C.fonsSetSize(state.fons, 20.0) | ||||
| 	C.fonsSetFont(state.fons, state.font_normal) | ||||
| 	C.fonsSetColor(state.fons, blue) | ||||
| 	C.fonsDrawText(state.fons, dx, dy, c'Now is the time for all good men to come to the aid of the party.', C.NULL) | ||||
| 	dx = 300 | ||||
| 	dy = 350 | ||||
| 	fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_BASELINE) | ||||
| 	fonsSetSize(state.fons, 60.0) | ||||
| 	fonsSetFont(state.fons, state.font_normal) | ||||
| 	fonsSetColor(state.fons, white) | ||||
| 	fonsSetSpacing(state.fons, 5.0) | ||||
| 	fonsSetBlur(state.fons, 6.0) | ||||
| 	fonsDrawText(state.fons, dx, dy, c'Blurry...', C.NULL) | ||||
| 	C.fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_BASELINE) | ||||
| 	C.fonsSetSize(state.fons, 60.0) | ||||
| 	C.fonsSetFont(state.fons, state.font_normal) | ||||
| 	C.fonsSetColor(state.fons, white) | ||||
| 	C.fonsSetSpacing(state.fons, 5.0) | ||||
| 	C.fonsSetBlur(state.fons, 6.0) | ||||
| 	C.fonsDrawText(state.fons, dx, dy, c'Blurry...', C.NULL) | ||||
| 	dx = 300 | ||||
| 	dy += 50.0 | ||||
| 	fonsSetSize(state.fons, 28.0) | ||||
| 	fonsSetFont(state.fons, state.font_normal) | ||||
| 	fonsSetColor(state.fons, white) | ||||
| 	fonsSetSpacing(state.fons, 0.0) | ||||
| 	fonsSetBlur(state.fons, 3.0) | ||||
| 	fonsDrawText(state.fons, dx, dy + 2, c'DROP SHADOW', C.NULL) | ||||
| 	fonsSetColor(state.fons, black) | ||||
| 	fonsSetBlur(state.fons, 0) | ||||
| 	fonsDrawText(state.fons, dx, dy, c'DROP SHADOW', C.NULL) | ||||
| 	fonsSetSize(state.fons, 18.0) | ||||
| 	fonsSetFont(state.fons, state.font_normal) | ||||
| 	fonsSetColor(state.fons, white) | ||||
| 	C.fonsSetSize(state.fons, 28.0) | ||||
| 	C.fonsSetFont(state.fons, state.font_normal) | ||||
| 	C.fonsSetColor(state.fons, white) | ||||
| 	C.fonsSetSpacing(state.fons, 0.0) | ||||
| 	C.fonsSetBlur(state.fons, 3.0) | ||||
| 	C.fonsDrawText(state.fons, dx, dy + 2, c'DROP SHADOW', C.NULL) | ||||
| 	C.fonsSetColor(state.fons, black) | ||||
| 	C.fonsSetBlur(state.fons, 0) | ||||
| 	C.fonsDrawText(state.fons, dx, dy, c'DROP SHADOW', C.NULL) | ||||
| 	C.fonsSetSize(state.fons, 18.0) | ||||
| 	C.fonsSetFont(state.fons, state.font_normal) | ||||
| 	C.fonsSetColor(state.fons, white) | ||||
| 	dx = 50 | ||||
| 	dy = 350 | ||||
| 	line(dx - 10, dy, dx + 250, dy) | ||||
|  |  | |||
|  | @ -366,7 +366,7 @@ fn (p mut Parser) name_expr() string { | |||
| 	} | ||||
| 	// Unknown name, try prepending the module name to it
 | ||||
| 	// TODO perf
 | ||||
| 	else if !p.table.known_type(name) && !p.table.known_fn(name) && !p.table.known_const(name) && !is_c { | ||||
| 	else if !p.table.known_type(name) && !p.known_fn_in_mod(name) && !p.table.known_const(name) && !is_c { | ||||
| 		name = p.prepend_mod(name) | ||||
| 	} | ||||
| 	// re-check
 | ||||
|  |  | |||
|  | @ -384,6 +384,16 @@ fn (t &Table) known_fn(name string) bool { | |||
| 	return true | ||||
| } | ||||
| 
 | ||||
| fn (p &Parser) known_fn_in_mod(name string) bool { | ||||
| 	existing_fn := p.table.find_fn(name) or { | ||||
| 		return false | ||||
| 	} | ||||
| 	if (existing_fn.mod == p.mod || existing_fn.mod == 'builtin') { | ||||
| 		return true | ||||
| 	} | ||||
| 	return false | ||||
| } | ||||
| 
 | ||||
| fn (t &Table) known_const(name string) bool { | ||||
| 	_ = t.find_const(name) or { | ||||
| 		return false | ||||
|  |  | |||
|  | @ -56,13 +56,13 @@ __global g_font_path string | |||
| 
 | ||||
| fn init_sokol_window() { | ||||
| 	desc := sg_desc{ | ||||
| 		mtl_device: C.sapp_metal_get_device() | ||||
| 		mtl_renderpass_descriptor_cb: sapp_metal_get_renderpass_descriptor | ||||
| 		mtl_drawable_cb: sapp_metal_get_drawable | ||||
| 		d3d11_device: sapp_d3d11_get_device() | ||||
| 		d3d11_device_context: sapp_d3d11_get_device_context() | ||||
| 		d3d11_render_target_view_cb: sapp_d3d11_get_render_target_view | ||||
| 		d3d11_depth_stencil_view_cb: sapp_d3d11_get_depth_stencil_view | ||||
| 		mtl_device: sapp.metal_get_device() | ||||
| 		mtl_renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor | ||||
| 		mtl_drawable_cb: sapp.metal_get_drawable | ||||
| 		d3d11_device: sapp.d3d11_get_device() | ||||
| 		d3d11_device_context: sapp.d3d11_get_device_context() | ||||
| 		d3d11_render_target_view_cb: sapp.d3d11_get_render_target_view | ||||
| 		d3d11_depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view | ||||
| 	} | ||||
| 	gfx.setup(&desc) | ||||
| 	sgl_desc := sgl_desc_t{} | ||||
|  | @ -138,20 +138,20 @@ pub fn (gg &GG) run() { | |||
| pub fn (ctx &GG) draw_rect(x, y, w, h f32, c gx.Color) { | ||||
| 	sgl.c4b(c.r, c.g, c.b, 128) | ||||
| 	sgl.begin_quads() | ||||
| 	sgl_v2f(x, y) | ||||
| 	sgl_v2f(x + w, y) | ||||
| 	sgl_v2f(x + w, y + h) | ||||
| 	sgl_v2f(x, y + h) | ||||
| 	sgl.v2f(x, y) | ||||
| 	sgl.v2f(x + w, y) | ||||
| 	sgl.v2f(x + w, y + h) | ||||
| 	sgl.v2f(x, y + h) | ||||
| 	sgl.end() | ||||
| } | ||||
| 
 | ||||
| pub fn draw_rect(x, y, w, h f32, c gx.Color) { | ||||
| 	sgl.c4b(c.r, c.g, c.b, 128) | ||||
| 	sgl.begin_quads() | ||||
| 	sgl_v2f(x, y) | ||||
| 	sgl_v2f(x + w, y) | ||||
| 	sgl_v2f(x + w, y + h) | ||||
| 	sgl_v2f(x, y + h) | ||||
| 	sgl.v2f(x, y) | ||||
| 	sgl.v2f(x + w, y) | ||||
| 	sgl.v2f(x + w, y + h) | ||||
| 	sgl.v2f(x, y + h) | ||||
| 	sgl.end() | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue