fmt: keep some line comments in multi line arrays (#8969)
							parent
							
								
									2c609411dd
								
							
						
					
					
						commit
						5aebd646bb
					
				|  | @ -1970,18 +1970,25 @@ pub fn (mut f Fmt) array_init(node ast.ArrayInit) { | |||
| 		} | ||||
| 	} | ||||
| 	for i, c in node.pre_cmnts { | ||||
| 		f.comment(c, level: .indent, iembed: true) | ||||
| 		if i < node.pre_cmnts.len - 1 { | ||||
| 			if c.pos.last_line < node.pre_cmnts[i + 1].pos.line_nr { | ||||
| 				f.comment(c, level: .indent) | ||||
| 				f.writeln('') | ||||
| 			} else { | ||||
| 				f.comment(c, level: .indent, iembed: true) | ||||
| 				f.write(' ') | ||||
| 			} | ||||
| 		} else { | ||||
| 			if c.pos.last_line < node.pos.last_line && node.exprs.len == 0 { | ||||
| 				f.writeln('') | ||||
| 			} else if node.exprs.len > 0 { | ||||
| 				f.write(' ') | ||||
| 			if c.pos.last_line < node.pos.last_line { | ||||
| 				f.comment(c, level: .indent) | ||||
| 				if node.exprs.len == 0 { | ||||
| 					f.writeln('') | ||||
| 				} | ||||
| 			} else { | ||||
| 				f.comment(c, level: .indent, iembed: true) | ||||
| 				if node.exprs.len > 0 { | ||||
| 					f.write(' ') | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		last_line_nr = c.pos.last_line | ||||
|  | @ -2022,10 +2029,11 @@ pub fn (mut f Fmt) array_init(node ast.ArrayInit) { | |||
| 				} | ||||
| 				if cmt.pos.line_nr > expr_pos.last_line { | ||||
| 					f.writeln('') | ||||
| 					f.comment(cmt, {}) | ||||
| 				} else { | ||||
| 					f.write(' ') | ||||
| 					f.comment(cmt, iembed: true) | ||||
| 				} | ||||
| 				f.comment(cmt, iembed: true) | ||||
| 			} | ||||
| 		} | ||||
| 		if i == node.exprs.len - 1 { | ||||
|  |  | |||
|  | @ -1,22 +1,4 @@ | |||
| fn main() { | ||||
| 	arr := [ | ||||
| 		/* test 0 */ | ||||
| 		1, | ||||
| 		/* test 1 */ | ||||
| 		2, | ||||
| 		/* test 2 */ | ||||
| 		3, /* 3 */ | ||||
| 		4, /* 4-1 */ /* 4-2 */ | ||||
| 	] | ||||
| 	arr2 := [ | ||||
| 		'foo', | ||||
| 		/* | ||||
| 		'bar', | ||||
| 		'baz', | ||||
| 		'spam', | ||||
| 		*/ | ||||
| 		'eggs', | ||||
| 	] | ||||
| 	_ := []int{len: 10, cap: 10, init: 7} | ||||
| 	_ := []map[string]string{len: 5, cap: 50, init: map{ | ||||
| 		'a': 'a' | ||||
|  |  | |||
|  | @ -0,0 +1,70 @@ | |||
| fn main() { | ||||
| 	_ := [ | ||||
| 		// pre comment
 | ||||
| 		6, | ||||
| 		// and after
 | ||||
| 	] | ||||
| 	_ := [ | ||||
| 		7, | ||||
| 		// below expr
 | ||||
| 	] | ||||
| 	_ := [ | ||||
| 		8, /* I don't know why this still is a block comment */ | ||||
| 		9, | ||||
| 	] | ||||
| 	arr := [ | ||||
| 		// test 0
 | ||||
| 		1, | ||||
| 		// test 1
 | ||||
| 		2, | ||||
| 		// test 2
 | ||||
| 		3, /* 3 */ | ||||
| 		4, /* 4-1 */ /* 4-2 */ | ||||
| 	] | ||||
| } | ||||
| 
 | ||||
| fn only_comments_array() { | ||||
| 	_ := [/* on a single line */ /* too */] | ||||
| 	_ := [ | ||||
| 		// 1,
 | ||||
| 		// 2,
 | ||||
| 		// 3,
 | ||||
| 	] | ||||
| 	_ := [ | ||||
| 		/* whatever */ /* this is */ // 3,
 | ||||
| 		// 4,
 | ||||
| 	] | ||||
| } | ||||
| 
 | ||||
| fn single_line_array_pre_comments() { | ||||
| 	_ := [/* 2, */ 3] | ||||
| 	_ := [/* 4, */ /* 5, */ 6] | ||||
| 	_ := [/* cmt */ -4] | ||||
| } | ||||
| 
 | ||||
| fn single_line_array_iembed_comments() { | ||||
| 	_ := [1, /* betw single line */ 2] | ||||
| 	// This caused a bug where the ´-´ was parsed as InfixExpr and not as part of an IntegerLiteral
 | ||||
| 	_ := [1, /* cmt */ -4] | ||||
| } | ||||
| 
 | ||||
| fn mixed_comments() { | ||||
| 	_ := [ | ||||
| 		3 /* iembed */, | ||||
| 		// keep line comment here
 | ||||
| 		// and here
 | ||||
| 		5, | ||||
| 	] | ||||
| } | ||||
| 
 | ||||
| fn keep_real_block_comment() { | ||||
| 	_ := [ | ||||
| 		'foo', | ||||
| 		/* | ||||
| 		'bar', | ||||
| 		'baz', | ||||
| 		'spam', | ||||
| 		*/ | ||||
| 		'eggs', | ||||
| 	] | ||||
| } | ||||
|  | @ -1,23 +0,0 @@ | |||
| fn only_comments_array() { | ||||
| 	arr := [ | ||||
| 		/* 1, */ | ||||
| 		/* 2, */ | ||||
| 		/* 3, */ | ||||
| 		/* 4, */ | ||||
| 	] | ||||
| 	arr2 := [ | ||||
| 		/* 1, */ /* 2, */ /* 3, */ | ||||
| 		/* 4, */ | ||||
| 	] | ||||
| } | ||||
| 
 | ||||
| fn array_pre_comments() { | ||||
| 	_ := [/* 2, */ 3] | ||||
| 	_ := [/* 4, */ /* 5, */ 6] | ||||
| 	_ := [/* cmt */ -4] | ||||
| } | ||||
| 
 | ||||
| fn negative_num_after_comment_expr() { | ||||
| 	// This caused a bug where the ´-´ was parsed as InfixExpr and not as part of an IntegerLiteral
 | ||||
| 	_ := [1, /* cmt */ -4] | ||||
| } | ||||
|  | @ -40,8 +40,8 @@ fn main() { | |||
| 	e := c | ||||
| 	// more comments = more good
 | ||||
| 	arr := [ | ||||
| 		/* block foo bar */ | ||||
| 		/* inline foo bar */ | ||||
| 		// block foo bar
 | ||||
| 		//   inline foo bar
 | ||||
| 		0, | ||||
| 	] | ||||
| 	// before arg comment
 | ||||
|  |  | |||
|  | @ -31,7 +31,7 @@ pub fn mark_used(mut the_table table.Table, pref &pref.Preferences, ast_files [] | |||
| 		'tos3', | ||||
| 		'isnil', | ||||
| 		'opt_ok2', | ||||
| 		/* utf8_str_visible_length is used by c/str.v */ | ||||
| 		// utf8_str_visible_length is used by c/str.v
 | ||||
| 		'utf8_str_visible_length', | ||||
| 		'compare_ints', | ||||
| 		'compare_u64s', | ||||
|  | @ -40,14 +40,14 @@ pub fn mark_used(mut the_table table.Table, pref &pref.Preferences, ast_files [] | |||
| 		'compare_u64s_reverse', | ||||
| 		'compare_strings_reverse', | ||||
| 		'builtin_init', | ||||
| 		/* byteptr and charptr */ | ||||
| 		// byteptr and charptr
 | ||||
| 		'3.vstring', | ||||
| 		'3.vstring_with_len', | ||||
| 		'4.vstring', | ||||
| 		'4.vstring_with_len', | ||||
| 		/* byte. methods */ | ||||
| 		// byte. methods
 | ||||
| 		'9.str_escaped', | ||||
| 		/* string. methods */ | ||||
| 		// string. methods
 | ||||
| 		'18.add', | ||||
| 		'18.trim_space', | ||||
| 		'18.replace', | ||||
|  | @ -57,14 +57,14 @@ pub fn mark_used(mut the_table table.Table, pref &pref.Preferences, ast_files [] | |||
| 		'18.substr', | ||||
| 		'18.at', | ||||
| 		'18.index_kmp', | ||||
| 		/* string. ==, !=, etc... */ | ||||
| 		// string. ==, !=, etc...
 | ||||
| 		'18.eq', | ||||
| 		'18.ne', | ||||
| 		'18.lt', | ||||
| 		'18.gt', | ||||
| 		'18.le', | ||||
| 		'18.ge', | ||||
| 		/* ustring. ==, !=, etc... */ | ||||
| 		// ustring. ==, !=, etc...
 | ||||
| 		'19.eq', | ||||
| 		'19.ne', | ||||
| 		'19.lt', | ||||
|  | @ -72,7 +72,7 @@ pub fn mark_used(mut the_table table.Table, pref &pref.Preferences, ast_files [] | |||
| 		'19.le', | ||||
| 		'19.ge', | ||||
| 		'19.add', | ||||
| 		/* other array methods */ | ||||
| 		// other array methods
 | ||||
| 		'21.get', | ||||
| 		'21.set', | ||||
| 		'21.get_unsafe', | ||||
|  | @ -94,7 +94,7 @@ pub fn mark_used(mut the_table table.Table, pref &pref.Preferences, ast_files [] | |||
| 		'65557.reverse', | ||||
| 		'65557.set', | ||||
| 		'65557.set_unsafe', | ||||
| 		/* TODO: process the _vinit const initializations automatically too */ | ||||
| 		// TODO: process the _vinit const initializations automatically too
 | ||||
| 		'os.getwd', | ||||
| 		'os.init_os_args', | ||||
| 		'os.init_os_args_wide', | ||||
|  |  | |||
|  | @ -85,7 +85,7 @@ pub fn (mut p Preferences) fill_with_defaults() { | |||
| 	// should go into res.cache_manager.vopts, which is used as a salt for the cache hash.
 | ||||
| 	p.cache_manager = vcache.new_cache_manager([ | ||||
| 		@VHASH, | ||||
| 		/* ensure that different v versions use separate build artefacts */ | ||||
| 		// ensure that different v versions use separate build artefacts
 | ||||
| 		'$p.backend | $p.os | $p.ccompiler | $p.is_prod | $p.sanitize', | ||||
| 		p.cflags.trim_space(), | ||||
| 		p.third_party_option.trim_space(), | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue