fmt: process C function declarations correctly
parent
1960c6f4cb
commit
6455e57e82
|
@ -25,6 +25,9 @@ pub fn (node &FnDecl) str(t &table.Table) string {
|
|||
receiver = '($node.receiver.name $m$name) '
|
||||
}
|
||||
name := node.name.after('.')
|
||||
if node.is_c {
|
||||
name = 'C.$name'
|
||||
}
|
||||
f.write('fn ${receiver}${name}(')
|
||||
for i, arg in node.args {
|
||||
// skip receiver
|
||||
|
|
|
@ -173,9 +173,13 @@ fn (f mut Fmt) stmt(node ast.Stmt) {
|
|||
s := it.str(f.table)
|
||||
// f.write(it.str(f.table))
|
||||
f.write(s.replace(f.cur_mod + '.', '')) // `Expr` instead of `ast.Expr` in mod ast
|
||||
if !it.is_c {
|
||||
f.writeln(' {')
|
||||
f.stmts(it.stmts)
|
||||
f.writeln('}\n')
|
||||
} else {
|
||||
f.writeln('\n')
|
||||
}
|
||||
}
|
||||
ast.ForInStmt {
|
||||
f.write('for ')
|
||||
|
|
|
@ -2,6 +2,7 @@ import (
|
|||
os
|
||||
term
|
||||
benchmark
|
||||
v.ast
|
||||
v.fmt
|
||||
v.parser
|
||||
v.table
|
||||
|
@ -44,7 +45,7 @@ fn test_fmt() {
|
|||
continue
|
||||
}
|
||||
table := table.new_table()
|
||||
file_ast := parser.parse_file(ipath, table, .parse_comments, &pref.Preferences{})
|
||||
file_ast := parser.parse_file(ipath, table, .parse_comments, &pref.Preferences{}, &ast.Scope{parent: 0})
|
||||
result_ocontent := fmt.fmt(file_ast, table)
|
||||
if expected_ocontent != result_ocontent {
|
||||
fmt_bench.fail()
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
fn C.func(arg int) int
|
||||
|
||||
fn fn_variadic(arg int, args ...string) {
|
||||
println('Do nothing')
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
fn C.func(arg int) int
|
||||
|
||||
fn fn_variadic(arg int, args... string) {
|
||||
println('Do nothing')
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue