Skip to content

Commit f72cb00

Browse files
authored
ast: fix formatting fn header with parameter comments (#19059)
1 parent e5cd172 commit f72cb00

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

vlib/v/ast/str.v

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ pub fn (t &Table) stringify_fn_decl(node &FnDecl, cur_mod string, m2a map[string
133133

134134
fn (t &Table) stringify_fn_after_name(node &FnDecl, mut f strings.Builder, cur_mod string, m2a map[string]string) {
135135
mut add_para_types := true
136+
mut is_wrap_needed := false
136137
if node.generic_names.len > 0 {
137138
if node.is_method {
138139
sym := t.sym(node.params[0].typ)
@@ -168,6 +169,20 @@ fn (t &Table) stringify_fn_after_name(node &FnDecl, mut f strings.Builder, cur_m
168169
is_type_only := param.name == ''
169170
should_add_type := true // is_last_param || is_type_only || node.params[i + 1].typ != param.typ ||
170171
// (node.is_variadic && i == node.params.len - 2)
172+
pre_comments := param.comments.filter(it.pos.pos < param.pos.pos)
173+
if pre_comments.len > 0 {
174+
if i == 0 && !pre_comments.last().is_inline {
175+
is_wrap_needed = true
176+
f.write_string('\n\t')
177+
}
178+
write_comments(pre_comments, mut f)
179+
if !f.last_n(1)[0].is_space() {
180+
f.write_string(' ')
181+
}
182+
}
183+
if is_wrap_needed {
184+
f.write_string('\t')
185+
}
171186
if param.is_mut {
172187
f.write_string(param.typ.share().str() + ' ')
173188
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
fn foo(
2+
// Foo
3+
s string) {
4+
}
5+
6+
fn bar( /* p1 */ a string, /* p2 */ b int) {
7+
println('hello')
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
fn foo(
2+
// Foo
3+
s string) {
4+
}
5+
6+
fn bar(/*p1*/a string, /*p2*/b int) {
7+
println('hello')
8+
}

0 commit comments

Comments
 (0)