checker: make sure generic struct instantiation uses a known type. closes #13506
							parent
							
								
									da9331f8ff
								
							
						
					
					
						commit
						f4051e0252
					
				| 
						 | 
					@ -130,6 +130,13 @@ pub fn (mut c Checker) struct_init(mut node ast.StructInit) ast.Type {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	struct_sym := c.table.sym(node.typ)
 | 
						struct_sym := c.table.sym(node.typ)
 | 
				
			||||||
	if struct_sym.info is ast.Struct {
 | 
						if struct_sym.info is ast.Struct {
 | 
				
			||||||
 | 
							// check if the generic param types have been defined
 | 
				
			||||||
 | 
							for ct in struct_sym.info.concrete_types {
 | 
				
			||||||
 | 
								ct_sym := c.table.sym(ct)
 | 
				
			||||||
 | 
								if ct_sym.kind == .placeholder {
 | 
				
			||||||
 | 
									c.error('unknown type `$ct_sym.name`', node.pos)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		if struct_sym.info.generic_types.len > 0 && struct_sym.info.concrete_types.len == 0
 | 
							if struct_sym.info.generic_types.len > 0 && struct_sym.info.concrete_types.len == 0
 | 
				
			||||||
			&& !node.is_short_syntax {
 | 
								&& !node.is_short_syntax {
 | 
				
			||||||
			if c.table.cur_concrete_types.len == 0 {
 | 
								if c.table.cur_concrete_types.len == 0 {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue