tests
This commit is contained in:
@@ -4223,8 +4223,16 @@ pub const CodeGen = struct {
|
||||
|
||||
fn genSizeOf(self: *CodeGen, call_node: ast.Call) !c.LLVMValueRef {
|
||||
if (call_node.args.len != 1) return self.emitError("size_of expects exactly 1 argument");
|
||||
const ty = self.resolveType(call_node.args[0]);
|
||||
const arg = call_node.args[0];
|
||||
const ty = self.resolveType(arg);
|
||||
if (std.meta.eql(ty, Type.void_type)) {
|
||||
// Uninstantiated generic type function → size of a function pointer
|
||||
if (arg.data == .identifier or arg.data == .type_expr) {
|
||||
const name = if (arg.data == .identifier) arg.data.identifier.name else arg.data.type_expr.name;
|
||||
if (self.generic_templates.contains(name) or self.generic_struct_templates.contains(name)) {
|
||||
return self.constInt64(self.getTypeSize(self.ptrType()));
|
||||
}
|
||||
}
|
||||
return self.constInt64(0);
|
||||
}
|
||||
const llvm_ty = self.typeToLLVM(ty);
|
||||
|
||||
Reference in New Issue
Block a user