all: replace `var` with `mut`
							parent
							
								
									4e1abc8503
								
							
						
					
					
						commit
						d871595437
					
				|  | @ -74,7 +74,7 @@ fn main() { | |||
| 		eprintln('vfmt env_vflags_and_os_args: ' + args.str()) | ||||
| 		eprintln('vfmt possible_files: ' + possible_files.str()) | ||||
| 	} | ||||
| 	var files := []string | ||||
| 	mut files := []string | ||||
| 	for file in possible_files { | ||||
| 		if !file.ends_with('.v') && !file.ends_with('.vv') { | ||||
| 			verror('v fmt can only be used on .v files.\nOffending file: "$file"') | ||||
|  | @ -90,16 +90,16 @@ fn main() { | |||
| 		vhelp.show_topic('fmt') | ||||
| 		exit(0) | ||||
| 	} | ||||
| 	var cli_args_no_files := []string | ||||
| 	mut cli_args_no_files := []string | ||||
| 	for a in os.args { | ||||
| 		if !(a in files) { | ||||
| 			cli_args_no_files << a | ||||
| 		} | ||||
| 	} | ||||
| 	var errors := 0 | ||||
| 	mut errors := 0 | ||||
| 	for file in files { | ||||
| 		fpath := os.real_path(file) | ||||
| 		var worker_command_array := cli_args_no_files.clone() | ||||
| 		mut worker_command_array := cli_args_no_files.clone() | ||||
| 		worker_command_array << ['-worker', fpath] | ||||
| 		worker_cmd := worker_command_array.join(' ') | ||||
| 		if foptions.is_verbose { | ||||
|  | @ -252,8 +252,8 @@ fn file_to_target_os(file string) string { | |||
| } | ||||
| 
 | ||||
| fn file_to_mod_name_and_is_module_file(file string) (string, bool) { | ||||
| 	var mod_name := 'main' | ||||
| 	var is_module_file := false | ||||
| 	mut mod_name := 'main' | ||||
| 	mut is_module_file := false | ||||
| 	flines := read_source_lines(file) or { | ||||
| 		return mod_name, is_module_file | ||||
| 	} | ||||
|  | @ -287,7 +287,7 @@ fn get_compile_name_of_potential_v_project(file string) string { | |||
| 	all_files_in_pfolder := os.ls(pfolder) or { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 	var vfiles := []string | ||||
| 	mut vfiles := []string | ||||
| 	for f in all_files_in_pfolder { | ||||
| 		vf := os.join_path(pfolder, f) | ||||
| 		if f.starts_with('.') || !f.ends_with('.v') || os.is_dir(vf) { | ||||
|  | @ -304,7 +304,7 @@ fn get_compile_name_of_potential_v_project(file string) string { | |||
| 	// containing `fn main` then the folder contains multiple standalone
 | ||||
| 	// v programs. If only one contains `fn main` then the folder is
 | ||||
| 	// a project folder, that should be compiled with `v pfolder`.
 | ||||
| 	var main_fns := 0 | ||||
| 	mut main_fns := 0 | ||||
| 	for f in vfiles { | ||||
| 		slines := read_source_lines(f) or { | ||||
| 			panic(err) | ||||
|  |  | |||
							
								
								
									
										12
									
								
								cmd/v/v.v
								
								
								
								
							
							
						
						
									
										12
									
								
								cmd/v/v.v
								
								
								
								
							|  | @ -109,9 +109,9 @@ fn main() { | |||
| } | ||||
| 
 | ||||
| fn parse_args(args []string) (&pref.Preferences, string) { | ||||
| 	var res := &pref.Preferences{} | ||||
| 	var command := '' | ||||
| 	var command_pos := 0 | ||||
| 	mut res := &pref.Preferences{} | ||||
| 	mut command := '' | ||||
| 	mut command_pos := 0 | ||||
| 	// for i, arg in args {
 | ||||
| 	for i := 0; i < args.len; i++ { | ||||
| 		arg := args[i] | ||||
|  | @ -198,7 +198,7 @@ fn parse_args(args []string) (&pref.Preferences, string) { | |||
| 				i++ | ||||
| 			} | ||||
| 			else { | ||||
| 				var should_continue := false | ||||
| 				mut should_continue := false | ||||
| 				for flag_with_param in list_of_flags_with_param { | ||||
| 					if '-$flag_with_param' == arg { | ||||
| 						should_continue = true | ||||
|  | @ -254,8 +254,8 @@ fn create_symlink() { | |||
| 		return | ||||
| 	} | ||||
| 	vexe := pref.vexe_path() | ||||
| 	var link_path := '/usr/local/bin/v' | ||||
| 	var ret := os.exec('ln -sf $vexe $link_path') or { | ||||
| 	mut link_path := '/usr/local/bin/v' | ||||
| 	mut ret := os.exec('ln -sf $vexe $link_path') or { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 	if ret.exit_code == 0 { | ||||
|  |  | |||
|  | @ -47,7 +47,7 @@ pub fn new_builder(pref &pref.Preferences) Builder { | |||
| 
 | ||||
| // parse all deps from already parsed files
 | ||||
| pub fn (b mut Builder) parse_imports() { | ||||
| 	var done_imports := []string | ||||
| 	mut done_imports := []string | ||||
| 	// NB: b.parsed_files is appended in the loop,
 | ||||
| 	// so we can not use the shorter `for in` form.
 | ||||
| 	for i := 0; i < b.parsed_files.len; i++ { | ||||
|  | @ -97,7 +97,7 @@ pub fn (b mut Builder) resolve_deps() { | |||
| 		eprintln(deps_resolved.display()) | ||||
| 		eprintln('------------------------------------------') | ||||
| 	} | ||||
| 	var mods := []string | ||||
| 	mut mods := []string | ||||
| 	for node in deps_resolved.nodes { | ||||
| 		mods << node.name | ||||
| 	} | ||||
|  | @ -106,7 +106,7 @@ pub fn (b mut Builder) resolve_deps() { | |||
| 		eprintln(mods.str()) | ||||
| 		eprintln('-------------------------------') | ||||
| 	} | ||||
| 	var reordered_parsed_files := []ast.File | ||||
| 	mut reordered_parsed_files := []ast.File | ||||
| 	for m in mods { | ||||
| 		for pf in b.parsed_files { | ||||
| 			if m == pf.mod.name { | ||||
|  | @ -120,11 +120,11 @@ pub fn (b mut Builder) resolve_deps() { | |||
| 
 | ||||
| // graph of all imported modules
 | ||||
| pub fn (b &Builder) import_graph() &depgraph.DepGraph { | ||||
| 	var builtins := util.builtin_module_parts | ||||
| 	mut builtins := util.builtin_module_parts | ||||
| 	builtins << 'builtin' | ||||
| 	var graph := depgraph.new_dep_graph() | ||||
| 	mut graph := depgraph.new_dep_graph() | ||||
| 	for p in b.parsed_files { | ||||
| 		var deps := []string | ||||
| 		mut deps := []string | ||||
| 		if p.mod.name !in builtins { | ||||
| 			deps << 'builtin' | ||||
| 		} | ||||
|  | @ -137,7 +137,7 @@ pub fn (b &Builder) import_graph() &depgraph.DepGraph { | |||
| } | ||||
| 
 | ||||
| pub fn (b Builder) v_files_from_dir(dir string) []string { | ||||
| 	var res := []string | ||||
| 	mut res := []string | ||||
| 	if !os.exists(dir) { | ||||
| 		if dir == 'compiler' && os.is_dir('vlib') { | ||||
| 			println('looks like you are trying to build V with an old command') | ||||
|  | @ -147,7 +147,7 @@ pub fn (b Builder) v_files_from_dir(dir string) []string { | |||
| 	} else if !os.is_dir(dir) { | ||||
| 		verror("$dir isn't a directory!") | ||||
| 	} | ||||
| 	var files := os.ls(dir) or { | ||||
| 	mut files := os.ls(dir) or { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 	if b.pref.is_verbose { | ||||
|  | @ -168,7 +168,7 @@ pub fn (b Builder) v_files_from_dir(dir string) []string { | |||
| 			continue | ||||
| 		} | ||||
| 		if b.pref.compile_defines_all.len > 0 && file.contains('_d_') { | ||||
| 			var allowed := false | ||||
| 			mut allowed := false | ||||
| 			for cdefine in b.pref.compile_defines { | ||||
| 				file_postfix := '_d_${cdefine}.v' | ||||
| 				if file.ends_with(file_postfix) { | ||||
|  | @ -246,7 +246,7 @@ pub fn (b Builder) find_module_path(mod, fpath string) ?string { | |||
| 	// support @VROOT/v.mod relative paths:
 | ||||
| 	vmod_file_location := vmod.mod_file_cacher.get(fpath) | ||||
| 	mod_path := module_path(mod) | ||||
| 	var module_lookup_paths := []string | ||||
| 	mut module_lookup_paths := []string | ||||
| 	if vmod_file_location.vmod_file.len != 0 && !(vmod_file_location.vmod_folder in b.module_search_paths) { | ||||
| 		module_lookup_paths << vmod_file_location.vmod_folder | ||||
| 	} | ||||
|  |  | |||
|  | @ -1947,7 +1947,7 @@ fn (mut g Gen) struct_init(struct_init ast.StructInit) { | |||
| 	} else { | ||||
| 		g.writeln('($styp){') | ||||
| 	} | ||||
| 	// var fields := []string
 | ||||
| 	// mut fields := []string
 | ||||
| 	mut inited_fields := []string // TODO this is done in checker, move to ast node
 | ||||
| 	/* | ||||
| 	if struct_init.fields.len == 0 && struct_init.exprs.len > 0 { | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ fn test_x64() { | |||
| 		eprintln('x64 tests can only be run on Linux for now.') | ||||
| 		exit(0) | ||||
| 	} | ||||
| 	var bench := benchmark.new_benchmark() | ||||
| 	mut bench := benchmark.new_benchmark() | ||||
| 	vexe := os.getenv('VEXE') | ||||
| 	vroot := os.dir(vexe) | ||||
| 	dir := os.join_path(vroot, 'vlib/v/gen/x64/tests') | ||||
|  | @ -45,11 +45,11 @@ fn test_x64() { | |||
| 			eprintln(res.output) | ||||
| 			continue | ||||
| 		} | ||||
| 		var expected := os.read_file('$dir/${test}.out') or { | ||||
| 		mut expected := os.read_file('$dir/${test}.out') or { | ||||
| 			panic(err) | ||||
| 		} | ||||
| 		expected = expected.trim_space().trim('\n').replace('\r\n', '\n') | ||||
| 		var found := res.output.trim_space().trim('\n').replace('\r\n', '\n') | ||||
| 		mut found := res.output.trim_space().trim('\n').replace('\r\n', '\n') | ||||
| 		// remove ACK char TODO fix this in x64
 | ||||
| 		buf := [byte(0x06)] | ||||
| 		ack := string(buf) | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import v.ast | |||
| import v.table | ||||
| import v.token | ||||
| 
 | ||||
| fn (var p Parser) assign_stmt() ast.Stmt { | ||||
| fn (mut p Parser) assign_stmt() ast.Stmt { | ||||
| 	is_static := p.tok.kind == .key_static | ||||
| 	if is_static { | ||||
| 		p.next() | ||||
|  | @ -51,7 +51,7 @@ fn (var p Parser) assign_stmt() ast.Stmt { | |||
| } | ||||
| 
 | ||||
| // TODO: is it possible to merge with AssignStmt?
 | ||||
| pub fn (var p Parser) assign_expr(left ast.Expr) ast.AssignExpr { | ||||
| pub fn (mut p Parser) assign_expr(left ast.Expr) ast.AssignExpr { | ||||
| 	op := p.tok.kind | ||||
| 	pos := p.tok.position() | ||||
| 	p.next() | ||||
|  | @ -72,8 +72,8 @@ pub fn (var p Parser) assign_expr(left ast.Expr) ast.AssignExpr { | |||
| 	return node | ||||
| } | ||||
| 
 | ||||
| fn (var p Parser) parse_assign_lhs() []ast.Ident { | ||||
| 	var idents := []ast.Ident | ||||
| fn (mut p Parser) parse_assign_lhs() []ast.Ident { | ||||
| 	mut idents := []ast.Ident | ||||
| 	for { | ||||
| 		is_mut := p.tok.kind == .key_mut || p.tok.kind == .key_var | ||||
| 		if is_mut { | ||||
|  | @ -83,7 +83,7 @@ fn (var p Parser) parse_assign_lhs() []ast.Ident { | |||
| 		if is_static { | ||||
| 			p.check(.key_static) | ||||
| 		} | ||||
| 		var ident := p.parse_ident(false, false) | ||||
| 		mut ident := p.parse_ident(false, false) | ||||
| 		ident.is_mut = is_mut | ||||
| 		ident.info = ast.IdentVar{ | ||||
| 			is_mut: is_mut | ||||
|  | @ -100,8 +100,8 @@ fn (var p Parser) parse_assign_lhs() []ast.Ident { | |||
| } | ||||
| 
 | ||||
| // right hand side of `=` or `:=` in `a,b,c := 1,2,3`
 | ||||
| fn (var p Parser) parse_assign_rhs() []ast.Expr { | ||||
| 	var exprs := []ast.Expr | ||||
| fn (mut p Parser) parse_assign_rhs() []ast.Expr { | ||||
| 	mut exprs := []ast.Expr | ||||
| 	for { | ||||
| 		expr := p.expr(0) | ||||
| 		exprs << expr | ||||
|  |  | |||
|  | @ -15,7 +15,7 @@ const ( | |||
| ) | ||||
| 
 | ||||
| // // #include, #flag, #v
 | ||||
| fn (p mut Parser) hash() ast.HashStmt { | ||||
| fn (mut p Parser) hash() ast.HashStmt { | ||||
| 	val := p.tok.lit | ||||
| 	p.next() | ||||
| 	if val.starts_with('flag') { | ||||
|  | @ -56,7 +56,7 @@ fn (p mut Parser) hash() ast.HashStmt { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn (p mut Parser) comp_if() ast.CompIf { | ||||
| fn (mut p Parser) comp_if() ast.CompIf { | ||||
| 	pos := p.tok.position() | ||||
| 	p.next() | ||||
| 	p.check(.key_if) | ||||
|  |  | |||
|  | @ -7,15 +7,15 @@ import v.ast | |||
| import v.table | ||||
| import v.token | ||||
| 
 | ||||
| fn (var p Parser) array_init() ast.ArrayInit { | ||||
| fn (mut p Parser) array_init() ast.ArrayInit { | ||||
| 	first_pos := p.tok.position() | ||||
| 	var last_pos := token.Position{} | ||||
| 	mut last_pos := token.Position{} | ||||
| 	p.check(.lsbr) | ||||
| 	// p.warn('array_init() exp=$p.expected_type')
 | ||||
| 	var array_type := table.void_type | ||||
| 	var elem_type := table.void_type | ||||
| 	var exprs := []ast.Expr | ||||
| 	var is_fixed := false | ||||
| 	mut array_type := table.void_type | ||||
| 	mut elem_type := table.void_type | ||||
| 	mut exprs := []ast.Expr | ||||
| 	mut is_fixed := false | ||||
| 	if p.tok.kind == .rsbr { | ||||
| 		// []typ => `[]` and `typ` must be on the same line
 | ||||
| 		line_nr := p.tok.line_nr | ||||
|  | @ -93,10 +93,10 @@ fn (var p Parser) array_init() ast.ArrayInit { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn (var p Parser) map_init() ast.MapInit { | ||||
| fn (mut p Parser) map_init() ast.MapInit { | ||||
| 	pos := p.tok.position() | ||||
| 	var keys := []ast.Expr | ||||
| 	var vals := []ast.Expr | ||||
| 	mut keys := []ast.Expr | ||||
| 	mut vals := []ast.Expr | ||||
| 	for p.tok.kind != .rcbr && p.tok.kind != .eof { | ||||
| 		// p.check(.str)
 | ||||
| 		key := p.expr(0) | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import v.ast | |||
| import v.table | ||||
| import v.token | ||||
| 
 | ||||
| fn (var p Parser) for_stmt() ast.Stmt { | ||||
| fn (mut p Parser) for_stmt() ast.Stmt { | ||||
| 	p.check(.key_for) | ||||
| 	pos := p.tok.position() | ||||
| 	p.open_scope() | ||||
|  | @ -27,13 +27,13 @@ fn (var p Parser) for_stmt() ast.Stmt { | |||
| 		p.error('`var` is not needed in for loops') | ||||
| 	} else if p.peek_tok.kind in [.decl_assign, .assign, .semicolon] || p.tok.kind == .semicolon { | ||||
| 		// `for i := 0; i < 10; i++ {`
 | ||||
| 		var init := ast.Stmt{} | ||||
| 		var cond := p.new_true_expr() | ||||
| 		mut init := ast.Stmt{} | ||||
| 		mut cond := p.new_true_expr() | ||||
| 		// mut inc := ast.Stmt{}
 | ||||
| 		var inc := ast.Expr{} | ||||
| 		var has_init := false | ||||
| 		var has_cond := false | ||||
| 		var has_inc := false | ||||
| 		mut inc := ast.Expr{} | ||||
| 		mut has_init := false | ||||
| 		mut has_cond := false | ||||
| 		mut has_inc := false | ||||
| 		if p.peek_tok.kind in [.assign, .decl_assign] { | ||||
| 			init = p.assign_stmt() | ||||
| 			has_init = true | ||||
|  | @ -67,8 +67,8 @@ fn (var p Parser) for_stmt() ast.Stmt { | |||
| 		} | ||||
| 	} else if p.peek_tok.kind in [.key_in, .comma] { | ||||
| 		// `for i in vals`, `for i in start .. end`
 | ||||
| 		var key_var_name := '' | ||||
| 		var val_var_name := p.check_name() | ||||
| 		mut key_var_name := '' | ||||
| 		mut val_var_name := p.check_name() | ||||
| 		if p.tok.kind == .comma { | ||||
| 			p.check(.comma) | ||||
| 			key_var_name = val_var_name | ||||
|  | @ -95,8 +95,8 @@ fn (var p Parser) for_stmt() ast.Stmt { | |||
| 		// 0 .. 10
 | ||||
| 		// start := p.tok.lit.int()
 | ||||
| 		// TODO use RangeExpr
 | ||||
| 		var high_expr := ast.Expr{} | ||||
| 		var is_range := false | ||||
| 		mut high_expr := ast.Expr{} | ||||
| 		mut is_range := false | ||||
| 		if p.tok.kind == .dotdot { | ||||
| 			is_range = true | ||||
| 			p.check(.dotdot) | ||||
|  |  | |||
|  | @ -7,14 +7,14 @@ import v.ast | |||
| import v.table | ||||
| import v.token | ||||
| 
 | ||||
| fn (var p Parser) if_expr() ast.IfExpr { | ||||
| fn (mut p Parser) if_expr() ast.IfExpr { | ||||
| 	pos := p.tok.position() | ||||
| 	var branches := []ast.IfBranch | ||||
| 	var has_else := false | ||||
| 	mut branches := []ast.IfBranch | ||||
| 	mut has_else := false | ||||
| 	for p.tok.kind in [.key_if, .key_else] { | ||||
| 		p.inside_if = true | ||||
| 		branch_pos := p.tok.position() | ||||
| 		var comment := ast.Comment{} | ||||
| 		mut comment := ast.Comment{} | ||||
| 		if p.tok.kind == .key_if { | ||||
| 			p.check(.key_if) | ||||
| 		} else { | ||||
|  | @ -36,8 +36,8 @@ fn (var p Parser) if_expr() ast.IfExpr { | |||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 		var cond := ast.Expr{} | ||||
| 		var is_or := false | ||||
| 		mut cond := ast.Expr{} | ||||
| 		mut is_or := false | ||||
| 		// `if x := opt() {`
 | ||||
| 		if p.peek_tok.kind == .decl_assign { | ||||
| 			is_or = true | ||||
|  | @ -78,26 +78,26 @@ fn (var p Parser) if_expr() ast.IfExpr { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn (var p Parser) match_expr() ast.MatchExpr { | ||||
| fn (mut p Parser) match_expr() ast.MatchExpr { | ||||
| 	match_first_pos := p.tok.position() | ||||
| 	p.inside_match = true | ||||
| 	p.check(.key_match) | ||||
| 	is_mut := p.tok.kind in [.key_mut, .key_var] | ||||
| 	var is_sum_type := false | ||||
| 	mut is_sum_type := false | ||||
| 	if is_mut { | ||||
| 		p.next() | ||||
| 	} | ||||
| 	cond := p.expr(0) | ||||
| 	p.inside_match = false | ||||
| 	p.check(.lcbr) | ||||
| 	var branches := []ast.MatchBranch | ||||
| 	mut branches := []ast.MatchBranch | ||||
| 	for { | ||||
| 		branch_first_pos := p.tok.position() | ||||
| 		comment := p.check_comment()		// comment before {}
 | ||||
| 		var exprs := []ast.Expr | ||||
| 		mut exprs := []ast.Expr | ||||
| 		p.open_scope() | ||||
| 		// final else
 | ||||
| 		var is_else := false | ||||
| 		mut is_else := false | ||||
| 		if p.tok.kind == .key_else { | ||||
| 			is_else = true | ||||
| 			p.next() | ||||
|  | @ -111,7 +111,7 @@ fn (var p Parser) match_expr() ast.MatchExpr { | |||
| 			x := ast.Type{ | ||||
| 				typ: typ | ||||
| 			} | ||||
| 			var expr := ast.Expr{} | ||||
| 			mut expr := ast.Expr{} | ||||
| 			expr = x | ||||
| 			exprs << expr | ||||
| 			p.scope.register('it', ast.Var{ | ||||
|  | @ -125,7 +125,7 @@ fn (var p Parser) match_expr() ast.MatchExpr { | |||
| 			} | ||||
| 			is_sum_type = true | ||||
| 			// Make sure a variable used for the sum type match
 | ||||
| 			var var_name := '' | ||||
| 			mut var_name := '' | ||||
| 			match cond { | ||||
| 				ast.Ident { | ||||
| 					var_name = it.name | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ module parser | |||
| // that can be found in the LICENSE file.
 | ||||
| import v.table | ||||
| 
 | ||||
| pub fn (p mut Parser) parse_array_type() table.Type { | ||||
| pub fn (mut p Parser) parse_array_type() table.Type { | ||||
| 	p.check(.lsbr) | ||||
| 	// fixed array
 | ||||
| 	if p.tok.kind == .number { | ||||
|  | @ -19,7 +19,7 @@ pub fn (p mut Parser) parse_array_type() table.Type { | |||
| 	// array
 | ||||
| 	p.check(.rsbr) | ||||
| 	elem_type := p.parse_type() | ||||
| 	var nr_dims := 1 | ||||
| 	mut nr_dims := 1 | ||||
| 	for p.tok.kind == .lsbr { | ||||
| 		p.check(.lsbr) | ||||
| 		p.check(.rsbr) | ||||
|  | @ -29,7 +29,7 @@ pub fn (p mut Parser) parse_array_type() table.Type { | |||
| 	return table.new_type(idx) | ||||
| } | ||||
| 
 | ||||
| pub fn (p mut Parser) parse_map_type() table.Type { | ||||
| pub fn (mut p Parser) parse_map_type() table.Type { | ||||
| 	p.next() | ||||
| 	if p.tok.kind != .lsbr { | ||||
| 		return table.map_type | ||||
|  | @ -47,9 +47,9 @@ pub fn (p mut Parser) parse_map_type() table.Type { | |||
| 	return table.new_type(idx) | ||||
| } | ||||
| 
 | ||||
| pub fn (p mut Parser) parse_multi_return_type() table.Type { | ||||
| pub fn (mut p Parser) parse_multi_return_type() table.Type { | ||||
| 	p.check(.lpar) | ||||
| 	var mr_types := []table.Type | ||||
| 	mut mr_types := []table.Type | ||||
| 	for { | ||||
| 		mr_type := p.parse_type() | ||||
| 		mr_types << mr_type | ||||
|  | @ -65,12 +65,12 @@ pub fn (p mut Parser) parse_multi_return_type() table.Type { | |||
| } | ||||
| 
 | ||||
| // given anon name based off signature when `name` is blank
 | ||||
| pub fn (p mut Parser) parse_fn_type(name string) table.Type { | ||||
| pub fn (mut p Parser) parse_fn_type(name string) table.Type { | ||||
| 	// p.warn('parse fn')
 | ||||
| 	p.check(.key_fn) | ||||
| 	line_nr := p.tok.line_nr | ||||
| 	args, is_variadic := p.fn_args() | ||||
| 	var return_type := table.void_type | ||||
| 	mut return_type := table.void_type | ||||
| 	if p.tok.line_nr == line_nr && p.tok.kind.is_start_of_type() { | ||||
| 		return_type = p.parse_type() | ||||
| 	} | ||||
|  | @ -84,7 +84,7 @@ pub fn (p mut Parser) parse_fn_type(name string) table.Type { | |||
| 	return table.new_type(idx) | ||||
| } | ||||
| 
 | ||||
| pub fn (p mut Parser) parse_type_with_mut(is_mut bool) table.Type { | ||||
| pub fn (mut p Parser) parse_type_with_mut(is_mut bool) table.Type { | ||||
| 	typ := p.parse_type() | ||||
| 	if is_mut { | ||||
| 		return table.type_set_nr_muls(typ, 1) | ||||
|  | @ -92,14 +92,14 @@ pub fn (p mut Parser) parse_type_with_mut(is_mut bool) table.Type { | |||
| 	return typ | ||||
| } | ||||
| 
 | ||||
| pub fn (p mut Parser) parse_type() table.Type { | ||||
| pub fn (mut p Parser) parse_type() table.Type { | ||||
| 	// optional
 | ||||
| 	var is_optional := false | ||||
| 	mut is_optional := false | ||||
| 	if p.tok.kind == .question { | ||||
| 		p.next() | ||||
| 		is_optional = true | ||||
| 	} | ||||
| 	var nr_muls := 0 | ||||
| 	mut nr_muls := 0 | ||||
| 	if p.tok.kind == .key_mut { | ||||
| 		nr_muls++ | ||||
| 		p.next() | ||||
|  | @ -119,7 +119,7 @@ pub fn (p mut Parser) parse_type() table.Type { | |||
| 		p.next() | ||||
| 		p.check(.dot) | ||||
| 	} | ||||
| 	var typ := p.parse_any_type(is_c, is_js, nr_muls > 0) | ||||
| 	mut typ := p.parse_any_type(is_c, is_js, nr_muls > 0) | ||||
| 	if is_optional { | ||||
| 		typ = table.type_set(typ, .optional) | ||||
| 	} | ||||
|  | @ -129,8 +129,8 @@ pub fn (p mut Parser) parse_type() table.Type { | |||
| 	return typ | ||||
| } | ||||
| 
 | ||||
| pub fn (p mut Parser) parse_any_type(is_c, is_js, is_ptr bool) table.Type { | ||||
| 	var name := p.tok.lit | ||||
| pub fn (mut p Parser) parse_any_type(is_c, is_js, is_ptr bool) table.Type { | ||||
| 	mut name := p.tok.lit | ||||
| 	if is_c { | ||||
| 		name = 'C.$name' | ||||
| 	} else if is_js { | ||||
|  | @ -229,7 +229,7 @@ pub fn (p mut Parser) parse_any_type(is_c, is_js, is_ptr bool) table.Type { | |||
| 				else { | ||||
| 					// struct / enum / placeholder
 | ||||
| 					// struct / enum
 | ||||
| 					var idx := p.table.find_type_idx(name) | ||||
| 					mut idx := p.table.find_type_idx(name) | ||||
| 					if idx > 0 { | ||||
| 						return table.new_type(idx) | ||||
| 					} | ||||
|  |  | |||
|  | @ -233,7 +233,7 @@ pub fn (mut p Parser) parse_block_no_scope() []ast.Stmt { | |||
| } | ||||
| 
 | ||||
| /* | ||||
| fn (p mut Parser) next_with_comment() { | ||||
| fn (mut p Parser) next_with_comment() { | ||||
| 	p.tok = p.peek_tok | ||||
| 	p.peek_tok = p.scanner.scan() | ||||
| } | ||||
|  | @ -501,7 +501,7 @@ fn (mut p Parser) attribute() ast.Attr { | |||
| } | ||||
| 
 | ||||
| /* | ||||
| fn (p mut Parser) range_expr(low ast.Expr) ast.Expr { | ||||
| fn (mut p Parser) range_expr(low ast.Expr) ast.Expr { | ||||
| 	// ,table.Type) {
 | ||||
| 	if p.tok.kind != .dotdot { | ||||
| 		p.next() | ||||
|  |  | |||
|  | @ -17,15 +17,15 @@ fn (table &Table) has_cflag(flag cflag.CFlag) bool { | |||
| 
 | ||||
| // parse the flags to (table.cflags) []CFlag
 | ||||
| // Note: clean up big time (joe-c)
 | ||||
| pub fn (var table Table) parse_cflag(cflg, mod string, ctimedefines []string) ?bool { | ||||
| pub fn (table mut Table) parse_cflag(cflg, mod string, ctimedefines []string) ?bool { | ||||
| 	allowed_flags := ['framework', 'library', 'Wa', 'Wl', 'Wp', 'I', 'l', 'L'] | ||||
| 	flag_orig := cflg.trim_space() | ||||
| 	var flag := flag_orig | ||||
| 	mut flag := flag_orig | ||||
| 	if flag == '' { | ||||
| 		return none | ||||
| 	} | ||||
| 	var fos := '' | ||||
| 	var allowed_os_overrides := ['linux', 'darwin', 'freebsd', 'windows', 'mingw', 'solaris'] | ||||
| 	mut fos := '' | ||||
| 	mut allowed_os_overrides := ['linux', 'darwin', 'freebsd', 'windows', 'mingw', 'solaris'] | ||||
| 	allowed_os_overrides << ctimedefines | ||||
| 	for os_override in allowed_os_overrides { | ||||
| 		if !flag.starts_with(os_override) { | ||||
|  | @ -38,8 +38,8 @@ pub fn (var table Table) parse_cflag(cflg, mod string, ctimedefines []string) ?b | |||
| 		flag = flag[pos..].trim_space() | ||||
| 	} | ||||
| 	for { | ||||
| 		var name := '' | ||||
| 		var value := '' | ||||
| 		mut name := '' | ||||
| 		mut value := '' | ||||
| 		if flag[0] == `-` { | ||||
| 			for f in allowed_flags { | ||||
| 				i := 1 + f.len | ||||
|  | @ -50,11 +50,11 @@ pub fn (var table Table) parse_cflag(cflg, mod string, ctimedefines []string) ?b | |||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		var index := flag.index(' -') or { | ||||
| 		mut index := flag.index(' -') or { | ||||
| 			-1 | ||||
| 		} | ||||
| 		for index > -1 { | ||||
| 			var has_next := false | ||||
| 			mut has_next := false | ||||
| 			for f in allowed_flags { | ||||
| 				i := index + 2 + f.len | ||||
| 				if i <= flag.len && f == flag[index + 2..i] { | ||||
|  |  | |||
|  | @ -45,14 +45,14 @@ mut: | |||
| } | ||||
| 
 | ||||
| pub fn new_table() &Table { | ||||
| 	var t := &Table{} | ||||
| 	mut t := &Table{} | ||||
| 	t.register_builtin_type_symbols() | ||||
| 	return t | ||||
| } | ||||
| 
 | ||||
| // used to compare fn's & for naming anon fn's
 | ||||
| pub fn (f &Fn) signature() string { | ||||
| 	var sig := '' | ||||
| 	mut sig := '' | ||||
| 	for i, arg in f.args { | ||||
| 		// TODO: for now ignore mut/pts in sig for now
 | ||||
| 		typ := type_set_nr_muls(arg.typ, 0) | ||||
|  | @ -85,12 +85,12 @@ pub fn (t &Table) known_fn(name string) bool { | |||
| 	return true | ||||
| } | ||||
| 
 | ||||
| pub fn (var t Table) register_fn(new_fn Fn) { | ||||
| pub fn (mut t Table) register_fn(new_fn Fn) { | ||||
| 	// println('reg fn $new_fn.name nr_args=$new_fn.args.len')
 | ||||
| 	t.fns[new_fn.name] = new_fn | ||||
| } | ||||
| 
 | ||||
| pub fn (var t TypeSymbol) register_method(new_fn Fn) { | ||||
| pub fn (mut t TypeSymbol) register_method(new_fn Fn) { | ||||
| 	t.methods << new_fn | ||||
| } | ||||
| 
 | ||||
|  | @ -142,7 +142,7 @@ pub fn (t &Table) type_has_method(s &TypeSymbol, name string) bool { | |||
| // search from current type up through each parent looking for method
 | ||||
| pub fn (t &Table) type_find_method(s &TypeSymbol, name string) ?Fn { | ||||
| 	// println('type_find_method($s.name, $name) types.len=$t.types.len s.parent_idx=$s.parent_idx')
 | ||||
| 	var ts := s | ||||
| 	mut ts := s | ||||
| 	for { | ||||
| 		if method := ts.find_method(name) { | ||||
| 			return method | ||||
|  | @ -166,7 +166,7 @@ pub fn (t &Table) struct_has_field(s &TypeSymbol, name string) bool { | |||
| // search from current type up through each parent looking for field
 | ||||
| pub fn (t &Table) struct_find_field(s &TypeSymbol, name string) ?Field { | ||||
| 	// println('struct_find_field($s.name, $name) types.len=$t.types.len s.parent_idx=$s.parent_idx')
 | ||||
| 	var ts := s | ||||
| 	mut ts := s | ||||
| 	for { | ||||
| 		if field := ts.find_field(name) { | ||||
| 			return field | ||||
|  | @ -214,7 +214,7 @@ pub fn (t &Table) get_type_name(typ Type) string { | |||
| // allows prexisitng types added in register_builtins
 | ||||
| // to be overriden with their real type info
 | ||||
| [inline] | ||||
| pub fn (var t Table) register_builtin_type_symbol(typ TypeSymbol) int { | ||||
| pub fn (mut t Table) register_builtin_type_symbol(typ TypeSymbol) int { | ||||
| 	existing_idx := t.type_idxs[typ.name] | ||||
| 	if existing_idx > 0 { | ||||
| 		if existing_idx >= string_type_idx { | ||||
|  | @ -234,7 +234,7 @@ pub fn (var t Table) register_builtin_type_symbol(typ TypeSymbol) int { | |||
| } | ||||
| 
 | ||||
| [inline] | ||||
| pub fn (var t Table) register_type_symbol(typ TypeSymbol) int { | ||||
| pub fn (mut t Table) register_type_symbol(typ TypeSymbol) int { | ||||
| 	// println('register_type_symbol( $typ.name )')
 | ||||
| 	existing_idx := t.type_idxs[typ.name] | ||||
| 	if existing_idx > 0 { | ||||
|  | @ -308,7 +308,7 @@ pub fn (t &Table) map_name(key_type, value_type Type) string { | |||
| 	// return 'map_${value_type_sym.name}' + suffix
 | ||||
| } | ||||
| 
 | ||||
| pub fn (var t Table) find_or_register_map(key_type, value_type Type) int { | ||||
| pub fn (mut t Table) find_or_register_map(key_type, value_type Type) int { | ||||
| 	name := t.map_name(key_type, value_type) | ||||
| 	// existing
 | ||||
| 	existing_idx := t.type_idxs[name] | ||||
|  | @ -328,7 +328,7 @@ pub fn (var t Table) find_or_register_map(key_type, value_type Type) int { | |||
| 	return t.register_type_symbol(map_typ) | ||||
| } | ||||
| 
 | ||||
| pub fn (var t Table) find_or_register_array(elem_type Type, nr_dims int) int { | ||||
| pub fn (mut t Table) find_or_register_array(elem_type Type, nr_dims int) int { | ||||
| 	name := t.array_name(elem_type, nr_dims) | ||||
| 	// existing
 | ||||
| 	existing_idx := t.type_idxs[name] | ||||
|  | @ -348,7 +348,7 @@ pub fn (var t Table) find_or_register_array(elem_type Type, nr_dims int) int { | |||
| 	return t.register_type_symbol(array_type) | ||||
| } | ||||
| 
 | ||||
| pub fn (var t Table) find_or_register_array_fixed(elem_type Type, size, nr_dims int) int { | ||||
| pub fn (mut t Table) find_or_register_array_fixed(elem_type Type, size, nr_dims int) int { | ||||
| 	name := t.array_fixed_name(elem_type, size, nr_dims) | ||||
| 	// existing
 | ||||
| 	existing_idx := t.type_idxs[name] | ||||
|  | @ -368,8 +368,8 @@ pub fn (var t Table) find_or_register_array_fixed(elem_type Type, size, nr_dims | |||
| 	return t.register_type_symbol(array_fixed_type) | ||||
| } | ||||
| 
 | ||||
| pub fn (var t Table) find_or_register_multi_return(mr_typs []Type) int { | ||||
| 	var name := 'multi_return' | ||||
| pub fn (mut t Table) find_or_register_multi_return(mr_typs []Type) int { | ||||
| 	mut name := 'multi_return' | ||||
| 	for mr_typ in mr_typs { | ||||
| 		mr_type_sym := t.get_type_symbol(mr_typ) | ||||
| 		name += '_$mr_type_sym.name' | ||||
|  | @ -390,7 +390,7 @@ pub fn (var t Table) find_or_register_multi_return(mr_typs []Type) int { | |||
| 	return t.register_type_symbol(mr_type) | ||||
| } | ||||
| 
 | ||||
| pub fn (var t Table) find_or_register_fn_type(f Fn, is_anon bool, has_decl bool) int { | ||||
| pub fn (mut t Table) find_or_register_fn_type(f Fn, is_anon bool, has_decl bool) int { | ||||
| 	name := if f.name.len == 0 { 'anon_fn_$f.signature()' } else { f.name } | ||||
| 	return t.register_type_symbol(TypeSymbol{ | ||||
| 		kind: .function | ||||
|  | @ -403,7 +403,7 @@ pub fn (var t Table) find_or_register_fn_type(f Fn, is_anon bool, has_decl bool) | |||
| 	}) | ||||
| } | ||||
| 
 | ||||
| pub fn (var t Table) add_placeholder_type(name string) int { | ||||
| pub fn (mut t Table) add_placeholder_type(name string) int { | ||||
| 	ph_type := TypeSymbol{ | ||||
| 		kind: .placeholder | ||||
| 		name: name | ||||
|  |  | |||
|  | @ -9,8 +9,8 @@ pub fn (c Color) str() string { | |||
| } | ||||
| 
 | ||||
| fn test_match_integers() { | ||||
| 	var a := 3 | ||||
| 	var b := 0 | ||||
| 	mut a := 3 | ||||
| 	mut b := 0 | ||||
| 	match a { | ||||
| 		2 { println('two') } | ||||
| 		3 { | ||||
|  | @ -63,7 +63,7 @@ fn test_match_integers() { | |||
| } | ||||
| 
 | ||||
| fn test_match_enums() { | ||||
| 	var b := Color.red | ||||
| 	mut b := Color.red | ||||
| 	match b { | ||||
| 		.red { b = .green } | ||||
| 		.green { b = .blue } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue