Skip to content

Commit 9c644a6

Browse files
authored
checker: fix return static method name (fix #26105) (#26110)
1 parent fe6162e commit 9c644a6

3 files changed

Lines changed: 47 additions & 1 deletion

File tree

‎vlib/v/checker/return.v‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,12 @@ fn (mut c Checker) return_stmt(mut node ast.Return) {
321321
expr0 := node.exprs[0]
322322
if expr0 is ast.CallExpr {
323323
if expr0.or_block.kind == .propagate_option && node.exprs.len == 1 {
324-
c.error('`?` is not needed, use `return ${expr0.name}()`', expr0.pos)
324+
v_name := if expr0.is_static_method {
325+
expr0.name.all_before('__static__') + '.' + expr0.name.all_after('__static__')
326+
} else {
327+
expr0.name
328+
}
329+
c.error('`?` is not needed, use `return ${v_name}()`', expr0.pos)
325330
}
326331
}
327332
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
vlib/v/checker/tests/return_static_name.vv:29:9: error: `?` is not needed, use `return Boolean.from_bytes1()`
2+
27 |
3+
28 | fn parse_universal_primitive1(content []u8) ?Element {
4+
29 | return Boolean.from_bytes1(content)?
5+
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6+
30 | }
7+
31 |
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
module main
2+
3+
pub struct Boolean {
4+
mut:
5+
value u8
6+
}
7+
8+
fn (b Boolean) payload() ![]u8 {
9+
return []u8{}
10+
}
11+
12+
fn Boolean.from_bytes(bytes []u8) !Boolean {
13+
return Boolean{}
14+
}
15+
16+
fn Boolean.from_bytes1(bytes []u8) ?Boolean {
17+
return Boolean{}
18+
}
19+
20+
pub interface Element {
21+
payload() ![]u8
22+
}
23+
24+
fn parse_universal_primitive(content []u8) !Element {
25+
return Boolean.from_bytes(content)!
26+
}
27+
28+
fn parse_universal_primitive1(content []u8) ?Element {
29+
return Boolean.from_bytes1(content)?
30+
}
31+
32+
fn main() {
33+
println(parse_universal_primitive1([u8(1)])?)
34+
}

0 commit comments

Comments
 (0)