Skip to content

Commit 5dd28cf

Browse files
authored
markused: fix markused auto str detection (fix #23501) (#23503)
1 parent 1b9f15d commit 5dd28cf

4 files changed

Lines changed: 29 additions & 1 deletion

File tree

‎vlib/v/checker/used_features.v‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,9 @@ fn (mut c Checker) markused_call_expr(mut node ast.CallExpr) {
125125

126126
fn (mut c Checker) markused_fn_call(mut node ast.CallExpr) {
127127
if !c.is_builtin_mod && c.mod != 'math.bits' && node.args[0].expr !is ast.StringLiteral {
128-
if !c.table.sym(c.unwrap_generic(node.args[0].typ)).has_method('str') {
128+
if (node.args[0].expr is ast.CallExpr && node.args[0].expr.is_method
129+
&& node.args[0].expr.name == 'str')
130+
|| !c.table.sym(c.unwrap_generic(node.args[0].typ)).has_method('str') {
129131
c.table.used_features.auto_str = true
130132
} else {
131133
if node.args[0].typ.has_option_or_result() {
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
&TreeTwo{
2+
Tree:
3+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
&TreeTwo{
2+
Tree:
3+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
module main
2+
3+
pub struct Tree {}
4+
5+
pub fn (tree &Tree) str() string {
6+
return ''
7+
}
8+
9+
pub struct TreeTwo {
10+
Tree
11+
}
12+
13+
pub fn TreeTwo.from_string(tree_string string) !&TreeTwo {
14+
return &TreeTwo{}
15+
}
16+
17+
fn main() {
18+
tree := TreeTwo.from_string('') or { panic(err) }
19+
println(tree.str())
20+
}

0 commit comments

Comments
 (0)