cgen: printing pointer should print the address
parent
f508955b64
commit
c0d86eb651
|
@ -52,6 +52,7 @@ const (
|
||||||
'vlib/v/tests/type_test.v',
|
'vlib/v/tests/type_test.v',
|
||||||
'vlib/v/tests/typeof_test.v',
|
'vlib/v/tests/typeof_test.v',
|
||||||
'vlib/v/tests/valgrind/valgrind_test.v', // ubuntu-musl only
|
'vlib/v/tests/valgrind/valgrind_test.v', // ubuntu-musl only
|
||||||
|
'vlib/v/tests/pointers_str_test.v',
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -2562,7 +2562,6 @@ fn (g mut Gen) fn_call(node ast.CallExpr) {
|
||||||
g.expr(node.args[0].expr)
|
g.expr(node.args[0].expr)
|
||||||
g.writeln('); ${print_method}($tmp); string_free($tmp); //MEM2 $styp')
|
g.writeln('); ${print_method}($tmp); string_free($tmp); //MEM2 $styp')
|
||||||
} else {
|
} else {
|
||||||
// println(var) or println println(str.var)
|
|
||||||
expr := node.args[0].expr
|
expr := node.args[0].expr
|
||||||
is_var := match expr {
|
is_var := match expr {
|
||||||
ast.SelectorExpr {
|
ast.SelectorExpr {
|
||||||
|
@ -2575,11 +2574,9 @@ fn (g mut Gen) fn_call(node ast.CallExpr) {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// `println(int_str(10))`
|
if table.type_is_ptr(typ) && sym.kind != .struct_ {
|
||||||
// sym := g.table.get_type_symbol(node.args[0].typ)
|
|
||||||
if table.type_is_ptr(typ) {
|
|
||||||
// ptr_str() for pointers
|
// ptr_str() for pointers
|
||||||
// styp = 'ptr'
|
styp = 'ptr'
|
||||||
}
|
}
|
||||||
if sym.kind == .enum_ {
|
if sym.kind == .enum_ {
|
||||||
if is_var {
|
if is_var {
|
||||||
|
@ -2599,7 +2596,7 @@ fn (g mut Gen) fn_call(node ast.CallExpr) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
g.write('${print_method}(${styp}_str(')
|
g.write('${print_method}(${styp}_str(')
|
||||||
if table.type_is_ptr(typ) {
|
if table.type_is_ptr(typ) && sym.kind == .struct_ {
|
||||||
// dereference
|
// dereference
|
||||||
g.write('*')
|
g.write('*')
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,4 +4,3 @@ green
|
||||||
green
|
green
|
||||||
interp: green
|
interp: green
|
||||||
interp: green
|
interp: green
|
||||||
orange
|
|
|
@ -11,10 +11,6 @@ struct A{
|
||||||
color Color
|
color Color
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (c &Color) test() {
|
|
||||||
println(c)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
col := Color.green
|
col := Color.green
|
||||||
a := A{color: col}
|
a := A{color: col}
|
||||||
|
@ -25,5 +21,4 @@ fn main() {
|
||||||
println(a.color)
|
println(a.color)
|
||||||
println('interp: ${col}')
|
println('interp: ${col}')
|
||||||
println('interp: ${a.color}')
|
println('interp: ${a.color}')
|
||||||
orange.test()
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
struct A {
|
||||||
|
foo int
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_pointer_to_string() {
|
||||||
|
a := A{}
|
||||||
|
assert a.foo.str() != (&a.foo).str()
|
||||||
|
}
|
Loading…
Reference in New Issue