aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-05-17 12:48:56 -0400
committerGitHub <noreply@github.com>2020-05-17 12:48:56 -0400
commit9a22c8b6ca98fd01795f8cd4f3e9d92311175f13 (patch)
treed580bf0cd72ee38b1b2d9aa0d6255d0de9b4369e /src/ir.cpp
parent03ed9e4173131ac5e6157be500e3c50f7e0b0947 (diff)
parent887bf8ba93a9d060e08e3792afd6b5b9dabd9ccf (diff)
downloadzig-9a22c8b6ca98fd01795f8cd4f3e9d92311175f13.tar.gz
zig-9a22c8b6ca98fd01795f8cd4f3e9d92311175f13.zip
Merge pull request #5057 from xackus/opaque-param
stage1: fix assert fail on opaque fn ptr param
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index 6bd4e9b805..20e83ecb9d 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -31109,6 +31109,19 @@ static ZigType *ir_resolve_lazy_fn_type(IrAnalyze *ira, AstNode *source_node, La
ZigType *param_type = ir_resolve_type(ira, param_type_inst);
if (type_is_invalid(param_type))
return nullptr;
+
+ if(!is_valid_param_type(param_type)){
+ if(param_type->id == ZigTypeIdOpaque){
+ ir_add_error(ira, &param_type_inst->base,
+ buf_sprintf("parameter of opaque type '%s' not allowed", buf_ptr(&param_type->name)));
+ } else {
+ ir_add_error(ira, &param_type_inst->base,
+ buf_sprintf("parameter of type '%s' not allowed", buf_ptr(&param_type->name)));
+ }
+
+ return nullptr;
+ }
+
switch (type_requires_comptime(ira->codegen, param_type)) {
case ReqCompTimeYes:
if (!calling_convention_allows_zig_types(fn_type_id.cc)) {