ci: fix v vet call; fmt: fix SizeOf
							parent
							
								
									66f36f6dcc
								
							
						
					
					
						commit
						2716a37916
					
				|  | @ -42,7 +42,7 @@ jobs: | ||||||
|       run: ./v test-fixed |       run: ./v test-fixed | ||||||
|     - name: Test building v tools |     - name: Test building v tools | ||||||
|       run: ./v build-tools |       run: ./v build-tools | ||||||
|     - name: v vet |     - name: ./v vet | ||||||
|       run: | |       run: | | ||||||
|         v vet vlib/v/parser |         v vet vlib/v/parser | ||||||
|         v vet vlib/v/ast |         v vet vlib/v/ast | ||||||
|  |  | ||||||
|  | @ -186,6 +186,7 @@ pub struct StructInitField { | ||||||
| pub: | pub: | ||||||
| 	expr          Expr | 	expr          Expr | ||||||
| 	pos           token.Position | 	pos           token.Position | ||||||
|  | 	comment       Comment | ||||||
| pub mut: | pub mut: | ||||||
| 	name          string | 	name          string | ||||||
| 	typ           table.Type | 	typ           table.Type | ||||||
|  | @ -1011,6 +1012,7 @@ pub fn (stmt Stmt) position() token.Position { | ||||||
| 		// UnsafeStmt {
 | 		// UnsafeStmt {
 | ||||||
| 		// }
 | 		// }
 | ||||||
| 		*/ | 		*/ | ||||||
|  | 		//
 | ||||||
| 		else { return token.Position{} } | 		else { return token.Position{} } | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -145,13 +145,14 @@ pub fn (mut f Fmt) writeln(s string) { | ||||||
| fn (mut f Fmt) adjust_complete_line() { | fn (mut f Fmt) adjust_complete_line() { | ||||||
| 	for i, buf in f.expr_bufs { | 	for i, buf in f.expr_bufs { | ||||||
| 		// search for low penalties
 | 		// search for low penalties
 | ||||||
| 		if i == 0 || f.penalties[i-1] <= 1 { | 		if i == 0 || f.penalties[i - 1] <= 1 { | ||||||
| 			precedence := if i == 0 { -1 } else { f.precedences[i-1] } | 			precedence := if i == 0 { -1 } else { f.precedences[i - 1] } | ||||||
| 			mut len_sub_expr := if i == 0 { buf.len + f.line_len } else { buf.len } | 			mut len_sub_expr := if i == 0 { buf.len + f.line_len } else { buf.len } | ||||||
| 			mut sub_expr_end_idx := f.penalties.len | 			mut sub_expr_end_idx := f.penalties.len | ||||||
| 			// search for next position with low penalty and same precedence to form subexpression
 | 			// search for next position with low penalty and same precedence to form subexpression
 | ||||||
| 			for j in i..f.penalties.len { | 			for j in i .. f.penalties.len { | ||||||
| 				if f.penalties[j] <= 1 && f.precedences[j] == precedence && len_sub_expr >= max_len[1] { | 				if f.penalties[j] <= 1 && | ||||||
|  | 					f.precedences[j] == precedence && len_sub_expr >= max_len[1] { | ||||||
| 					sub_expr_end_idx = j | 					sub_expr_end_idx = j | ||||||
| 					break | 					break | ||||||
| 				} else if f.precedences[j] < precedence { | 				} else if f.precedences[j] < precedence { | ||||||
|  | @ -159,16 +160,16 @@ fn (mut f Fmt) adjust_complete_line() { | ||||||
| 					len_sub_expr = C.INT32_MAX | 					len_sub_expr = C.INT32_MAX | ||||||
| 					break | 					break | ||||||
| 				} else { | 				} else { | ||||||
| 					len_sub_expr += f.expr_bufs[j+1].len | 					len_sub_expr += f.expr_bufs[j + 1].len | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 			// if subexpression would fit in single line adjust penalties to actually do so
 | 			// if subexpression would fit in single line adjust penalties to actually do so
 | ||||||
| 			if len_sub_expr <= max_len[max_len.len-1] { | 			if len_sub_expr <= max_len[max_len.len - 1] { | ||||||
| 				for j in i..sub_expr_end_idx { | 				for j in i .. sub_expr_end_idx { | ||||||
| 					f.penalties[j] = max_len.len-1 | 					f.penalties[j] = max_len.len - 1 | ||||||
| 				} | 				} | ||||||
| 				if i > 0 { | 				if i > 0 { | ||||||
| 					f.penalties[i-1] = 0 | 					f.penalties[i - 1] = 0 | ||||||
| 				} | 				} | ||||||
| 				if sub_expr_end_idx < f.penalties.len { | 				if sub_expr_end_idx < f.penalties.len { | ||||||
| 					f.penalties[sub_expr_end_idx] = 0 | 					f.penalties[sub_expr_end_idx] = 0 | ||||||
|  | @ -176,8 +177,8 @@ fn (mut f Fmt) adjust_complete_line() { | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		// emergency fallback: decrease penalty in front of long unbreakable parts
 | 		// emergency fallback: decrease penalty in front of long unbreakable parts
 | ||||||
| 		if i > 0 && buf.len > max_len[3] - max_len[1] && f.penalties[i-1] > 0 { | 		if i > 0 && buf.len > max_len[3] - max_len[1] && f.penalties[i - 1] > 0 { | ||||||
| 			f.penalties[i-1] = if buf.len >= max_len[2] { 0 } else { 1 } | 			f.penalties[i - 1] = if buf.len >= max_len[2] { 0 } else { 1 } | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -892,7 +893,7 @@ pub fn (mut f Fmt) expr(node ast.Expr) { | ||||||
| 			if node.is_type { | 			if node.is_type { | ||||||
| 				f.write('sizeof(') | 				f.write('sizeof(') | ||||||
| 				if node.type_name != '' { | 				if node.type_name != '' { | ||||||
| 					f.write(node.type_name) | 					f.write(f.short_module(node.type_name)) | ||||||
| 				} else { | 				} else { | ||||||
| 					f.write(f.type_to_str(node.typ)) | 					f.write(f.type_to_str(node.typ)) | ||||||
| 				} | 				} | ||||||
|  | @ -1136,8 +1137,7 @@ pub fn (mut f Fmt) short_module(name string) string { | ||||||
| 
 | 
 | ||||||
| pub fn (mut f Fmt) if_expr(it ast.IfExpr) { | pub fn (mut f Fmt) if_expr(it ast.IfExpr) { | ||||||
| 	single_line := it.branches.len == 2 && it.has_else && | 	single_line := it.branches.len == 2 && it.has_else && | ||||||
| 		it.branches[0].stmts.len == 1 && | 		it.branches[0].stmts.len == 1 && it.branches[1].stmts.len == 1 && | ||||||
| 		it.branches[1].stmts.len == 1 && |  | ||||||
| 		(it.is_expr || f.is_assign) | 		(it.is_expr || f.is_assign) | ||||||
| 	f.single_line_if = single_line | 	f.single_line_if = single_line | ||||||
| 	for i, branch in it.branches { | 	for i, branch in it.branches { | ||||||
|  | @ -1435,10 +1435,10 @@ pub fn (mut f Fmt) array_init(it ast.ArrayInit) { | ||||||
| 		if last_line_nr < line_nr { | 		if last_line_nr < line_nr { | ||||||
| 			penalty-- | 			penalty-- | ||||||
| 		} | 		} | ||||||
| 		if i == 0 || it.exprs[i - 1] is ast.ArrayInit || | 		if i == 0 || | ||||||
|  | 			it.exprs[i - 1] is ast.ArrayInit || | ||||||
| 			it.exprs[i - 1] is ast.StructInit || | 			it.exprs[i - 1] is ast.StructInit || | ||||||
| 			it.exprs[i - 1] is ast.MapInit || | 			it.exprs[i - 1] is ast.MapInit || it.exprs[i - 1] is ast.CallExpr { | ||||||
| 			it.exprs[i - 1] is ast.CallExpr { |  | ||||||
| 			penalty-- | 			penalty-- | ||||||
| 		} | 		} | ||||||
| 		if expr is ast.ArrayInit || | 		if expr is ast.ArrayInit || | ||||||
|  |  | ||||||
|  | @ -5,8 +5,12 @@ struct User { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|  | 	u := User{ | ||||||
|  | 		name: 'Peter' | ||||||
|  | 	} | ||||||
| 	if true { | 	if true { | ||||||
| 	} | 	} | ||||||
|  | 	n := sizeof(User) | ||||||
| 	// else
 | 	// else
 | ||||||
| 	// else {
 | 	// else {
 | ||||||
| 	// }
 | 	// }
 | ||||||
|  |  | ||||||
|  | @ -32,12 +32,12 @@ fn (mut p Parser) struct_decl() ast.StructDecl { | ||||||
| 		p.next() // C || JS
 | 		p.next() // C || JS
 | ||||||
| 		p.next() // .
 | 		p.next() // .
 | ||||||
| 	} | 	} | ||||||
| 	 |  | ||||||
| 	is_typedef := 'typedef' in p.attrs | 	is_typedef := 'typedef' in p.attrs | ||||||
| 	end_pos := p.tok.position() | 	end_pos := p.tok.position() | ||||||
| 	mut name := p.check_name() | 	mut name := p.check_name() | ||||||
| 	if name.len == 1 && name[0].is_capital() { | 	if name.len == 1 && name[0].is_capital() { | ||||||
| 		p.error_with_pos('single letter capital names are reserved for generic template types.', end_pos) | 		p.error_with_pos('single letter capital names are reserved for generic template types.', | ||||||
|  | 			end_pos) | ||||||
| 	} | 	} | ||||||
| 	mut generic_types := []table.Type{} | 	mut generic_types := []table.Type{} | ||||||
| 	if p.tok.kind == .lt { | 	if p.tok.kind == .lt { | ||||||
|  | @ -51,12 +51,10 @@ fn (mut p Parser) struct_decl() ast.StructDecl { | ||||||
| 		} | 		} | ||||||
| 		p.check(.gt) | 		p.check(.gt) | ||||||
| 	} | 	} | ||||||
| 
 |  | ||||||
| 	no_body := p.tok.kind != .lcbr | 	no_body := p.tok.kind != .lcbr | ||||||
| 	if language == .v && no_body { | 	if language == .v && no_body { | ||||||
| 		p.error('`$p.tok.lit` lacks body') | 		p.error('`$p.tok.lit` lacks body') | ||||||
| 	} | 	} | ||||||
| 
 |  | ||||||
| 	if language == .v && p.mod != 'builtin' && name.len > 0 && !name[0].is_capital() { | 	if language == .v && p.mod != 'builtin' && name.len > 0 && !name[0].is_capital() { | ||||||
| 		p.error_with_pos('struct name `$name` must begin with capital letter', end_pos) | 		p.error_with_pos('struct name `$name` must begin with capital letter', end_pos) | ||||||
| 	} | 	} | ||||||
|  | @ -282,7 +280,7 @@ fn (mut p Parser) struct_init(short_syntax bool) ast.StructInit { | ||||||
| 	saved_is_amp := p.is_amp | 	saved_is_amp := p.is_amp | ||||||
| 	p.is_amp = false | 	p.is_amp = false | ||||||
| 	for p.tok.kind != .rcbr && p.tok.kind != .rpar { | 	for p.tok.kind != .rcbr && p.tok.kind != .rpar { | ||||||
| 		p.check_comment() | 		comment := p.check_comment() | ||||||
| 		mut field_name := '' | 		mut field_name := '' | ||||||
| 		if no_keys { | 		if no_keys { | ||||||
| 			expr := p.expr(0) | 			expr := p.expr(0) | ||||||
|  | @ -290,6 +288,7 @@ fn (mut p Parser) struct_init(short_syntax bool) ast.StructInit { | ||||||
| 			fields << ast.StructInitField{ | 			fields << ast.StructInitField{ | ||||||
| 				expr: expr | 				expr: expr | ||||||
| 				pos: expr.position() | 				pos: expr.position() | ||||||
|  | 				comment: comment | ||||||
| 			} | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			first_field_pos := p.tok.position() | 			first_field_pos := p.tok.position() | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue