doc, fmt: use `map{key: value}` syntax for map literals (#8623)
							parent
							
								
									8ae23cd89e
								
							
						
					
					
						commit
						9e751f72c4
					
				|  | @ -130,7 +130,7 @@ fn (vd VDoc) render_search_index(out Output) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn (mut vd VDoc) render_static_html(out Output) { | fn (mut vd VDoc) render_static_html(out Output) { | ||||||
| 	vd.assets = { | 	vd.assets = map{ | ||||||
| 		'doc_css':       vd.get_resource(css_js_assets[0], out) | 		'doc_css':       vd.get_resource(css_js_assets[0], out) | ||||||
| 		'normalize_css': vd.get_resource(css_js_assets[1], out) | 		'normalize_css': vd.get_resource(css_js_assets[1], out) | ||||||
| 		'doc_js':        vd.get_resource(css_js_assets[2], out) | 		'doc_js':        vd.get_resource(css_js_assets[2], out) | ||||||
|  |  | ||||||
							
								
								
									
										23
									
								
								doc/docs.md
								
								
								
								
							
							
						
						
									
										23
									
								
								doc/docs.md
								
								
								
								
							|  | @ -798,9 +798,12 @@ println(m['one']) // "1" | ||||||
| println(m['bad_key']) // "0" | println(m['bad_key']) // "0" | ||||||
| println('bad_key' in m) // Use `in` to detect whether such key exists | println('bad_key' in m) // Use `in` to detect whether such key exists | ||||||
| m.delete('two') | m.delete('two') | ||||||
| // NB: map keys can have any type, `int` in this case, | ``` | ||||||
| // and the whole map can be initialized using this short syntax: | Maps can have keys of type string, rune, integer, float or voidptr. | ||||||
| numbers := { | 
 | ||||||
|  | The whole map can be initialized using this short syntax: | ||||||
|  | ```v | ||||||
|  | numbers := map{ | ||||||
| 	1: 'one' | 	1: 'one' | ||||||
| 	2: 'two' | 	2: 'two' | ||||||
| } | } | ||||||
|  | @ -810,12 +813,14 @@ println(numbers) | ||||||
| If a key is not found, a zero value is returned by default: | If a key is not found, a zero value is returned by default: | ||||||
| 
 | 
 | ||||||
| ```v | ```v | ||||||
| sm := { | sm := map{ | ||||||
| 	'abc': 'xyz' | 	'abc': 'xyz' | ||||||
| } | } | ||||||
| val := sm['bad_key'] | val := sm['bad_key'] | ||||||
| println(val) // '' | println(val) // '' | ||||||
| intm := { | ``` | ||||||
|  | ```v | ||||||
|  | intm := map{ | ||||||
| 	1: 1234 | 	1: 1234 | ||||||
| 	2: 5678 | 	2: 5678 | ||||||
| } | } | ||||||
|  | @ -1061,7 +1066,7 @@ To do the opposite, use `!in`. | ||||||
| nums := [1, 2, 3] | nums := [1, 2, 3] | ||||||
| println(1 in nums) // true | println(1 in nums) // true | ||||||
| println(4 !in nums) // true | println(4 !in nums) // true | ||||||
| m := { | m := map{ | ||||||
| 	'one': 1 | 	'one': 1 | ||||||
| 	'two': 2 | 	'two': 2 | ||||||
| } | } | ||||||
|  | @ -1132,7 +1137,7 @@ When an identifier is just a single underscore, it is ignored. | ||||||
| #### Map `for` | #### Map `for` | ||||||
| 
 | 
 | ||||||
| ```v | ```v | ||||||
| m := { | m := map{ | ||||||
| 	'one': 1 | 	'one': 1 | ||||||
| 	'two': 2 | 	'two': 2 | ||||||
| } | } | ||||||
|  | @ -1145,7 +1150,7 @@ for key, value in m { | ||||||
| 
 | 
 | ||||||
| Either key or value can be ignored by using a single underscore as the identifier. | Either key or value can be ignored by using a single underscore as the identifier. | ||||||
| ```v | ```v | ||||||
| m := { | m := map{ | ||||||
| 	'one': 1 | 	'one': 1 | ||||||
| 	'two': 2 | 	'two': 2 | ||||||
| } | } | ||||||
|  | @ -1698,7 +1703,7 @@ fn main() { | ||||||
| 	// You can even have an array/map of functions: | 	// You can even have an array/map of functions: | ||||||
| 	fns := [sqr, cube] | 	fns := [sqr, cube] | ||||||
| 	println((10)) // "100" | 	println((10)) // "100" | ||||||
| 	fns_map := { | 	fns_map := map{ | ||||||
| 		'sqr':  sqr | 		'sqr':  sqr | ||||||
| 		'cube': cube | 		'cube': cube | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -1198,20 +1198,20 @@ fn test_struct_array_of_multi_type_in() { | ||||||
| 	ivan := Person{ | 	ivan := Person{ | ||||||
| 		name: 'ivan' | 		name: 'ivan' | ||||||
| 		nums: [1, 2, 3] | 		nums: [1, 2, 3] | ||||||
| 		kv: { | 		kv: map{ | ||||||
| 			'aaa': '111' | 			'aaa': '111' | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	people := [Person{ | 	people := [Person{ | ||||||
| 		name: 'ivan' | 		name: 'ivan' | ||||||
| 		nums: [1, 2, 3] | 		nums: [1, 2, 3] | ||||||
| 		kv: { | 		kv: map{ | ||||||
| 			'aaa': '111' | 			'aaa': '111' | ||||||
| 		} | 		} | ||||||
| 	}, Person{ | 	}, Person{ | ||||||
| 		name: 'bob' | 		name: 'bob' | ||||||
| 		nums: [2] | 		nums: [2] | ||||||
| 		kv: { | 		kv: map{ | ||||||
| 			'bbb': '222' | 			'bbb': '222' | ||||||
| 		} | 		} | ||||||
| 	}] | 	}] | ||||||
|  | @ -1223,20 +1223,20 @@ fn test_struct_array_of_multi_type_index() { | ||||||
| 	ivan := Person{ | 	ivan := Person{ | ||||||
| 		name: 'ivan' | 		name: 'ivan' | ||||||
| 		nums: [1, 2, 3] | 		nums: [1, 2, 3] | ||||||
| 		kv: { | 		kv: map{ | ||||||
| 			'aaa': '111' | 			'aaa': '111' | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	people := [Person{ | 	people := [Person{ | ||||||
| 		name: 'ivan' | 		name: 'ivan' | ||||||
| 		nums: [1, 2, 3] | 		nums: [1, 2, 3] | ||||||
| 		kv: { | 		kv: map{ | ||||||
| 			'aaa': '111' | 			'aaa': '111' | ||||||
| 		} | 		} | ||||||
| 	}, Person{ | 	}, Person{ | ||||||
| 		name: 'bob' | 		name: 'bob' | ||||||
| 		nums: [2] | 		nums: [2] | ||||||
| 		kv: { | 		kv: map{ | ||||||
| 			'bbb': '222' | 			'bbb': '222' | ||||||
| 		} | 		} | ||||||
| 	}] | 	}] | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ fn test_map_of_f32() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_map_of_f64() { | fn test_map_of_f64() { | ||||||
| 	mut m64 := { | 	mut m64 := map{ | ||||||
| 		3.14: 'pi' | 		3.14: 'pi' | ||||||
| 	} | 	} | ||||||
| 	m64[1.0] = 'one' | 	m64[1.0] = 'one' | ||||||
|  |  | ||||||
|  | @ -274,25 +274,25 @@ fn test_map_assign() { | ||||||
| 	mut a := map[string]f64{} | 	mut a := map[string]f64{} | ||||||
| 	mut b := map[string]int{} | 	mut b := map[string]int{} | ||||||
| 	mut c := map[string]u16{} | 	mut c := map[string]u16{} | ||||||
| 	a = { | 	a = map{ | ||||||
| 		'x': 12.4 | 		'x': 12.4 | ||||||
| 		'y': 3 | 		'y': 3 | ||||||
| 	} | 	} | ||||||
| 	b = { | 	b = map{ | ||||||
| 		'u': -13 | 		'u': -13 | ||||||
| 		'v': 12 | 		'v': 12 | ||||||
| 	} | 	} | ||||||
| 	c = { | 	c = map{ | ||||||
| 		's': u16(5) | 		's': u16(5) | ||||||
| 		't': 3 | 		't': 3 | ||||||
| 	} | 	} | ||||||
| 	_ := Mstruct1{{ | 	_ := Mstruct1{map{ | ||||||
| 		'p': 12 | 		'p': 12 | ||||||
| 	}} | 	}} | ||||||
| 	_ := Mstruct2{{ | 	_ := Mstruct2{map{ | ||||||
| 		'q': 1.7 | 		'q': 1.7 | ||||||
| 	}} | 	}} | ||||||
| 	_ := Mstruct3{{ | 	_ := Mstruct3{map{ | ||||||
| 		'r': u16(6) | 		'r': u16(6) | ||||||
| 		's': 5 | 		's': 5 | ||||||
| 	}} | 	}} | ||||||
|  | @ -335,7 +335,7 @@ fn test_map_in_directly() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_plus_assign_string() { | fn test_plus_assign_string() { | ||||||
| 	mut m := { | 	mut m := map{ | ||||||
| 		'one': '' | 		'one': '' | ||||||
| 	} | 	} | ||||||
| 	m['one'] += '1' | 	m['one'] += '1' | ||||||
|  | @ -344,7 +344,7 @@ fn test_plus_assign_string() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_map_keys_to_array() { | fn test_map_keys_to_array() { | ||||||
| 	m := { | 	m := map{ | ||||||
| 		'a': 'b' | 		'a': 'b' | ||||||
| 		'c': 'd' | 		'c': 'd' | ||||||
| 	} | 	} | ||||||
|  | @ -364,7 +364,7 @@ fn map_in_mut(mut m map[string]int) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_map_in_mut() { | fn test_map_in_mut() { | ||||||
| 	mut m := { | 	mut m := map{ | ||||||
| 		'one': 1 | 		'one': 1 | ||||||
| 	} | 	} | ||||||
| 	map_in_mut(mut m) | 	map_in_mut(mut m) | ||||||
|  | @ -372,7 +372,7 @@ fn test_map_in_mut() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_map_in() { | fn test_map_in() { | ||||||
| 	m := { | 	m := map{ | ||||||
| 		'Foo': 'bar' | 		'Foo': 'bar' | ||||||
| 	} | 	} | ||||||
| 	if 'foo'.capitalize() in m { | 	if 'foo'.capitalize() in m { | ||||||
|  | @ -404,7 +404,7 @@ fn mut_map_with_relation_op_in_fn(mut m map[string]int) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_mut_map_with_relation_op_in_fn() { | fn test_mut_map_with_relation_op_in_fn() { | ||||||
| 	mut m := { | 	mut m := map{ | ||||||
| 		'one': 1 | 		'one': 1 | ||||||
| 		'two': 2 | 		'two': 2 | ||||||
| 	} | 	} | ||||||
|  | @ -418,7 +418,7 @@ fn test_mut_map_with_relation_op_in_fn() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_map_str_after_delete() { | fn test_map_str_after_delete() { | ||||||
| 	mut m := { | 	mut m := map{ | ||||||
| 		'first':  1 | 		'first':  1 | ||||||
| 		'second': 2 | 		'second': 2 | ||||||
| 		'third':  3 | 		'third':  3 | ||||||
|  | @ -432,7 +432,7 @@ fn test_map_str_after_delete() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_modify_map_value() { | fn test_modify_map_value() { | ||||||
| 	mut m1 := { | 	mut m1 := map{ | ||||||
| 		'foo': 3 | 		'foo': 3 | ||||||
| 		'bar': -7 | 		'bar': -7 | ||||||
| 	} | 	} | ||||||
|  | @ -443,7 +443,7 @@ fn test_modify_map_value() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_map_clone() { | fn test_map_clone() { | ||||||
| 	mut nums := { | 	mut nums := map{ | ||||||
| 		'foo': 1 | 		'foo': 1 | ||||||
| 		'bar': 2 | 		'bar': 2 | ||||||
| 	} | 	} | ||||||
|  | @ -470,7 +470,7 @@ fn test_map_default_zero() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_map_or() { | fn test_map_or() { | ||||||
| 	m := { | 	m := map{ | ||||||
| 		'first':  1 | 		'first':  1 | ||||||
| 		'second': 2 | 		'second': 2 | ||||||
| 		'third':  3 | 		'third':  3 | ||||||
|  | @ -489,7 +489,7 @@ fn test_int_keys() { | ||||||
| 	m[5] += 24 | 	m[5] += 24 | ||||||
| 	m[5]++ | 	m[5]++ | ||||||
| 	assert m[5] == 25 | 	assert m[5] == 25 | ||||||
| 	m2 := { | 	m2 := map{ | ||||||
| 		3: 9 | 		3: 9 | ||||||
| 		4: 16 | 		4: 16 | ||||||
| 		5: 25 | 		5: 25 | ||||||
|  | @ -521,7 +521,7 @@ fn test_voidptr_keys() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_rune_keys() { | fn test_rune_keys() { | ||||||
| 	mut m := { | 	mut m := map{ | ||||||
| 		`!`: 2 | 		`!`: 2 | ||||||
| 		`%`: 3 | 		`%`: 3 | ||||||
| 	} | 	} | ||||||
|  | @ -541,62 +541,62 @@ fn test_rune_keys() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_eq() { | fn test_eq() { | ||||||
| 	a := { | 	a := map{ | ||||||
| 		'a': 1 | 		'a': 1 | ||||||
| 		'b': 2 | 		'b': 2 | ||||||
| 	} | 	} | ||||||
| 	assert a == { | 	assert a == map{ | ||||||
| 		'a': 1 | 		'a': 1 | ||||||
| 		'b': 2 | 		'b': 2 | ||||||
| 	} | 	} | ||||||
| 	b := { | 	b := map{ | ||||||
| 		'a': [[1]] | 		'a': [[1]] | ||||||
| 		'b': [[2]] | 		'b': [[2]] | ||||||
| 	} | 	} | ||||||
| 	assert b == { | 	assert b == map{ | ||||||
| 		'a': [[1]] | 		'a': [[1]] | ||||||
| 		'b': [[2]] | 		'b': [[2]] | ||||||
| 	} | 	} | ||||||
| 	c := { | 	c := map{ | ||||||
| 		'a': { | 		'a': map{ | ||||||
| 			'11': 1 | 			'11': 1 | ||||||
| 		} | 		} | ||||||
| 		'b': { | 		'b': map{ | ||||||
| 			'22': 2 | 			'22': 2 | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	assert c == { | 	assert c == map{ | ||||||
| 		'a': { | 		'a': map{ | ||||||
| 			'11': 1 | 			'11': 1 | ||||||
| 		} | 		} | ||||||
| 		'b': { | 		'b': map{ | ||||||
| 			'22': 2 | 			'22': 2 | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	d := { | 	d := map{ | ||||||
| 		'a': MValue{ | 		'a': MValue{ | ||||||
| 			name: 'aa' | 			name: 'aa' | ||||||
| 			misc: { | 			misc: map{ | ||||||
| 				'11': '1' | 				'11': '1' | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		'b': MValue{ | 		'b': MValue{ | ||||||
| 			name: 'bb' | 			name: 'bb' | ||||||
| 			misc: { | 			misc: map{ | ||||||
| 				'22': '2' | 				'22': '2' | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	assert d == { | 	assert d == map{ | ||||||
| 		'a': MValue{ | 		'a': MValue{ | ||||||
| 			name: 'aa' | 			name: 'aa' | ||||||
| 			misc: { | 			misc: map{ | ||||||
| 				'11': '1' | 				'11': '1' | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		'b': MValue{ | 		'b': MValue{ | ||||||
| 			name: 'bb' | 			name: 'bb' | ||||||
| 			misc: { | 			misc: map{ | ||||||
| 				'22': '2' | 				'22': '2' | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | @ -604,24 +604,24 @@ fn test_eq() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_non_string_key_map_str() { | fn test_non_string_key_map_str() { | ||||||
| 	assert { | 	assert map{ | ||||||
| 		23: 4 | 		23: 4 | ||||||
| 	}.str() == '{23: 4}' | 	}.str() == '{23: 4}' | ||||||
| 	assert { | 	assert map{ | ||||||
| 		`a`: 12 | 		`a`: 12 | ||||||
| 		`b`: 13 | 		`b`: 13 | ||||||
| 	}.str() == '{`a`: 12, `b`: 13}' | 	}.str() == '{`a`: 12, `b`: 13}' | ||||||
| 	assert { | 	assert map{ | ||||||
| 		23: 'foo' | 		23: 'foo' | ||||||
| 		25: 'bar' | 		25: 'bar' | ||||||
| 	}.str() == "{23: 'foo', 25: 'bar'}" | 	}.str() == "{23: 'foo', 25: 'bar'}" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_map_assign_empty_map_init() { | fn test_map_assign_empty_map_init() { | ||||||
| 	mut a := { | 	mut a := map{ | ||||||
| 		'one': 1 | 		'one': 1 | ||||||
| 	} | 	} | ||||||
| 	a = {} | 	a = map{} | ||||||
| 	println(a) | 	println(a) | ||||||
| 	assert a == map[string]int{} | 	assert a == map[string]int{} | ||||||
| 	assert '$a' == '{}' | 	assert '$a' == '{}' | ||||||
|  |  | ||||||
|  | @ -2593,6 +2593,8 @@ pub fn (mut c Checker) assign_stmt(mut assign_stmt ast.AssignStmt) { | ||||||
| 			// `map = {}`
 | 			// `map = {}`
 | ||||||
| 			sym := c.table.get_type_symbol(left_type) | 			sym := c.table.get_type_symbol(left_type) | ||||||
| 			if sym.kind == .map && assign_stmt.right[i] is ast.StructInit { | 			if sym.kind == .map && assign_stmt.right[i] is ast.StructInit { | ||||||
|  | 				c.warn('assigning a struct literal to a map is deprecated - use `map{}` instead', | ||||||
|  | 					assign_stmt.right[i].position()) | ||||||
| 				assign_stmt.right[i] = ast.MapInit{} | 				assign_stmt.right[i] = ast.MapInit{} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -218,7 +218,7 @@ pub fn (mut d Doc) stmt(stmt ast.Stmt, filename string) ?DocNode { | ||||||
| 						kind: .variable | 						kind: .variable | ||||||
| 						parent_name: node.name | 						parent_name: node.name | ||||||
| 						pos: d.convert_pos(filename, param.pos) | 						pos: d.convert_pos(filename, param.pos) | ||||||
| 						attrs: { | 						attrs: map{ | ||||||
| 							'mut': param.is_mut.str() | 							'mut': param.is_mut.str() | ||||||
| 						} | 						} | ||||||
| 						return_type: d.type_to_str(param.typ) | 						return_type: d.type_to_str(param.typ) | ||||||
|  |  | ||||||
|  | @ -2034,12 +2034,17 @@ pub fn (mut f Fmt) array_init(it ast.ArrayInit) { | ||||||
| 
 | 
 | ||||||
| pub fn (mut f Fmt) map_init(it ast.MapInit) { | pub fn (mut f Fmt) map_init(it ast.MapInit) { | ||||||
| 	if it.keys.len == 0 { | 	if it.keys.len == 0 { | ||||||
| 		f.mark_types_import_as_used(it.typ) | 		if it.typ > table.void_type { | ||||||
| 		f.write(f.table.type_to_str(it.typ)) | 			f.mark_types_import_as_used(it.typ) | ||||||
|  | 			f.write(f.table.type_to_str(it.typ)) | ||||||
|  | 		} else { | ||||||
|  | 			// m = map{}
 | ||||||
|  | 			f.write('map') | ||||||
|  | 		} | ||||||
| 		f.write('{}') | 		f.write('{}') | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	f.writeln('{') | 	f.writeln('map{') | ||||||
| 	f.indent++ | 	f.indent++ | ||||||
| 	mut max_field_len := 0 | 	mut max_field_len := 0 | ||||||
| 	for key in it.keys { | 	for key in it.keys { | ||||||
|  |  | ||||||
|  | @ -18,10 +18,10 @@ fn main() { | ||||||
| 		'eggs', | 		'eggs', | ||||||
| 	] | 	] | ||||||
| 	_ := []int{len: 10, cap: 10, init: 7} | 	_ := []int{len: 10, cap: 10, init: 7} | ||||||
| 	_ := []map[string]string{len: 5, cap: 50, init: { | 	_ := []map[string]string{len: 5, cap: 50, init: map{ | ||||||
| 		'a': 'a' | 		'a': 'a' | ||||||
| 	}} | 	}} | ||||||
| 	_ := []map[string][]int{len: 7, cap: 100, init: { | 	_ := []map[string][]int{len: 7, cap: 100, init: map{ | ||||||
| 		'a': [1, 2] | 		'a': [1, 2] | ||||||
| 	}} | 	}} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| const ( | const ( | ||||||
| 	reserved_types = { | 	reserved_types = map{ | ||||||
| 		'i8':   true | 		'i8':   true | ||||||
| 		'i16':  true | 		'i16':  true | ||||||
| 		'int':  true | 		'int':  true | ||||||
|  | @ -8,7 +8,7 @@ const ( | ||||||
| 	} | 	} | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| numbers := { | numbers := map{ | ||||||
| 	'one':                                 1 | 	'one':                                 1 | ||||||
| 	'two':                                 2 | 	'two':                                 2 | ||||||
| 	'sevenhundredseventyseven':            777 | 	'sevenhundredseventyseven':            777 | ||||||
|  |  | ||||||
|  | @ -5,11 +5,11 @@ fn workaround() { | ||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
| 	mut ams := []map[string]string{} | 	mut ams := []map[string]string{} | ||||||
| 	ams << { | 	ams << map{ | ||||||
| 		'a': 'b' | 		'a': 'b' | ||||||
| 		'c': 'd' | 		'c': 'd' | ||||||
| 	} | 	} | ||||||
| 	ams << { | 	ams << map{ | ||||||
| 		'e': 'f' | 		'e': 'f' | ||||||
| 		'g': 'h' | 		'g': 'h' | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -445,7 +445,7 @@ fn (mut g Gen) gen_str_for_multi_return(info table.MultiReturn, styp string, str | ||||||
| fn (mut g Gen) gen_str_for_struct(info table.Struct, styp string, str_fn_name string) { | fn (mut g Gen) gen_str_for_struct(info table.Struct, styp string, str_fn_name string) { | ||||||
| 	// TODO: short it if possible
 | 	// TODO: short it if possible
 | ||||||
| 	// generates all definitions of substructs
 | 	// generates all definitions of substructs
 | ||||||
| 	mut fnames2strfunc := { | 	mut fnames2strfunc := map{ | ||||||
| 		'': '' | 		'': '' | ||||||
| 	} // map[string]string // TODO vfmt bug
 | 	} // map[string]string // TODO vfmt bug
 | ||||||
| 	for field in info.fields { | 	for field in info.fields { | ||||||
|  |  | ||||||
|  | @ -20,7 +20,7 @@ pub const ( | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| pub const ( | pub const ( | ||||||
| 	external_module_dependencies_for_tool = { | 	external_module_dependencies_for_tool = map{ | ||||||
| 		'vdoc': ['markdown'] | 		'vdoc': ['markdown'] | ||||||
| 	} | 	} | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | @ -208,7 +208,7 @@ fn testsuite_end() { | ||||||
| 	// It sends a request to the server to shutdown.
 | 	// It sends a request to the server to shutdown.
 | ||||||
| 	x := http.fetch('http://127.0.0.1:$sport/shutdown',  | 	x := http.fetch('http://127.0.0.1:$sport/shutdown',  | ||||||
| 		method: .get | 		method: .get | ||||||
| 		cookies: { | 		cookies: map{ | ||||||
| 			'skey': 'superman' | 			'skey': 'superman' | ||||||
| 		} | 		} | ||||||
| 	) or { | 	) or { | ||||||
|  |  | ||||||
|  | @ -19,7 +19,7 @@ pub const ( | ||||||
| 	headers_close           = '$header_server$header_connection_close\r\n' | 	headers_close           = '$header_server$header_connection_close\r\n' | ||||||
| 	http_404                = 'HTTP/1.1 404 Not Found\r\nContent-Type: text/plain\r\nContent-Length: 13\r\n${headers_close}404 Not Found' | 	http_404                = 'HTTP/1.1 404 Not Found\r\nContent-Type: text/plain\r\nContent-Length: 13\r\n${headers_close}404 Not Found' | ||||||
| 	http_500                = 'HTTP/1.1 500 Internal Server Error\r\nContent-Type: text/plain\r\n${headers_close}500 Internal Server Error' | 	http_500                = 'HTTP/1.1 500 Internal Server Error\r\nContent-Type: text/plain\r\n${headers_close}500 Internal Server Error' | ||||||
| 	mime_types              = { | 	mime_types              = map{ | ||||||
| 		'.css':  'text/css; charset=utf-8' | 		'.css':  'text/css; charset=utf-8' | ||||||
| 		'.gif':  'image/gif' | 		'.gif':  'image/gif' | ||||||
| 		'.htm':  'text/html; charset=utf-8' | 		'.htm':  'text/html; charset=utf-8' | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue