From 28ed310f317d48835f089b6a6102259696b0f84c Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 23 Feb 2021 13:10:23 +0000 Subject: Remove `"pure"` and `"pure_none"` calling conventions --- src/check_expr.cpp | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) (limited to 'src/check_expr.cpp') diff --git a/src/check_expr.cpp b/src/check_expr.cpp index e17d23ed9..42e434f85 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -1162,11 +1162,6 @@ Entity *check_ident(CheckerContext *c, Operand *o, Ast *n, Type *named_type, Typ if (e->flags & EntityFlag_Value) { o->mode = Addressing_Value; } - if (c->curr_proc_calling_convention == ProcCC_Pure) { - if (e->scope->flags & (ScopeFlag_Global|ScopeFlag_File|ScopeFlag_Pkg)) { - error(n, "Global variables are not allowed within a \"pure\" procedure, got '%.*s'", LIT(e->token.string)); - } - } break; case Entity_Procedure: @@ -7816,14 +7811,6 @@ ExprKind check_call_expr(CheckerContext *c, Operand *operand, Ast *call, Ast *pr } } - { - if (c->curr_proc_calling_convention == ProcCC_Pure) { - if (pt->kind == Type_Proc && pt->Proc.calling_convention != ProcCC_Pure && pt->Proc.calling_convention != ProcCC_PureNone) { - error(call, "Only \"pure\" procedure calls are allowed within a \"pure\" procedure"); - } - } - } - #if 0 if (pt->kind == Type_Proc && pt->Proc.calling_convention == ProcCC_Odin) { init_core_context(c->checker); @@ -8168,17 +8155,13 @@ ExprKind check_expr_base_internal(CheckerContext *c, Operand *o, Ast *node, Type error(node, "'context' is only allowed within procedures %p", c->curr_proc_decl); return kind; } - if (c->curr_proc_calling_convention == ProcCC_Pure) { - error(node, "'context' is not allowed within a \"pure\" procedure"); - } else { - if (unparen_expr(c->assignment_lhs_hint) == node) { - c->scope->flags |= ScopeFlag_ContextDefined; - } + if (unparen_expr(c->assignment_lhs_hint) == node) { + c->scope->flags |= ScopeFlag_ContextDefined; + } - if ((c->scope->flags & ScopeFlag_ContextDefined) == 0) { - error(node, "'context' has not been defined within this scope"); - // Continue with value - } + if ((c->scope->flags & ScopeFlag_ContextDefined) == 0) { + error(node, "'context' has not been defined within this scope"); + // Continue with value } init_core_context(c->checker); -- cgit v1.2.3