mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
fmt: better ternary concat wrapping (#8379)
This commit is contained in:
parent
d86cb67eda
commit
75d85403a6
@ -353,8 +353,7 @@ pub fn (input BitField) slice(_start int, _end int) BitField {
|
|||||||
if start_offset != 0 {
|
if start_offset != 0 {
|
||||||
for i in 0 .. output_slots - 1 {
|
for i in 0 .. output_slots - 1 {
|
||||||
output.field[i] = u32(input.field[start_slot + i] >> u32(start_offset))
|
output.field[i] = u32(input.field[start_slot + i] >> u32(start_offset))
|
||||||
output.field[i] = output.field[i] | u32(input.field[start_slot + i +
|
output.field[i] = output.field[i] | u32(input.field[start_slot + i + 1] << u32(bitfield.slot_size - start_offset))
|
||||||
1] << u32(bitfield.slot_size - start_offset))
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for i in 0 .. output_slots - 1 {
|
for i in 0 .. output_slots - 1 {
|
||||||
|
@ -387,16 +387,22 @@ fn test_mutli_array_clone() {
|
|||||||
mut a3_2 := a3_1.clone()
|
mut a3_2 := a3_1.clone()
|
||||||
a3_1[0][0][1] = 0
|
a3_1[0][0][1] = 0
|
||||||
a3_2[0][1][0] = 0
|
a3_2[0][1][0] = 0
|
||||||
assert a3_1 == [[[1, 0], [2, 2], [3, 3]], [[4, 4], [5, 5], [6, 6]]]
|
assert a3_1 == [[[1, 0], [2, 2], [3, 3]], [[4, 4], [5, 5],
|
||||||
assert a3_2 == [[[1, 1], [0, 2], [3, 3]], [[4, 4], [5, 5], [6, 6]]]
|
[6, 6],
|
||||||
|
]]
|
||||||
|
assert a3_2 == [[[1, 1], [0, 2], [3, 3]], [[4, 4], [5, 5],
|
||||||
|
[6, 6],
|
||||||
|
]]
|
||||||
// 3d array_string
|
// 3d array_string
|
||||||
mut b3_1 := [[['1', '1'], ['2', '2'], ['3', '3']], [['4', '4'],
|
mut b3_1 := [[['1', '1'], ['2', '2'], ['3', '3']], [['4', '4'],
|
||||||
['5', '5'], ['6', '6']]]
|
['5', '5'], ['6', '6']]]
|
||||||
mut b3_2 := b3_1.clone()
|
mut b3_2 := b3_1.clone()
|
||||||
b3_1[0][0][1] = '0'
|
b3_1[0][0][1] = '0'
|
||||||
b3_2[0][1][0] = '0'
|
b3_2[0][1][0] = '0'
|
||||||
assert b3_1 == [[['1', '0'], ['2', '2'], ['3', '3']], [['4', '4'], ['5', '5'], ['6', '6']]]
|
assert b3_1 == [[['1', '0'], ['2', '2'], ['3', '3']], [['4', '4'],
|
||||||
assert b3_2 == [[['1', '1'], ['0', '2'], ['3', '3']], [['4', '4'], ['5', '5'], ['6', '6']]]
|
['5', '5'], ['6', '6']]]
|
||||||
|
assert b3_2 == [[['1', '1'], ['0', '2'], ['3', '3']], [['4', '4'],
|
||||||
|
['5', '5'], ['6', '6']]]
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_doubling() {
|
fn test_doubling() {
|
||||||
|
@ -87,12 +87,14 @@ fn test_format_ss() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn test_format_ss_milli() {
|
fn test_format_ss_milli() {
|
||||||
assert '11.07.1980 21:23:42.123' == time_to_test.get_fmt_str(.dot, .hhmmss24_milli, .ddmmyyyy)
|
assert '11.07.1980 21:23:42.123' == time_to_test.get_fmt_str(.dot, .hhmmss24_milli,
|
||||||
|
.ddmmyyyy)
|
||||||
assert '1980-07-11 21:23:42.123' == time_to_test.format_ss_milli()
|
assert '1980-07-11 21:23:42.123' == time_to_test.format_ss_milli()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_format_ss_micro() {
|
fn test_format_ss_micro() {
|
||||||
assert '11.07.1980 21:23:42.123456' == time_to_test.get_fmt_str(.dot, .hhmmss24_micro, .ddmmyyyy)
|
assert '11.07.1980 21:23:42.123456' == time_to_test.get_fmt_str(.dot, .hhmmss24_micro,
|
||||||
|
.ddmmyyyy)
|
||||||
assert '1980-07-11 21:23:42.123456' == time_to_test.format_ss_micro()
|
assert '1980-07-11 21:23:42.123456' == time_to_test.format_ss_micro()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,9 +188,11 @@ pub fn (v Builder) get_builtin_files() []string {
|
|||||||
if os.exists(os.join_path(location, 'builtin')) {
|
if os.exists(os.join_path(location, 'builtin')) {
|
||||||
mut builtin_files := []string{}
|
mut builtin_files := []string{}
|
||||||
if v.pref.is_bare {
|
if v.pref.is_bare {
|
||||||
builtin_files << v.v_files_from_dir(os.join_path(location, 'builtin', 'bare'))
|
builtin_files << v.v_files_from_dir(os.join_path(location, 'builtin',
|
||||||
|
'bare'))
|
||||||
} else if v.pref.backend == .js {
|
} else if v.pref.backend == .js {
|
||||||
builtin_files << v.v_files_from_dir(os.join_path(location, 'builtin', 'js'))
|
builtin_files << v.v_files_from_dir(os.join_path(location, 'builtin',
|
||||||
|
'js'))
|
||||||
} else {
|
} else {
|
||||||
builtin_files << v.v_files_from_dir(os.join_path(location, 'builtin'))
|
builtin_files << v.v_files_from_dir(os.join_path(location, 'builtin'))
|
||||||
}
|
}
|
||||||
|
@ -2409,7 +2409,8 @@ pub fn (mut c Checker) assign_stmt(mut assign_stmt ast.AssignStmt) {
|
|||||||
if assign_stmt.right_types.len < assign_stmt.left.len { // first type or multi return types added above
|
if assign_stmt.right_types.len < assign_stmt.left.len { // first type or multi return types added above
|
||||||
right_type := c.expr(assign_stmt.right[i])
|
right_type := c.expr(assign_stmt.right[i])
|
||||||
if assign_stmt.right_types.len == i {
|
if assign_stmt.right_types.len == i {
|
||||||
assign_stmt.right_types << c.check_expr_opt_call(assign_stmt.right[i], right_type)
|
assign_stmt.right_types << c.check_expr_opt_call(assign_stmt.right[i],
|
||||||
|
right_type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
right := if i < assign_stmt.right.len { assign_stmt.right[i] } else { assign_stmt.right[0] }
|
right := if i < assign_stmt.right.len { assign_stmt.right[i] } else { assign_stmt.right[0] }
|
||||||
|
@ -695,8 +695,7 @@ pub fn (mut f Fmt) struct_decl(node ast.StructDecl) {
|
|||||||
comment_align_i++
|
comment_align_i++
|
||||||
align = comment_aligns[comment_align_i]
|
align = comment_aligns[comment_align_i]
|
||||||
}
|
}
|
||||||
pad_len := align.max_attrs_len - attrs_len +
|
pad_len := align.max_attrs_len - attrs_len + align.max_type_len - field_types[i].len
|
||||||
align.max_type_len - field_types[i].len
|
|
||||||
f.write(strings.repeat(` `, pad_len))
|
f.write(strings.repeat(` `, pad_len))
|
||||||
}
|
}
|
||||||
f.write(' ')
|
f.write(' ')
|
||||||
@ -1449,7 +1448,7 @@ pub fn (mut f Fmt) lock_expr(lex ast.LockExpr) {
|
|||||||
|
|
||||||
pub fn (mut f Fmt) infix_expr(node ast.InfixExpr) {
|
pub fn (mut f Fmt) infix_expr(node ast.InfixExpr) {
|
||||||
buffering_save := f.buffering
|
buffering_save := f.buffering
|
||||||
if !f.buffering {
|
if !f.buffering && node.op in [.logical_or, .and, .plus] {
|
||||||
f.buffering = true
|
f.buffering = true
|
||||||
}
|
}
|
||||||
if node.op == .left_shift {
|
if node.op == .left_shift {
|
||||||
@ -1587,8 +1586,9 @@ pub fn (mut f Fmt) if_expr(it ast.IfExpr) {
|
|||||||
f.write(' ')
|
f.write(' ')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// When a single line if is really long, write it again as multiline
|
// When a single line if is really long, write it again as multiline,
|
||||||
if single_line && f.line_len > fmt.max_len.last() {
|
// except it is part of an InfixExpr.
|
||||||
|
if single_line && f.line_len > fmt.max_len.last() && !f.buffering {
|
||||||
single_line = false
|
single_line = false
|
||||||
f.single_line_if = false
|
f.single_line_if = false
|
||||||
f.out.go_back(f.line_len - if_start)
|
f.out.go_back(f.line_len - if_start)
|
||||||
|
@ -15,3 +15,10 @@ fn concat_inside_ternary() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn concat_two_or_more_ternaries() {
|
||||||
|
x := if some_condition { 'very long string part' } else { 'def' } +
|
||||||
|
if y == 'asd' { 'qwe' } else { 'something else' }
|
||||||
|
var := if other_condition { 'concat three long ternary ifs' } else { 'def' } +
|
||||||
|
if true { 'shorter' } else { 'quite short' } + if true { 'small' } else { 'tiny' }
|
||||||
|
}
|
||||||
|
@ -15,3 +15,8 @@ fn concat_inside_ternary() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn concat_two_or_more_ternaries() {
|
||||||
|
x := if some_condition { 'very long string part' } else { 'def' } + if y == 'asd' { 'qwe' } else {'something else'}
|
||||||
|
var := if other_condition { 'concat three long ternary ifs' } else { 'def' } + if true {'shorter'} else {'quite short'} + if true { 'small' } else {'tiny'}
|
||||||
|
}
|
||||||
|
@ -40,7 +40,9 @@ fn (g &Gen) type_to_fmt(typ table.Type) string {
|
|||||||
sym := g.table.get_type_symbol(typ)
|
sym := g.table.get_type_symbol(typ)
|
||||||
if typ.is_ptr() && (typ.is_int() || typ.is_float()) {
|
if typ.is_ptr() && (typ.is_int() || typ.is_float()) {
|
||||||
return '%.*s\\000'
|
return '%.*s\\000'
|
||||||
} else if sym.kind in [.struct_, .array, .array_fixed, .map, .bool, .enum_, .interface_, .sum_type, .function] {
|
} else if sym.kind in [.struct_, .array, .array_fixed, .map, .bool, .enum_, .interface_, .sum_type,
|
||||||
|
.function,
|
||||||
|
] {
|
||||||
return '%.*s\\000'
|
return '%.*s\\000'
|
||||||
} else if sym.kind == .string {
|
} else if sym.kind == .string {
|
||||||
return "'%.*s\\000'"
|
return "'%.*s\\000'"
|
||||||
|
@ -202,7 +202,9 @@ fn js_dec_name(typ string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn is_js_prim(typ string) bool {
|
fn is_js_prim(typ string) bool {
|
||||||
return typ in ['int', 'string', 'bool', 'f32', 'f64', 'i8', 'i16', 'i64', 'u16', 'u32', 'u64', 'byte']
|
return typ in ['int', 'string', 'bool', 'f32', 'f64', 'i8', 'i16', 'i64', 'u16', 'u32', 'u64',
|
||||||
|
'byte',
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut g Gen) decode_array(value_type table.Type) string {
|
fn (mut g Gen) decode_array(value_type table.Type) string {
|
||||||
|
@ -12,7 +12,8 @@ pub fn find_working_diff_command() ?string {
|
|||||||
if env_difftool.len > 0 {
|
if env_difftool.len > 0 {
|
||||||
known_diff_tools << env_difftool
|
known_diff_tools << env_difftool
|
||||||
}
|
}
|
||||||
known_diff_tools << ['colordiff', 'gdiff', 'diff', 'colordiff.exe', 'diff.exe', 'opendiff', 'code', 'code.cmd']
|
known_diff_tools << ['colordiff', 'gdiff', 'diff', 'colordiff.exe', 'diff.exe', 'opendiff',
|
||||||
|
'code', 'code.cmd']
|
||||||
// NOTE: code.cmd is the Windows variant of the `code` cli tool
|
// NOTE: code.cmd is the Windows variant of the `code` cli tool
|
||||||
for diffcmd in known_diff_tools {
|
for diffcmd in known_diff_tools {
|
||||||
if diffcmd == 'opendiff' { // opendiff has no `--version` option
|
if diffcmd == 'opendiff' { // opendiff has no `--version` option
|
||||||
|
@ -232,11 +232,8 @@ pub fn (mut ws Client) write_ptr(bytes byteptr, payload_len int, code OPCode) ?
|
|||||||
// todo: send error here later
|
// todo: send error here later
|
||||||
return error('trying to write on a closed socket!')
|
return error('trying to write on a closed socket!')
|
||||||
}
|
}
|
||||||
mut header_len := 2 + if payload_len > 125 { 2 } else { 0 } + if payload_len > 0xffff {
|
mut header_len := 2 + if payload_len > 125 { 2 } else { 0 } +
|
||||||
6
|
if payload_len > 0xffff { 6 } else { 0 }
|
||||||
} else {
|
|
||||||
0
|
|
||||||
}
|
|
||||||
if !ws.is_server {
|
if !ws.is_server {
|
||||||
header_len += 4
|
header_len += 4
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user