parser: fix panic for parse invalid map type (#14431)
							parent
							
								
									7c6eaa8204
								
							
						
					
					
						commit
						d6aa85d059
					
				|  | @ -113,12 +113,12 @@ pub fn (mut p Parser) parse_map_type() ast.Type { | |||
| 	} | ||||
| 	p.check(.lsbr) | ||||
| 	key_type := p.parse_type() | ||||
| 	key_sym := p.table.sym(key_type) | ||||
| 	is_alias := key_sym.kind == .alias | ||||
| 	if key_type.idx() == 0 { | ||||
| 		// error is reported in parse_type
 | ||||
| 		return 0 | ||||
| 	} | ||||
| 	key_sym := p.table.sym(key_type) | ||||
| 	is_alias := key_sym.kind == .alias | ||||
| 	key_type_supported := key_type in [ast.string_type_idx, ast.voidptr_type_idx] | ||||
| 		|| key_sym.kind in [.enum_, .placeholder, .any] | ||||
| 		|| ((key_type.is_int() || key_type.is_float() || is_alias) && !key_type.is_ptr()) | ||||
|  |  | |||
|  | @ -0,0 +1,13 @@ | |||
| import v.ast | ||||
| import v.parser | ||||
| import v.pref | ||||
| 
 | ||||
| fn test_parser_map_type() { | ||||
| 	result := parser.parse_text('a := map[*Node]bool', '', ast.new_table(), .parse_comments, | ||||
| 		&pref.Preferences{ | ||||
| 		output_mode: .silent | ||||
| 		is_fmt: true | ||||
| 	}) | ||||
| 	println(result) | ||||
| 	assert true | ||||
| } | ||||
		Loading…
	
		Reference in New Issue