cgen: fix interface struct sorting
							parent
							
								
									51d0ce0222
								
							
						
					
					
						commit
						98cd013908
					
				|  | @ -599,11 +599,7 @@ fn (mut g Gen) stmt(node ast.Stmt) { | |||
| 		} | ||||
| 		ast.Import {} | ||||
| 		ast.InterfaceDecl { | ||||
| 			g.definitions.writeln('//interface') | ||||
| 			g.definitions.writeln('typedef struct {') | ||||
| 			g.definitions.writeln('\tvoid* _object;') | ||||
| 			g.definitions.writeln('\tint _interface_idx;') | ||||
| 			g.definitions.writeln('} $it.name;') | ||||
| 			// definitions are sorted and added in write_types
 | ||||
| 		} | ||||
| 		ast.Module { | ||||
| 			g.is_builtin_mod = it.name == 'builtin' | ||||
|  | @ -2271,6 +2267,13 @@ int typ; | |||
| 				g.definitions.writeln('typedef $fixed $styp [$len];') | ||||
| 				// }
 | ||||
| 			} | ||||
| 			table.Interface { | ||||
| 				g.definitions.writeln('//interface') | ||||
| 				g.definitions.writeln('typedef struct {') | ||||
| 				g.definitions.writeln('\tvoid* _object;') | ||||
| 				g.definitions.writeln('\tint _interface_idx;') | ||||
| 				g.definitions.writeln('} $typ.name;') | ||||
| 			} | ||||
| 			else {} | ||||
| 		} | ||||
| 	} | ||||
|  | @ -2287,6 +2290,7 @@ fn (g Gen) sort_structs(typesa []table.TypeSymbol) []table.TypeSymbol { | |||
| 	// loop over types
 | ||||
| 	for t in typesa { | ||||
| 		if t.kind == .interface_ { | ||||
| 			dep_graph.add(t.name, []) | ||||
| 			continue | ||||
| 		} | ||||
| 		// create list of deps
 | ||||
|  |  | |||
|  | @ -81,7 +81,7 @@ interface Speaker2 { | |||
| 
 | ||||
| 
 | ||||
| struct Foo { | ||||
| 	//speaker  Speaker
 | ||||
| 	//speakers []Speaker
 | ||||
| 	speaker  Speaker | ||||
| 	speakers []Speaker | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue