From c62c3200c7078f58b218def14c54bbfd26677069 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 24 Aug 2025 15:32:17 -0400 Subject: Pluralize filenames --- src/compile/pointer.c | 49 ------------------------------------------------- 1 file changed, 49 deletions(-) delete mode 100644 src/compile/pointer.c (limited to 'src/compile/pointer.c') diff --git a/src/compile/pointer.c b/src/compile/pointer.c deleted file mode 100644 index 50c267b6..00000000 --- a/src/compile/pointer.c +++ /dev/null @@ -1,49 +0,0 @@ -// Compilation logic -#include -#include -#include -#include - -#include "../ast.h" -#include "../compile.h" -#include "../config.h" -#include "../environment.h" -#include "../stdlib/text.h" -#include "../typecheck.h" -#include "list.h" - -Text_t compile_to_pointer_depth(env_t *env, ast_t *ast, int64_t target_depth, bool needs_incref) { - Text_t val = compile(env, ast); - type_t *t = get_type(env, ast); - int64_t depth = 0; - for (type_t *tt = t; tt->tag == PointerType; tt = Match(tt, PointerType)->pointed) - ++depth; - - // Passing a literal value won't trigger an incref, because it's ephemeral, - // e.g. [10, 20].reversed() - if (t->tag != PointerType && needs_incref && !can_be_mutated(env, ast)) needs_incref = false; - - while (depth != target_depth) { - if (depth < target_depth) { - if (ast->tag == Var && target_depth == 1) val = Texts("(&", val, ")"); - else code_err(ast, "This should be a pointer, not ", type_to_str(get_type(env, ast))); - t = Type(PointerType, .pointed = t, .is_stack = true); - ++depth; - } else { - DeclareMatch(ptr, t, PointerType); - val = Texts("*(", val, ")"); - t = ptr->pointed; - --depth; - } - } - - while (t->tag == PointerType) { - DeclareMatch(ptr, t, PointerType); - t = ptr->pointed; - } - - if (needs_incref && t->tag == ListType) val = Texts("LIST_COPY(", val, ")"); - else if (needs_incref && (t->tag == TableType || t->tag == SetType)) val = Texts("TABLE_COPY(", val, ")"); - - return val; -} -- cgit v1.2.3