aboutsummaryrefslogtreecommitdiff
path: root/typecheck.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-03-09 18:47:56 -0500
committerBruce Hill <bruce@bruce-hill.com>2024-03-09 18:47:56 -0500
commit5131fdff6294b075cc760a8014ef8c9b6d1bf5d8 (patch)
tree2215901e33e0384ee97f5777508a2d2b5baaa70e /typecheck.c
parent77c9669d41d24a89e9364e1a91d9a1343c75537f (diff)
Improve handling of secret text
Diffstat (limited to 'typecheck.c')
-rw-r--r--typecheck.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/typecheck.c b/typecheck.c
index bab1920b..9c9b3b19 100644
--- a/typecheck.c
+++ b/typecheck.c
@@ -182,13 +182,16 @@ void bind_statement(env_t *env, ast_t *statement)
case LangDef: {
auto def = Match(statement, LangDef);
- type_t *type = Type(TextType, .lang=def->name);
+ type_t *type = Type(TextType, .lang=def->name, .secret=def->secret);
Table_str_set(env->types, def->name, type);
env_t *ns_env = namespace_env(env, def->name);
set_binding(ns_env, "from_unsafe_text",
new(binding_t, .type=Type(FunctionType, .args=new(arg_t, .name="text", .type=Type(TextType)), .ret=type),
.code=CORD_all("(", def->name, "_t)")));
+ set_binding(ns_env, "text_content",
+ new(binding_t, .type=Type(FunctionType, .args=new(arg_t, .name="text", .type=Type(TextType)), .ret=type),
+ .code="(Text_t)"));
for (ast_list_t *stmt = def->namespace ? Match(def->namespace, Block)->statements : NULL; stmt; stmt = stmt->next)
bind_statement(ns_env, stmt->ast);