mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
vfmt: line comments fixes
This commit is contained in:
parent
439bb0c5de
commit
1ccd1979a4
@ -35,7 +35,7 @@ fn (p mut Parser) enum_decl(no_name bool) {
|
|||||||
p.warn('enum values cannot contain uppercase letters, use snake_case instead')
|
p.warn('enum values cannot contain uppercase letters, use snake_case instead')
|
||||||
}
|
}
|
||||||
fields << field
|
fields << field
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
name := '${mod_gen_name(p.mod)}__${enum_name}_$field'
|
name := '${mod_gen_name(p.mod)}__${enum_name}_$field'
|
||||||
if p.tok == .assign {
|
if p.tok == .assign {
|
||||||
mut enum_assign_tidx := p.cur_tok_index()
|
mut enum_assign_tidx := p.cur_tok_index()
|
||||||
|
@ -223,8 +223,10 @@ fn (p mut Parser) fn_decl() {
|
|||||||
is_amp := p.tok == .amp
|
is_amp := p.tok == .amp
|
||||||
if is_mut || is_amp {
|
if is_mut || is_amp {
|
||||||
p.check(p.tok)
|
p.check(p.tok)
|
||||||
|
if !is_amp {
|
||||||
p.fspace()
|
p.fspace()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
receiver_typ = p.get_type()
|
receiver_typ = p.get_type()
|
||||||
t := p.table.find_type(receiver_typ)
|
t := p.table.find_type(receiver_typ)
|
||||||
if (t.name == '' || t.is_placeholder) && !p.first_pass() {
|
if (t.name == '' || t.is_placeholder) && !p.first_pass() {
|
||||||
@ -364,7 +366,7 @@ fn (p mut Parser) fn_decl() {
|
|||||||
if !is_c && !p.is_vh && !is_fn_header {
|
if !is_c && !p.is_vh && !is_fn_header {
|
||||||
p.fspace()
|
p.fspace()
|
||||||
p.check(.lcbr)
|
p.check(.lcbr)
|
||||||
//p.fgenln('')
|
//p.fgen_nl()
|
||||||
}
|
}
|
||||||
// Register ?option type
|
// Register ?option type
|
||||||
if typ.starts_with('Option_') {
|
if typ.starts_with('Option_') {
|
||||||
@ -425,7 +427,7 @@ fn (p mut Parser) fn_decl() {
|
|||||||
|
|
||||||
if is_fn_header {
|
if is_fn_header {
|
||||||
p.genln('$typ $fn_name_cgen($str_args);')
|
p.genln('$typ $fn_name_cgen($str_args);')
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
if is_c {
|
if is_c {
|
||||||
p.fgenln('\n')
|
p.fgenln('\n')
|
||||||
|
@ -41,6 +41,7 @@ fn (p mut Parser) match_statement(is_expr bool) string {
|
|||||||
|
|
||||||
// unwrap match if there is only else
|
// unwrap match if there is only else
|
||||||
if i == 0 {
|
if i == 0 {
|
||||||
|
p.fspace()
|
||||||
if is_expr {
|
if is_expr {
|
||||||
// statements are dissallowed (if match is expression) so user cant declare variables there and so on
|
// statements are dissallowed (if match is expression) so user cant declare variables there and so on
|
||||||
|
|
||||||
@ -80,6 +81,7 @@ fn (p mut Parser) match_statement(is_expr bool) string {
|
|||||||
// allow braces is else
|
// allow braces is else
|
||||||
got_brace := p.tok == .lcbr
|
got_brace := p.tok == .lcbr
|
||||||
if got_brace {
|
if got_brace {
|
||||||
|
p.fspace()
|
||||||
p.check(.lcbr)
|
p.check(.lcbr)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,6 +99,7 @@ fn (p mut Parser) match_statement(is_expr bool) string {
|
|||||||
p.returns = false
|
p.returns = false
|
||||||
p.genln('else // default:')
|
p.genln('else // default:')
|
||||||
|
|
||||||
|
p.fspace()
|
||||||
p.check(.lcbr)
|
p.check(.lcbr)
|
||||||
|
|
||||||
p.genln('{ ')
|
p.genln('{ ')
|
||||||
@ -190,6 +193,7 @@ fn (p mut Parser) match_statement(is_expr bool) string {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
p.returns = false
|
p.returns = false
|
||||||
|
p.fspace()
|
||||||
p.check(.lcbr)
|
p.check(.lcbr)
|
||||||
|
|
||||||
p.genln('{ ')
|
p.genln('{ ')
|
||||||
@ -199,7 +203,7 @@ fn (p mut Parser) match_statement(is_expr bool) string {
|
|||||||
// p.gen(')')
|
// p.gen(')')
|
||||||
}
|
}
|
||||||
i++
|
i++
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
|
|
||||||
if is_expr {
|
if is_expr {
|
||||||
|
@ -407,10 +407,10 @@ fn (p mut Parser) parse(pass Pass) {
|
|||||||
if !p.cgen.nogen {
|
if !p.cgen.nogen {
|
||||||
p.cgen.consts << g
|
p.cgen.consts << g
|
||||||
}
|
}
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
if p.tok != .key_global {
|
if p.tok != .key_global {
|
||||||
// An extra empty line to separate a block of globals
|
// An extra empty line to separate a block of globals
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.eof {
|
.eof {
|
||||||
@ -472,10 +472,10 @@ fn (p mut Parser) imports() {
|
|||||||
p.fspace()
|
p.fspace()
|
||||||
p.check(.lpar)
|
p.check(.lpar)
|
||||||
p.fmt_inc()
|
p.fmt_inc()
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
for p.tok != .rpar && p.tok != .eof {
|
for p.tok != .rpar && p.tok != .eof {
|
||||||
p.import_statement()
|
p.import_statement()
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
p.fmt_dec()
|
p.fmt_dec()
|
||||||
p.check(.rpar)
|
p.check(.rpar)
|
||||||
@ -484,9 +484,9 @@ fn (p mut Parser) imports() {
|
|||||||
}
|
}
|
||||||
// `import foo`
|
// `import foo`
|
||||||
p.import_statement()
|
p.import_statement()
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
if p.tok != .key_import {
|
if p.tok != .key_import {
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -539,7 +539,7 @@ fn (p mut Parser) const_decl() {
|
|||||||
p.check(.key_const)
|
p.check(.key_const)
|
||||||
p.fspace()
|
p.fspace()
|
||||||
p.check(.lpar)
|
p.check(.lpar)
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
p.fmt_inc()
|
p.fmt_inc()
|
||||||
for p.tok == .name {
|
for p.tok == .name {
|
||||||
if p.lit == '_' && p.peek() == .assign && !p.cgen.nogen {
|
if p.lit == '_' && p.peek() == .assign && !p.cgen.nogen {
|
||||||
@ -611,7 +611,7 @@ fn (p mut Parser) const_decl() {
|
|||||||
if p.pref.build_mode != .build_module && is_compile_time_const(p.cgen.cur_line) {
|
if p.pref.build_mode != .build_module && is_compile_time_const(p.cgen.cur_line) {
|
||||||
p.cgen.consts << '#define $name $p.cgen.cur_line'
|
p.cgen.consts << '#define $name $p.cgen.cur_line'
|
||||||
p.cgen.resetln('')
|
p.cgen.resetln('')
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if typ.starts_with('[') {
|
if typ.starts_with('[') {
|
||||||
@ -625,7 +625,7 @@ fn (p mut Parser) const_decl() {
|
|||||||
}
|
}
|
||||||
p.cgen.resetln('')
|
p.cgen.resetln('')
|
||||||
}
|
}
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
p.fmt_dec()
|
p.fmt_dec()
|
||||||
p.check(.rpar)
|
p.check(.rpar)
|
||||||
@ -679,7 +679,7 @@ fn (p mut Parser) interface_method(field_name, receiver string) &Fn {
|
|||||||
} else {
|
} else {
|
||||||
method.typ = p.get_type()// method return type
|
method.typ = p.get_type()// method return type
|
||||||
//p.fspace()
|
//p.fspace()
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
return method
|
return method
|
||||||
}
|
}
|
||||||
@ -764,7 +764,7 @@ fn (p mut Parser) check(expected TokenKind) {
|
|||||||
p.fgen(p.strtok())
|
p.fgen(p.strtok())
|
||||||
// vfmt: increase indentation on `{` unless it's `{}`
|
// vfmt: increase indentation on `{` unless it's `{}`
|
||||||
if expected == .lcbr { //&& p.scanner.pos + 1 < p.scanner.text.len && p.scanner.text[p.scanner.pos + 1] != `}` {
|
if expected == .lcbr { //&& p.scanner.pos + 1 < p.scanner.text.len && p.scanner.text[p.scanner.pos + 1] != `}` {
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
p.fmt_inc()
|
p.fmt_inc()
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@ -1015,7 +1015,7 @@ fn (p mut Parser) statements_no_rcbr() string {
|
|||||||
// println('last st typ=$last_st_typ')
|
// println('last st typ=$last_st_typ')
|
||||||
if !p.inside_if_expr {
|
if !p.inside_if_expr {
|
||||||
//p.genln('')// // end st tok= ${p.strtok()}')
|
//p.genln('')// // end st tok= ${p.strtok()}')
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
i++
|
i++
|
||||||
if i > 50000 {
|
if i > 50000 {
|
||||||
@ -2096,7 +2096,7 @@ fn (p mut Parser) assoc() string {
|
|||||||
if p.tok != .rcbr {
|
if p.tok != .rcbr {
|
||||||
p.check(.comma)
|
p.check(.comma)
|
||||||
}
|
}
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
// Copy the rest of the fields
|
// Copy the rest of the fields
|
||||||
T := p.table.find_type(var.typ)
|
T := p.table.find_type(var.typ)
|
||||||
@ -2302,14 +2302,14 @@ fn (p mut Parser) map_init() string {
|
|||||||
}
|
}
|
||||||
vals_gen += '$val_expr, '
|
vals_gen += '$val_expr, '
|
||||||
if p.tok == .rcbr {
|
if p.tok == .rcbr {
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
p.check(.rcbr)
|
p.check(.rcbr)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if p.tok == .comma {
|
if p.tok == .comma {
|
||||||
p.check(.comma)
|
p.check(.comma)
|
||||||
}
|
}
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
p.gen('new_map_init($i, sizeof($val_type), ' +
|
p.gen('new_map_init($i, sizeof($val_type), ' +
|
||||||
'(string[$i]){ $keys_gen }, ($val_type [$i]){ $vals_gen } )')
|
'(string[$i]){ $keys_gen }, ($val_type [$i]){ $vals_gen } )')
|
||||||
@ -2556,7 +2556,7 @@ fn (p mut Parser) if_st(is_expr bool, elif_depth int) string {
|
|||||||
p.returns = false
|
p.returns = false
|
||||||
if p.tok == .key_else {
|
if p.tok == .key_else {
|
||||||
if !p.inside_if_expr {
|
if !p.inside_if_expr {
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
p.check(.key_else)
|
p.check(.key_else)
|
||||||
p.fspace()
|
p.fspace()
|
||||||
@ -2889,7 +2889,7 @@ fn (p mut Parser) attribute() {
|
|||||||
p.attr = p.attr + ':' + p.check_name()
|
p.attr = p.attr + ':' + p.check_name()
|
||||||
}
|
}
|
||||||
p.check(.rsbr)
|
p.check(.rsbr)
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
if p.tok == .key_fn || (p.tok == .key_pub && p.peek() == .key_fn) {
|
if p.tok == .key_fn || (p.tok == .key_pub && p.peek() == .key_fn) {
|
||||||
p.fn_decl()
|
p.fn_decl()
|
||||||
p.attr = ''
|
p.attr = ''
|
||||||
|
@ -589,6 +589,8 @@ fn (s mut Scanner) scan() ScanRes {
|
|||||||
s.line_comment = s.text[start + 1..s.pos]
|
s.line_comment = s.text[start + 1..s.pos]
|
||||||
s.line_comment = s.line_comment.trim_space()
|
s.line_comment = s.line_comment.trim_space()
|
||||||
if s.is_fmt {
|
if s.is_fmt {
|
||||||
|
s.pos-- // fix line_nr, \n was read, and the comment is marked on the next line
|
||||||
|
s.line_nr--
|
||||||
return scan_res(.line_comment, s.line_comment)
|
return scan_res(.line_comment, s.line_comment)
|
||||||
}
|
}
|
||||||
//s.fgenln('// ${s.prev_tok.str()} "$s.line_comment"')
|
//s.fgenln('// ${s.prev_tok.str()} "$s.line_comment"')
|
||||||
|
@ -143,7 +143,7 @@ fn (p mut Parser) struct_decl() {
|
|||||||
p.check(.colon)
|
p.check(.colon)
|
||||||
}
|
}
|
||||||
p.fmt_inc()
|
p.fmt_inc()
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
if p.tok == .key_mut {
|
if p.tok == .key_mut {
|
||||||
if is_mut {
|
if is_mut {
|
||||||
@ -156,7 +156,7 @@ fn (p mut Parser) struct_decl() {
|
|||||||
p.check(.colon)
|
p.check(.colon)
|
||||||
}
|
}
|
||||||
p.fmt_inc()
|
p.fmt_inc()
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
// if is_pub {
|
// if is_pub {
|
||||||
// }
|
// }
|
||||||
@ -229,7 +229,7 @@ fn (p mut Parser) struct_decl() {
|
|||||||
if p.first_pass() {
|
if p.first_pass() {
|
||||||
p.table.add_field(typ.name, field_name, field_type, is_mut, attr, access_mod)
|
p.table.add_field(typ.name, field_name, field_type, is_mut, attr, access_mod)
|
||||||
}
|
}
|
||||||
p.fgenln('') // newline between struct fields
|
p.fgen_nl() // newline between struct fields
|
||||||
}
|
}
|
||||||
p.check(.rcbr)
|
p.check(.rcbr)
|
||||||
if !is_c && !did_gen_something && p.first_pass() {
|
if !is_c && !did_gen_something && p.first_pass() {
|
||||||
@ -280,7 +280,7 @@ fn (p mut Parser) struct_init(typ string) string {
|
|||||||
}
|
}
|
||||||
p.fspace()
|
p.fspace()
|
||||||
did_gen_something = true
|
did_gen_something = true
|
||||||
p.fgenln('') // newline between struct fields
|
p.fgen_nl() // newline between struct fields
|
||||||
}
|
}
|
||||||
// If we already set some fields, need to prepend a comma
|
// If we already set some fields, need to prepend a comma
|
||||||
if t.fields.len != inited_fields.len && inited_fields.len > 0 {
|
if t.fields.len != inited_fields.len && inited_fields.len > 0 {
|
||||||
|
@ -31,6 +31,12 @@ fn (scanner mut Scanner) fgenln(s_ string) {
|
|||||||
scanner.fmt_line_empty = true
|
scanner.fmt_line_empty = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[if vfmt]
|
||||||
|
fn (scanner mut Scanner) fgen_nl() {
|
||||||
|
scanner.fmt_out.writeln('')
|
||||||
|
scanner.fmt_line_empty = true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[if vfmt]
|
[if vfmt]
|
||||||
fn (p mut Parser) fgen(s string) {
|
fn (p mut Parser) fgen(s string) {
|
||||||
@ -57,6 +63,18 @@ fn (p mut Parser) fgenln(s string) {
|
|||||||
p.scanner.fgenln(s)
|
p.scanner.fgenln(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[if vfmt]
|
||||||
|
fn (p mut Parser) fgen_nl() {
|
||||||
|
if p.pass != .main {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
println(p.tok)
|
||||||
|
if p.prev_tok == .line_comment {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
p.scanner.fgen_nl()
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
fn (p mut Parser) peek() TokenKind {
|
fn (p mut Parser) peek() TokenKind {
|
||||||
for {
|
for {
|
||||||
@ -108,8 +126,9 @@ fn (p mut Parser) fnext() {
|
|||||||
p.fgen(s)
|
p.fgen(s)
|
||||||
}
|
}
|
||||||
// vfmt: increase indentation on `{` unless it's `{}`
|
// vfmt: increase indentation on `{` unless it's `{}`
|
||||||
|
mut inc_indent := false
|
||||||
if p.tok == .lcbr && !p.inside_if_expr && p.peek() != .rcbr {
|
if p.tok == .lcbr && !p.inside_if_expr && p.peek() != .rcbr {
|
||||||
p.fgenln('')
|
p.fgen_nl()
|
||||||
p.fmt_inc()
|
p.fmt_inc()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,33 +136,51 @@ fn (p mut Parser) fnext() {
|
|||||||
if p.tokens[p.token_idx].tok in [.line_comment, .mline_comment] {
|
if p.tokens[p.token_idx].tok in [.line_comment, .mline_comment] {
|
||||||
// Newline before the comment and after consts and closing }
|
// Newline before the comment and after consts and closing }
|
||||||
if p.inside_const {
|
if p.inside_const {
|
||||||
p.fgenln('\n')
|
p.fgen_nl()
|
||||||
}
|
p.fgen_nl()
|
||||||
if p.tok == .rcbr {
|
|
||||||
p.fgenln('')
|
|
||||||
}
|
}
|
||||||
|
is_rcbr := p.tok == .rcbr
|
||||||
for p.token_idx < p.tokens.len - 1 {
|
for p.token_idx < p.tokens.len - 1 {
|
||||||
|
i := p.token_idx
|
||||||
tok := p.tokens[p.token_idx].tok
|
tok := p.tokens[p.token_idx].tok
|
||||||
if tok != .line_comment && tok != .mline_comment {
|
if tok != .line_comment && tok != .mline_comment {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
comment_token := p.tokens[p.token_idx]
|
comment_token := p.tokens[p.token_idx]
|
||||||
|
next := p.tokens[p.token_idx+1]
|
||||||
|
comment_on_new_line := p.token_idx == 0 ||
|
||||||
|
comment_token.line_nr > p.tokens[p.token_idx - 1].line_nr
|
||||||
|
//prev_token := p.tokens[p.token_idx - 1]
|
||||||
comment := comment_token.lit
|
comment := comment_token.lit
|
||||||
if p.token_idx > 0 && comment_token.line_nr > p.tokens[p.token_idx-1].line_nr {
|
if i > 0 && p.tokens[i-1].tok != .line_comment &&
|
||||||
//p.fgenln('')
|
comment_token.line_nr > p.tokens[i-1].line_nr {
|
||||||
|
p.fgen_nl()
|
||||||
}
|
}
|
||||||
if tok == .line_comment {
|
if tok == .line_comment {
|
||||||
|
if !comment_on_new_line { //prev_token.line_nr < comment_token.line_nr {
|
||||||
|
p.fgen(' ')
|
||||||
|
}
|
||||||
p.fgen('// ' + comment)
|
p.fgen('// ' + comment)
|
||||||
|
/*
|
||||||
|
if false && i > 0 {
|
||||||
|
p.fgen(
|
||||||
|
'pln=${p.tokens[i-1].line_nr} ${comment_token.str()} ' +
|
||||||
|
'line_nr=$comment_token.line_nr next=${next.str()} next_line_nr=$next.line_nr')
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
p.fgen(comment)
|
p.fgen(comment)
|
||||||
}
|
}
|
||||||
if p.token_idx > 0 &&
|
if next.tok == .line_comment && comment_token.line_nr < next.line_nr {
|
||||||
comment_token.line_nr < p.tokens[p.token_idx+1].line_nr
|
p.fgen_nl()
|
||||||
{
|
|
||||||
p.fgenln('')
|
|
||||||
}
|
}
|
||||||
p.token_idx++
|
p.token_idx++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if inc_indent {
|
||||||
|
p.fgen_nl()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,7 +199,7 @@ fn (p mut Parser) gen_fmt() {
|
|||||||
if s == '' {
|
if s == '' {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
println('GENERATING ${p.file_name}.V')
|
println('generating ${p.file_name}.v')
|
||||||
out := os.create('/var/tmp/fmt/' + p.file_name) or {
|
out := os.create('/var/tmp/fmt/' + p.file_name) or {
|
||||||
verror('failed to create fmt.v')
|
verror('failed to create fmt.v')
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user