diff options
| author | Evan Haas <evan@lagerdata.com> | 2022-01-10 11:54:11 -0800 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-01-11 12:42:23 -0500 |
| commit | f4b3f1d6022265992f87cea1d9591ffa8ec226d6 (patch) | |
| tree | 25813410d61efaaf1520ddf31edb362ef2f0bb18 /src | |
| parent | 6d9c02a54fc847e9bed3096f910e03babec63acb (diff) | |
| download | zig-f4b3f1d6022265992f87cea1d9591ffa8ec226d6.tar.gz zig-f4b3f1d6022265992f87cea1d9591ffa8ec226d6.zip | |
translate-c: Handle typedef'ed void return type for functions.
Fixes #10356
Diffstat (limited to 'src')
| -rw-r--r-- | src/translate_c.zig | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/translate_c.zig b/src/translate_c.zig index 4d993e62ea..971551fb69 100644 --- a/src/translate_c.zig +++ b/src/translate_c.zig @@ -4824,11 +4824,18 @@ fn qualTypeWasDemotedToOpaque(c: *Context, qt: clang.QualType) bool { fn isAnyopaque(qt: clang.QualType) bool { const ty = qt.getTypePtr(); - if (ty.getTypeClass() == .Builtin) { - const builtin_ty = @ptrCast(*const clang.BuiltinType, ty); - return builtin_ty.getKind() == .Void; + switch (ty.getTypeClass()) { + .Builtin => { + const builtin_ty = @ptrCast(*const clang.BuiltinType, ty); + return builtin_ty.getKind() == .Void; + }, + .Typedef => { + const typedef_ty = @ptrCast(*const clang.TypedefType, ty); + const typedef_decl = typedef_ty.getDecl(); + return isAnyopaque(typedef_decl.getUnderlyingType()); + }, + else => return false, } - return false; } const FnDeclContext = struct { |
