autofree: more tests; gg: fix draw_circle with hidpi
parent
fe3d2a9aba
commit
26785668c0
|
@ -211,8 +211,6 @@ jobs:
|
|||
# run: git clone --depth 1 https://github.com/vlang/vorum && cd vorum && ../v . && cd ..
|
||||
# - name: Build vpm
|
||||
# run: git clone --depth 1 https://github.com/vlang/vpm && cd vpm && ../v . && cd ..
|
||||
# - name: Build V UI examples
|
||||
# run: ./v install ui && git clone --depth 1 https://github.com/vlang/ui && cd ui && ../v examples/calculator.v && cd ..
|
||||
# - name: Freestanding
|
||||
# run: ./v -freestanding -o bare vlib/os/bare/bare_example_linux.v
|
||||
- name: v self compilation
|
||||
|
|
10
vlib/gg/gg.v
10
vlib/gg/gg.v
|
@ -308,10 +308,16 @@ pub fn (ctx &Context) draw_circle_line(x f32, y f32, r int, segments int, c gx.C
|
|||
sgl.end()
|
||||
}
|
||||
|
||||
pub fn (ctx &Context) draw_circle(x f32, y f32, r int, c gx.Color) {
|
||||
pub fn (ctx &Context) draw_circle(x f32, y f32, r f32, c gx.Color) {
|
||||
if ctx.scale == 1 {
|
||||
ctx.draw_circle_with_segments(x,y,r,10, c)
|
||||
}
|
||||
else {
|
||||
ctx.draw_circle_with_segments(x*f32(ctx.scale),y*f32(ctx.scale),r*ctx.scale,10, c)
|
||||
|
||||
}
|
||||
}
|
||||
pub fn (ctx &Context) draw_circle_with_segments(x f32, y f32, r int, segments int, c gx.Color) {
|
||||
pub fn (ctx &Context) draw_circle_with_segments(x f32, y f32, r f32, segments int, c gx.Color) {
|
||||
if c.a != 255 {
|
||||
sgl.load_pipeline(ctx.timage_pip)
|
||||
}
|
||||
|
|
|
@ -217,6 +217,11 @@ fn get_font_path_variant(font_path string, variant FontVariant) string {
|
|||
} else {
|
||||
fpath += '-bold'
|
||||
}
|
||||
$if macos {
|
||||
if os.exists('SFNS-bold') {
|
||||
fpath = 'SFNS-bold'
|
||||
}
|
||||
}
|
||||
}
|
||||
.italic {
|
||||
if fpath.ends_with('-Regular') {
|
||||
|
|
|
@ -1025,6 +1025,7 @@ fn (mut g Gen) stmt(node ast.Stmt) {
|
|||
// g.autofree_call_pregen(node.exprs[0] as ast.CallExpr)
|
||||
}
|
||||
// g.autofree_scope_vars(node.pos.pos - 1)
|
||||
g.writeln('// ast.Return free_end')
|
||||
// g.write_autofree_stmts_when_needed(node)
|
||||
}
|
||||
g.return_statement(node, af)
|
||||
|
@ -3785,6 +3786,10 @@ fn (mut g Gen) return_statement(node ast.Return, af bool) {
|
|||
defer {
|
||||
g.inside_return = false
|
||||
}
|
||||
if af {
|
||||
tmp := g.new_tmp_var()
|
||||
g.writeln('// $tmp = ...')
|
||||
}
|
||||
// got to do a correct check for multireturn
|
||||
sym := g.table.get_type_symbol(g.fn_decl.return_type)
|
||||
fn_return_is_multi := sym.kind == .multi_return
|
||||
|
|
|
@ -240,6 +240,22 @@ fn free_before_return_bool() bool {
|
|||
return true
|
||||
}
|
||||
|
||||
struct User {
|
||||
name string
|
||||
age int
|
||||
}
|
||||
|
||||
fn free_array_except_returned_element() {
|
||||
user := get_user()
|
||||
println(user)
|
||||
}
|
||||
|
||||
fn get_user() User {
|
||||
users := [User{'Peter', 25}, User{'Alice', 21}]
|
||||
user := users[0] // has to be cloned, since `users` are going to be freed at the end of the function
|
||||
return user
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println('start')
|
||||
simple()
|
||||
|
@ -262,6 +278,7 @@ fn main() {
|
|||
// free_before_return_bool()
|
||||
// free_map()
|
||||
// loop_map()
|
||||
// free_array_except_returned_element()
|
||||
println('end')
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue