parent
							
								
									39bb6f0491
								
							
						
					
					
						commit
						a1c67232d0
					
				|  | @ -18,21 +18,21 @@ fn get_vexe_path() string { | |||
| 	} | ||||
| 	me := os.executable() | ||||
| 	eprintln('me: $me') | ||||
| 	mut vexe := os.join_path(os.dir(os.dir(os.dir(me))), 'v') | ||||
| 	mut vexe_ := os.join_path(os.dir(os.dir(os.dir(me))), 'v') | ||||
| 	if os.user_os() == 'windows' { | ||||
| 		vexe += '.exe' | ||||
| 		vexe_ += '.exe' | ||||
| 	} | ||||
| 	return vexe | ||||
| 	return vexe_ | ||||
| } | ||||
| 
 | ||||
| fn new_tdir() string { | ||||
| 	tdir := os.join_path(os.temp_dir(), rand.ulid()) | ||||
| 	if os.exists(tdir) { | ||||
| 		os.rmdir(tdir) | ||||
| 	tdir_ := os.join_path(os.temp_dir(), rand.ulid()) | ||||
| 	if os.exists(tdir_) { | ||||
| 		os.rmdir(tdir_) | ||||
| 	} | ||||
| 	os.mkdir(tdir) | ||||
| 	os.mkdir(tdir_) | ||||
| 	C.atexit(cleanup_tdir) | ||||
| 	return tdir | ||||
| 	return tdir_ | ||||
| } | ||||
| 
 | ||||
| fn cleanup_tdir() { | ||||
|  |  | |||
|  | @ -950,12 +950,12 @@ fn main() { | |||
| 	$if android { | ||||
| 		font_path = 'fonts/RobotoMono-Regular.ttf' | ||||
| 	} | ||||
| 	mut window_title := 'V 2048' | ||||
| 	mut window_title_ := 'V 2048' | ||||
| 	// TODO: Make emcc a real platform ifdef
 | ||||
| 	$if emscripten ? { | ||||
| 		// in emscripten, sokol uses `window_title` as the selector to the canvas it'll render to,
 | ||||
| 		// and since `document.querySelector('V 2048')` isn't valid JS, we use `canvas` instead
 | ||||
| 		window_title = 'canvas' | ||||
| 		window_title_ = 'canvas' | ||||
| 	} | ||||
| 	app.perf = &Perf{} | ||||
| 	app.gg = gg.new_context({ | ||||
|  | @ -964,7 +964,7 @@ fn main() { | |||
| 		height: default_window_height | ||||
| 		sample_count: 8 // higher quality curves
 | ||||
| 		create_window: true | ||||
| 		window_title: window_title | ||||
| 		window_title: window_title_ | ||||
| 		frame_fn: frame | ||||
| 		event_fn: on_event | ||||
| 		init_fn: init | ||||
|  |  | |||
|  | @ -323,14 +323,14 @@ fn (mut app App) paint(event &tui.Event) { | |||
| } | ||||
| 
 | ||||
| fn (mut app App) draw_content() { | ||||
| 	w, mut h := app.tui.window_width / 2, app.tui.window_height - 8 | ||||
| 	if h > app.drawing.len { | ||||
| 		h = app.drawing.len | ||||
| 	w_, mut h_ := app.tui.window_width / 2, app.tui.window_height - 8 | ||||
| 	if h_ > app.drawing.len { | ||||
| 		h_ = app.drawing.len | ||||
| 	} | ||||
| 	for row_idx, row in app.drawing[..h] { | ||||
| 	for row_idx, row in app.drawing[..h_] { | ||||
| 		app.tui.set_cursor_position(0, row_idx + 4) | ||||
| 		mut last := tui.Color{0, 0, 0} | ||||
| 		for cell in row[..w] { | ||||
| 		for cell in row[..w_] { | ||||
| 			if cell.r == 0 && cell.g == 0 && cell.b == 0 { | ||||
| 				if !(cell.r == last.r && cell.g == last.g && cell.b == last.b) { | ||||
| 					app.tui.reset() | ||||
|  |  | |||
|  | @ -67,14 +67,14 @@ pub fn uname() Uname { | |||
| } | ||||
| 
 | ||||
| fn init_os_args(argc int, argv &&byte) []string { | ||||
| 	mut args := []string{} | ||||
| 	mut args_ := []string{} | ||||
| 	// mut args := []string(make(0, argc, sizeof(string)))
 | ||||
| 	// mut args := []string{len:argc}
 | ||||
| 	for i in 0 .. argc { | ||||
| 		// args [i] = argv[i].vstring()
 | ||||
| 		unsafe { args << byteptr(argv[i]).vstring() } | ||||
| 		unsafe { args_ << byteptr(argv[i]).vstring() } | ||||
| 	} | ||||
| 	return args | ||||
| 	return args_ | ||||
| } | ||||
| 
 | ||||
| pub fn ls(path string) ?[]string { | ||||
|  |  | |||
|  | @ -76,11 +76,11 @@ mut: | |||
| } | ||||
| 
 | ||||
| fn init_os_args_wide(argc int, argv &byteptr) []string { | ||||
| 	mut args := []string{} | ||||
| 	mut args_ := []string{} | ||||
| 	for i in 0 .. argc { | ||||
| 		args << string_from_wide(unsafe { &u16(argv[i]) }) | ||||
| 		args_ << string_from_wide(unsafe { &u16(argv[i]) }) | ||||
| 	} | ||||
| 	return args | ||||
| 	return args_ | ||||
| } | ||||
| 
 | ||||
| pub fn ls(path string) ?[]string { | ||||
|  |  | |||
|  | @ -11,37 +11,37 @@ const ( | |||
| 
 | ||||
| [direct_array_access] | ||||
| fn init_color_table() []int { | ||||
| 	mut color_table := []int{len: 256} | ||||
| 	mut color_table_ := []int{len: 256} | ||||
| 	// ansi colors
 | ||||
| 	color_table[0] = 0x000000 | ||||
| 	color_table[1] = 0x800000 | ||||
| 	color_table[2] = 0x008000 | ||||
| 	color_table[3] = 0x808000 | ||||
| 	color_table[4] = 0x000080 | ||||
| 	color_table[5] = 0x800080 | ||||
| 	color_table[6] = 0x008080 | ||||
| 	color_table[7] = 0xc0c0c0 | ||||
| 	color_table[8] = 0x808080 | ||||
| 	color_table[9] = 0xff0000 | ||||
| 	color_table[10] = 0x00ff00 | ||||
| 	color_table[11] = 0xffff00 | ||||
| 	color_table[12] = 0x0000ff | ||||
| 	color_table[13] = 0xff00ff | ||||
| 	color_table[14] = 0x00ffff | ||||
| 	color_table[15] = 0xffffff | ||||
| 	color_table_[0] = 0x000000 | ||||
| 	color_table_[1] = 0x800000 | ||||
| 	color_table_[2] = 0x008000 | ||||
| 	color_table_[3] = 0x808000 | ||||
| 	color_table_[4] = 0x000080 | ||||
| 	color_table_[5] = 0x800080 | ||||
| 	color_table_[6] = 0x008080 | ||||
| 	color_table_[7] = 0xc0c0c0 | ||||
| 	color_table_[8] = 0x808080 | ||||
| 	color_table_[9] = 0xff0000 | ||||
| 	color_table_[10] = 0x00ff00 | ||||
| 	color_table_[11] = 0xffff00 | ||||
| 	color_table_[12] = 0x0000ff | ||||
| 	color_table_[13] = 0xff00ff | ||||
| 	color_table_[14] = 0x00ffff | ||||
| 	color_table_[15] = 0xffffff | ||||
| 	// color palette
 | ||||
| 	for i in 0 .. 216 { | ||||
| 		r := value_range[(i / 36) % 6] | ||||
| 		g := value_range[(i / 6) % 6] | ||||
| 		b := value_range[i % 6] | ||||
| 		color_table[i + 16] = ((r << 16) & 0xffffff) + ((g << 8) & 0xffff) + (b & 0xff) | ||||
| 		color_table_[i + 16] = ((r << 16) & 0xffffff) + ((g << 8) & 0xffff) + (b & 0xff) | ||||
| 	} | ||||
| 	// grayscale
 | ||||
| 	for i in 0 .. 24 { | ||||
| 		r := 8 + (i * 10) | ||||
| 		color_table[i + 232] = ((r << 16) & 0xffffff) + ((r << 8) & 0xffff) + (r & 0xff) | ||||
| 		color_table_[i + 232] = ((r << 16) & 0xffffff) + ((r << 8) & 0xffff) + (r & 0xff) | ||||
| 	} | ||||
| 	return color_table | ||||
| 	return color_table_ | ||||
| } | ||||
| 
 | ||||
| fn clamp(x int, y int, z int) int { | ||||
|  |  | |||
|  | @ -116,9 +116,9 @@ fn calculate_time_from_offset(second_offset_ int) (int, int, int) { | |||
| 	if second_offset < 0 { | ||||
| 		second_offset += seconds_per_day | ||||
| 	} | ||||
| 	hour := second_offset / seconds_per_hour | ||||
| 	hour_ := second_offset / seconds_per_hour | ||||
| 	second_offset %= seconds_per_hour | ||||
| 	min := second_offset / seconds_per_minute | ||||
| 	second_offset %= seconds_per_minute | ||||
| 	return hour, min, second_offset | ||||
| 	return hour_, min, second_offset | ||||
| } | ||||
|  |  | |||
|  | @ -2416,6 +2416,12 @@ pub fn (mut c Checker) assign_stmt(mut assign_stmt ast.AssignStmt) { | |||
| 						} | ||||
| 						*/ | ||||
| 					} | ||||
| 					if is_decl { | ||||
| 						full_name := '${left.mod}.$left.name' | ||||
| 						if full_name in c.const_names { | ||||
| 							c.error('duplicate of a const name `$left.name`', left.pos) | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			ast.PrefixExpr { | ||||
|  |  | |||
|  | @ -0,0 +1,7 @@ | |||
| vlib/v/checker/tests/var_duplicate_const.vv:8:2: error: duplicate of a const name `age` | ||||
|     6 | | ||||
|     7 | fn main() { | ||||
|     8 |     age := 30 | ||||
|       |     ~~~ | ||||
|     9 |     println(age) | ||||
|    10 | } | ||||
|  | @ -0,0 +1,10 @@ | |||
| module main | ||||
| 
 | ||||
| const ( | ||||
| 	age = 40 | ||||
| ) | ||||
| 
 | ||||
| fn main() { | ||||
| 	age := 30 | ||||
| 	println(age) | ||||
| } | ||||
		Loading…
	
		Reference in New Issue