diff options
| author | gingerBill <bill@gingerbill.org> | 2020-05-14 13:44:28 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2020-05-14 13:44:28 +0100 |
| commit | e0a242e9a1f792752213e41fcc3603565d3d8986 (patch) | |
| tree | cb896003c0eb472240500f2caa6e804d977c360f /src/check_expr.cpp | |
| parent | cd4403be0c2656f0d4ba74a96eccaf905beae2ff (diff) | |
Enforce explicit context definition for procedure calls
Diffstat (limited to 'src/check_expr.cpp')
| -rw-r--r-- | src/check_expr.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 4d3268f44..e6812b81d 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -7411,6 +7411,12 @@ ExprKind check_call_expr(CheckerContext *c, Operand *operand, Ast *call, Type *t Type *pt = base_type(proc_type); + if (pt->kind == Type_Proc && pt->Proc.calling_convention == ProcCC_Odin) { + if ((c->scope->flags & ScopeFlag_ContextDefined) == 0) { + error(call, "'context' has not been defined within this scope, but is required for this procedure call"); + } + } + #if 0 if (pt->kind == Type_Proc && pt->Proc.calling_convention == ProcCC_Odin) { init_core_context(c->checker); |