cgen: fix for passing functions as voidptr args
							parent
							
								
									e3f7681e89
								
							
						
					
					
						commit
						e5a5e76a30
					
				| 
						 | 
					@ -834,3 +834,37 @@ fn test_string_alias() {
 | 
				
			||||||
	ss := s + '!'
 | 
						ss := s + '!'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// sort an array of structs, by their string field values
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct Ka {
 | 
				
			||||||
 | 
						s string
 | 
				
			||||||
 | 
						i int
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn test_sorter() {
 | 
				
			||||||
 | 
						mut arr := [
 | 
				
			||||||
 | 
							Ka{
 | 
				
			||||||
 | 
								s: 'bbb'
 | 
				
			||||||
 | 
								i: 100
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							Ka{
 | 
				
			||||||
 | 
								s: 'aaa'
 | 
				
			||||||
 | 
								i: 101
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							Ka{
 | 
				
			||||||
 | 
								s: 'ccc'
 | 
				
			||||||
 | 
								i: 102
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						]
 | 
				
			||||||
 | 
						cmp := fn (a, b &Ka) int {
 | 
				
			||||||
 | 
							return compare_strings(a.s, b.s)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						arr.sort_with_compare(cmp)
 | 
				
			||||||
 | 
						assert arr[0].s == 'aaa'
 | 
				
			||||||
 | 
						assert arr[0].i == 101
 | 
				
			||||||
 | 
						assert arr[1].s == 'bbb'
 | 
				
			||||||
 | 
						assert arr[1].i == 100
 | 
				
			||||||
 | 
						assert arr[2].s == 'ccc'
 | 
				
			||||||
 | 
						assert arr[2].i == 102
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -644,9 +644,12 @@ fn (mut g Gen) ref_or_deref_arg(arg ast.CallArg, expected_type table.Type) {
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if !g.is_json_fn {
 | 
							if !g.is_json_fn {
 | 
				
			||||||
 | 
								arg_typ_sym := g.table.get_type_symbol(arg.typ)            
 | 
				
			||||||
 | 
								if arg_typ_sym.kind != .function {
 | 
				
			||||||
				g.write('(voidptr)&/*qq*/')
 | 
									g.write('(voidptr)&/*qq*/')
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	g.expr_with_cast(arg.expr, arg.typ, expected_type)
 | 
						g.expr_with_cast(arg.expr, arg.typ, expected_type)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue