From 3247b98bb52b92c0bdad279edafc0472e47cd7bd Mon Sep 17 00:00:00 2001 From: yuyi Date: Tue, 6 Aug 2024 22:42:24 +0800 Subject: [PATCH] ast: fix const field str() (#21998) --- vlib/encoding/csv/csv_reader_random_access.v | 8 ++-- vlib/net/http/header.v | 2 +- vlib/sokol/gfx/gfx_structs.c.v | 2 +- vlib/sokol/sapp/sapp_structs.c.v | 40 +++++++++---------- vlib/term/termios/termios_android.c.v | 4 +- vlib/term/termios/termios_darwin.c.v | 4 +- vlib/term/termios/termios_dragonfly.c.v | 4 +- vlib/term/termios/termios_freebsd.c.v | 4 +- vlib/term/termios/termios_linux.c.v | 4 +- vlib/term/termios/termios_openbsd.c.v | 4 +- vlib/term/termios/termios_qnx.c.v | 4 +- vlib/term/termios/termios_solaris.c.v | 4 +- vlib/term/ui/input_windows.c.v | 2 +- vlib/v/ast/str.v | 6 +++ ...h_const_default_value_and_comments_keep.vv | 34 ++++++++++++++++ vlib/v/gen/native/pe.v | 4 +- 16 files changed, 85 insertions(+), 45 deletions(-) create mode 100644 vlib/v/fmt/tests/struct_decl_with_const_default_value_and_comments_keep.vv diff --git a/vlib/encoding/csv/csv_reader_random_access.v b/vlib/encoding/csv/csv_reader_random_access.v index e4e0b4005e..fd4d8e6c8e 100644 --- a/vlib/encoding/csv/csv_reader_random_access.v +++ b/vlib/encoding/csv/csv_reader_random_access.v @@ -56,9 +56,9 @@ pub mut: end_line u8 = `\n` end_line_len int = csv.endline_cr_len // size of the endline rune \n = 1, \r\n = 2 - separator u8 = `,` // comma is the default separator - separator_len int = 1 // size of the separator rune - quote u8 = `"` // double quote is the standard quote char + separator u8 = `,` // comma is the default separator + separator_len int = 1 // size of the separator rune + quote u8 = `"` // double quote is the standard quote char quote_remove bool // if true clear the cell from the quotes comment u8 = `#` // every line that start with the quote char is ignored @@ -92,7 +92,7 @@ pub: default_cell string = '*' // return this string if out of the csv boundaries empty_cell string // return this string if empty cell end_line_len int = csv.endline_cr_len // size of the endline rune - quote u8 = `"` // double quote is the standard quote char + quote u8 = `"` // double quote is the standard quote char quote_remove bool // if true clear the cell from the quotes } diff --git a/vlib/net/http/header.v b/vlib/net/http/header.v index 2ce6f067b3..12e6271a77 100644 --- a/vlib/net/http/header.v +++ b/vlib/net/http/header.v @@ -17,7 +17,7 @@ pub const max_headers = 50 pub struct Header { pub mut: // data map[string][]string - data [max_headers]HeaderKV + data [http.max_headers]HeaderKV mut: cur_pos int // map of lowercase header keys to their original keys diff --git a/vlib/sokol/gfx/gfx_structs.c.v b/vlib/sokol/gfx/gfx_structs.c.v index 1bea7ac6e6..99a057f6d1 100644 --- a/vlib/sokol/gfx/gfx_structs.c.v +++ b/vlib/sokol/gfx/gfx_structs.c.v @@ -769,7 +769,7 @@ pub const sg_max_mipmaps = 16 pub struct C.sg_image_data { pub mut: - subimage [sg_cubeface_num][sg_max_mipmaps]Range + subimage [gfx.sg_cubeface_num][gfx.sg_max_mipmaps]Range } pub type ImageData = C.sg_image_data diff --git a/vlib/sokol/sapp/sapp_structs.c.v b/vlib/sokol/sapp/sapp_structs.c.v index 1a9fd368df..3eb11740a6 100644 --- a/vlib/sokol/sapp/sapp_structs.c.v +++ b/vlib/sokol/sapp/sapp_structs.c.v @@ -29,7 +29,7 @@ pub type ImageDesc = C.sapp_image_desc pub struct C.sapp_icon_desc { pub: sokol_default bool - images [max_iconimages]ImageDesc + images [sapp.max_iconimages]ImageDesc } pub type IconDesc = C.sapp_icon_desc @@ -89,25 +89,25 @@ pub type Desc = C.sapp_desc @[typedef] pub struct C.sapp_event { pub: - frame_count u64 // current frame counter, always valid, useful for checking if two events were issued in the same frame - @type EventType // the event type, always valid - key_code KeyCode // the virtual key code, only valid in KEY_UP, KEY_DOWN - char_code u32 // the UTF-32 character code, only valid in CHAR events - key_repeat bool // true if this is a key-repeat event, valid in KEY_UP, KEY_DOWN and CHAR - modifiers u32 // current modifier keys, valid in all key-, char- and mouse-events - mouse_button MouseButton // mouse button that was pressed or released, valid in MOUSE_DOWN, MOUSE_UP - mouse_x f32 // current horizontal mouse position in pixels, always valid except during mouse lock - mouse_y f32 // current vertical mouse position in pixels, always valid except during mouse lock - mouse_dx f32 // relative horizontal mouse movement since last frame, always valid - mouse_dy f32 // relative vertical mouse movement since last frame, always valid - scroll_x f32 // horizontal mouse wheel scroll distance, valid in MOUSE_SCROLL events - scroll_y f32 // vertical mouse wheel scroll distance, valid in MOUSE_SCROLL events - num_touches int // number of valid items in the touches[] array - touches [max_touchpoints]TouchPoint // current touch points, valid in TOUCHES_BEGIN, TOUCHES_MOVED, TOUCHES_ENDED - window_width int // current window- and framebuffer width in pixels, always valid - window_height int // current window- and framebuffer height in pixels, always valid - framebuffer_width int // = window_width * dpi_scale - framebuffer_height int // = window_height * dpi_scale + frame_count u64 // current frame counter, always valid, useful for checking if two events were issued in the same frame + @type EventType // the event type, always valid + key_code KeyCode // the virtual key code, only valid in KEY_UP, KEY_DOWN + char_code u32 // the UTF-32 character code, only valid in CHAR events + key_repeat bool // true if this is a key-repeat event, valid in KEY_UP, KEY_DOWN and CHAR + modifiers u32 // current modifier keys, valid in all key-, char- and mouse-events + mouse_button MouseButton // mouse button that was pressed or released, valid in MOUSE_DOWN, MOUSE_UP + mouse_x f32 // current horizontal mouse position in pixels, always valid except during mouse lock + mouse_y f32 // current vertical mouse position in pixels, always valid except during mouse lock + mouse_dx f32 // relative horizontal mouse movement since last frame, always valid + mouse_dy f32 // relative vertical mouse movement since last frame, always valid + scroll_x f32 // horizontal mouse wheel scroll distance, valid in MOUSE_SCROLL events + scroll_y f32 // vertical mouse wheel scroll distance, valid in MOUSE_SCROLL events + num_touches int // number of valid items in the touches[] array + touches [sapp.max_touchpoints]TouchPoint // current touch points, valid in TOUCHES_BEGIN, TOUCHES_MOVED, TOUCHES_ENDED + window_width int // current window- and framebuffer width in pixels, always valid + window_height int // current window- and framebuffer height in pixels, always valid + framebuffer_width int // = window_width * dpi_scale + framebuffer_height int // = window_height * dpi_scale } pub type Event = C.sapp_event diff --git a/vlib/term/termios/termios_android.c.v b/vlib/term/termios/termios_android.c.v index adf7c5c16a..946861cdf3 100644 --- a/vlib/term/termios/termios_android.c.v +++ b/vlib/term/termios/termios_android.c.v @@ -26,7 +26,7 @@ mut: c_cflag TcFlag c_lflag TcFlag c_line Cc - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } @@ -58,7 +58,7 @@ pub mut: c_cflag TcFlag c_lflag TcFlag c_line Cc - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } diff --git a/vlib/term/termios/termios_darwin.c.v b/vlib/term/termios/termios_darwin.c.v index 630c2c1ef4..7e218a2d81 100644 --- a/vlib/term/termios/termios_darwin.c.v +++ b/vlib/term/termios/termios_darwin.c.v @@ -25,7 +25,7 @@ mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } @@ -56,7 +56,7 @@ pub mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } diff --git a/vlib/term/termios/termios_dragonfly.c.v b/vlib/term/termios/termios_dragonfly.c.v index d81de6e1e2..4cdbf9f549 100644 --- a/vlib/term/termios/termios_dragonfly.c.v +++ b/vlib/term/termios/termios_dragonfly.c.v @@ -25,7 +25,7 @@ mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } @@ -56,7 +56,7 @@ pub mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } diff --git a/vlib/term/termios/termios_freebsd.c.v b/vlib/term/termios/termios_freebsd.c.v index 731cbb1948..9a147ef81e 100644 --- a/vlib/term/termios/termios_freebsd.c.v +++ b/vlib/term/termios/termios_freebsd.c.v @@ -25,7 +25,7 @@ mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } @@ -56,7 +56,7 @@ pub mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } diff --git a/vlib/term/termios/termios_linux.c.v b/vlib/term/termios/termios_linux.c.v index adf7c5c16a..946861cdf3 100644 --- a/vlib/term/termios/termios_linux.c.v +++ b/vlib/term/termios/termios_linux.c.v @@ -26,7 +26,7 @@ mut: c_cflag TcFlag c_lflag TcFlag c_line Cc - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } @@ -58,7 +58,7 @@ pub mut: c_cflag TcFlag c_lflag TcFlag c_line Cc - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } diff --git a/vlib/term/termios/termios_openbsd.c.v b/vlib/term/termios/termios_openbsd.c.v index dff4b25d84..b59e90925e 100644 --- a/vlib/term/termios/termios_openbsd.c.v +++ b/vlib/term/termios/termios_openbsd.c.v @@ -25,7 +25,7 @@ mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } @@ -56,7 +56,7 @@ pub mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc c_ispeed Speed c_ospeed Speed } diff --git a/vlib/term/termios/termios_qnx.c.v b/vlib/term/termios/termios_qnx.c.v index 7323559667..321c9e02d8 100644 --- a/vlib/term/termios/termios_qnx.c.v +++ b/vlib/term/termios/termios_qnx.c.v @@ -25,7 +25,7 @@ mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc reserved [3]u32 c_ispeed Speed c_ospeed Speed @@ -57,7 +57,7 @@ pub mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc reserved [3]u32 c_ispeed Speed c_ospeed Speed diff --git a/vlib/term/termios/termios_solaris.c.v b/vlib/term/termios/termios_solaris.c.v index e9f20b66ec..f3691f8bde 100644 --- a/vlib/term/termios/termios_solaris.c.v +++ b/vlib/term/termios/termios_solaris.c.v @@ -25,7 +25,7 @@ mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc } fn C.tcgetattr(fd int, termios_p &C.termios) int @@ -54,7 +54,7 @@ pub mut: c_oflag TcFlag c_cflag TcFlag c_lflag TcFlag - c_cc [cclen]Cc + c_cc [termios.cclen]Cc } // tcgetattr is an unsafe wrapper around C.termios and keeps its semantic diff --git a/vlib/term/ui/input_windows.c.v b/vlib/term/ui/input_windows.c.v index beaeeeb4f1..89ad31b779 100644 --- a/vlib/term/ui/input_windows.c.v +++ b/vlib/term/ui/input_windows.c.v @@ -17,7 +17,7 @@ struct ExtraContext { mut: stdin_handle C.HANDLE stdout_handle C.HANDLE - read_buf [buf_size]C.INPUT_RECORD + read_buf [ui.buf_size]C.INPUT_RECORD mouse_down MouseButton } diff --git a/vlib/v/ast/str.v b/vlib/v/ast/str.v index e47f81fbe2..745feadf5d 100644 --- a/vlib/v/ast/str.v +++ b/vlib/v/ast/str.v @@ -498,6 +498,12 @@ pub fn (x Expr) str() string { return 'spawn ${x.call_expr}' } Ident { + if obj := x.scope.find('${x.mod}.${x.name}') { + if obj is ConstField && x.mod != 'main' { + last_mod := x.mod.all_after_last('.') + return '${last_mod}.${x.name}' + } + } return x.name.clone() } IfExpr { diff --git a/vlib/v/fmt/tests/struct_decl_with_const_default_value_and_comments_keep.vv b/vlib/v/fmt/tests/struct_decl_with_const_default_value_and_comments_keep.vv new file mode 100644 index 0000000000..5b38508ed2 --- /dev/null +++ b/vlib/v/fmt/tests/struct_decl_with_const_default_value_and_comments_keep.vv @@ -0,0 +1,34 @@ +module foo + +pub const endline_cr_len = 1 + +pub struct RandomAccessReader { +pub mut: + index i64 + + start_index i64 + end_index i64 = -1 + + end_line u8 = `\n` + end_line_len int = foo.endline_cr_len // size of the endline rune \n = 1, \r\n = 2 + separator u8 = `,` // comma is the default separator + separator_len int = 1 // size of the separator rune + quote u8 = `"` // double quote is the standard quote char + quote_remove bool // if true clear the cell from the quotes + comment u8 = `#` // every line that start with the quote char is ignored + + default_cell string = '*' // return this string if out of the csv boundaries + empty_cell string = '#' // retunrn this if empty cell + // ram buffer + mem_buf_type u32 // buffer type 0=File,1=RAM + mem_buf voidptr // buffer used to load chars from file + mem_buf_size i64 // size of the buffer + mem_buf_start i64 = -1 // start index in the file of the read buffer + mem_buf_end i64 = -1 // end index in the file of the read buffer + // csv map for quick access + csv_map [][]i64 + // header + header_row int = -1 // row index of the header in the csv_map + header_list []HeaderItem // list of the header item + header_map map[string]int // map from header label to column index +} diff --git a/vlib/v/gen/native/pe.v b/vlib/v/gen/native/pe.v index 957d73a64f..181253896d 100644 --- a/vlib/v/gen/native/pe.v +++ b/vlib/v/gen/native/pe.v @@ -372,8 +372,8 @@ struct PeDataDir { struct PeDataDirs { mut: - debugnames [pe_num_data_dirs]string - dirs [pe_num_data_dirs]PeDataDir + debugnames [native.pe_num_data_dirs]string + dirs [native.pe_num_data_dirs]PeDataDir base_addr i64 }