fmt: format array elements line-by-line when nl after `[` (#5776)
							parent
							
								
									31ac20876c
								
							
						
					
					
						commit
						e47ad33af6
					
				| 
						 | 
					@ -1479,22 +1479,25 @@ pub fn (mut f Fmt) array_init(it ast.ArrayInit) {
 | 
				
			||||||
	f.write('[')
 | 
						f.write('[')
 | 
				
			||||||
	mut inc_indent := false
 | 
						mut inc_indent := false
 | 
				
			||||||
	mut last_line_nr := it.pos.line_nr // to have the same newlines between array elements
 | 
						mut last_line_nr := it.pos.line_nr // to have the same newlines between array elements
 | 
				
			||||||
 | 
						mut break_after_each_element := false
 | 
				
			||||||
	for i, expr in it.exprs {
 | 
						for i, expr in it.exprs {
 | 
				
			||||||
		mut penalty := 3
 | 
					 | 
				
			||||||
		line_nr := expr.position().line_nr
 | 
							line_nr := expr.position().line_nr
 | 
				
			||||||
		if last_line_nr < line_nr {
 | 
							if i == 0 && last_line_nr < line_nr {
 | 
				
			||||||
			penalty--
 | 
								 break_after_each_element = true
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if i == 0 ||
 | 
							mut penalty := if break_after_each_element { 0 } else { 3 }
 | 
				
			||||||
			it.exprs[i - 1] is ast.ArrayInit ||
 | 
							if penalty > 0 {
 | 
				
			||||||
			it.exprs[i - 1] is ast.StructInit ||
 | 
								if i == 0 ||
 | 
				
			||||||
			it.exprs[i - 1] is ast.MapInit || it.exprs[i - 1] is ast.CallExpr {
 | 
									it.exprs[i - 1] is ast.ArrayInit ||
 | 
				
			||||||
			penalty--
 | 
									it.exprs[i - 1] is ast.StructInit ||
 | 
				
			||||||
		}
 | 
									it.exprs[i - 1] is ast.MapInit || it.exprs[i - 1] is ast.CallExpr {
 | 
				
			||||||
		if expr is ast.ArrayInit ||
 | 
									penalty--
 | 
				
			||||||
			expr is ast.StructInit || expr is ast.MapInit ||
 | 
								}
 | 
				
			||||||
			expr is ast.CallExpr {
 | 
								if expr is ast.ArrayInit ||
 | 
				
			||||||
			penalty--
 | 
									expr is ast.StructInit || expr is ast.MapInit ||
 | 
				
			||||||
 | 
									expr is ast.CallExpr {
 | 
				
			||||||
 | 
									penalty--
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		is_new_line := f.wrap_long_line(penalty, !inc_indent)
 | 
							is_new_line := f.wrap_long_line(penalty, !inc_indent)
 | 
				
			||||||
		if is_new_line && !inc_indent {
 | 
							if is_new_line && !inc_indent {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,12 @@ const (
 | 
				
			||||||
	one_line_supported  = ['windows', 'mac', 'macos', 'darwin', 'linux', 'freebsd', 'openbsd',
 | 
						one_line_supported  = ['windows', 'mac', 'macos', 'darwin', 'linux', 'freebsd', 'openbsd',
 | 
				
			||||||
		'netbsd', 'dragonfly', 'android', 'js', 'solaris', 'haiku', 'linux_or_macos']
 | 
							'netbsd', 'dragonfly', 'android', 'js', 'solaris', 'haiku', 'linux_or_macos']
 | 
				
			||||||
	another_const       = ['a', 'b', 'c', 'd', 'e', 'f']
 | 
						another_const       = ['a', 'b', 'c', 'd', 'e', 'f']
 | 
				
			||||||
 | 
						multiline_const     = [
 | 
				
			||||||
 | 
							'first line',
 | 
				
			||||||
 | 
							'second line',
 | 
				
			||||||
 | 
							'third line',
 | 
				
			||||||
 | 
							'fourth line'
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
| 
						 | 
					@ -24,3 +30,31 @@ const (
 | 
				
			||||||
pub const (
 | 
					pub const (
 | 
				
			||||||
	i_am_pub_const = true
 | 
						i_am_pub_const = true
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn main() {
 | 
				
			||||||
 | 
						a := [
 | 
				
			||||||
 | 
							[3, 5, 6],
 | 
				
			||||||
 | 
							[7, 9, 2]
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
						b := [[
 | 
				
			||||||
 | 
							[2, 5, 8],
 | 
				
			||||||
 | 
							[5, 1, 3],
 | 
				
			||||||
 | 
							[2, 6, 0]
 | 
				
			||||||
 | 
						], [
 | 
				
			||||||
 | 
							[9, 4, 5],
 | 
				
			||||||
 | 
							[7, 2, 3],
 | 
				
			||||||
 | 
							[1, 2, 3]
 | 
				
			||||||
 | 
						]]
 | 
				
			||||||
 | 
						c := [
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
								[2, 5, 8],
 | 
				
			||||||
 | 
								[5, 1, 3],
 | 
				
			||||||
 | 
								[2, 6, 0]
 | 
				
			||||||
 | 
							],
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
								[9, 4, 5],
 | 
				
			||||||
 | 
								[7, 2, 3],
 | 
				
			||||||
 | 
								[1, 2, 3]
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,11 +11,13 @@ eulers=2.7182
 | 
				
			||||||
supported_platforms = ['windows', 'mac', 'macos', 'darwin', 'linux', 'freebsd', 'openbsd',
 | 
					supported_platforms = ['windows', 'mac', 'macos', 'darwin', 'linux', 'freebsd', 'openbsd',
 | 
				
			||||||
		'netbsd', 'dragonfly', 'android', 'js', 'solaris', 'haiku', 'linux_or_macos']
 | 
							'netbsd', 'dragonfly', 'android', 'js', 'solaris', 'haiku', 'linux_or_macos']
 | 
				
			||||||
one_line_supported    = ['windows', 'mac', 'macos', 'darwin', 'linux', 'freebsd', 'openbsd', 'netbsd', 'dragonfly', 'android', 'js', 'solaris', 'haiku', 'linux_or_macos']
 | 
					one_line_supported    = ['windows', 'mac', 'macos', 'darwin', 'linux', 'freebsd', 'openbsd', 'netbsd', 'dragonfly', 'android', 'js', 'solaris', 'haiku', 'linux_or_macos']
 | 
				
			||||||
another_const = [
 | 
					another_const = ['a', 'b'
 | 
				
			||||||
	'a', 'b'
 | 
					 | 
				
			||||||
		'c', 'd', 'e'
 | 
							'c', 'd', 'e'
 | 
				
			||||||
		'f'
 | 
							'f'
 | 
				
			||||||
		]
 | 
							]
 | 
				
			||||||
 | 
					multiline_const = [
 | 
				
			||||||
 | 
							'first line',  'second line','third line',
 | 
				
			||||||
 | 
					  'fourth line']		
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
| 
						 | 
					@ -26,4 +28,26 @@ pub const (
 | 
				
			||||||
i_am_pub_const=true
 | 
					i_am_pub_const=true
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn main() {
 | 
				
			||||||
 | 
						a := [
 | 
				
			||||||
 | 
							[3,
 | 
				
			||||||
 | 
					5,
 | 
				
			||||||
 | 
						6],[7,  9, 2]]
 | 
				
			||||||
 | 
					b := [[
 | 
				
			||||||
 | 
					[2,
 | 
				
			||||||
 | 
					5,8],[   5,  1,
 | 
				
			||||||
 | 
					3],[ 2, 6, 0]],[
 | 
				
			||||||
 | 
					[9,
 | 
				
			||||||
 | 
					4,5],[7,2,3],
 | 
				
			||||||
 | 
					[1,
 | 
				
			||||||
 | 
					2,3]]]
 | 
				
			||||||
 | 
					c := [
 | 
				
			||||||
 | 
					[
 | 
				
			||||||
 | 
					[2,
 | 
				
			||||||
 | 
					5,8],[   5,  1,
 | 
				
			||||||
 | 
					3],[ 2, 6, 0]],[
 | 
				
			||||||
 | 
					[9,
 | 
				
			||||||
 | 
					4,5],[7,2,3],
 | 
				
			||||||
 | 
					[1,
 | 
				
			||||||
 | 
					2,3]]]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue