File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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 }
Original file line number Diff line number Diff line change 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 |
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments