aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2025-05-25 14:47:30 -0400
committerBruce Hill <bruce@bruce-hill.com>2025-05-25 14:47:30 -0400
commitc48f08ed0ee6f7054084e366cfa5fad2a51bac53 (patch)
tree7eedebe60cfdfc1c9b4896d7a2d78ab577e15a59
parent6d15697edce2217a2bbc82def26262d18dac6373 (diff)
Add a check to ensure that Extend is extending a recognized type.
-rw-r--r--src/compile.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/compile.c b/src/compile.c
index bd963951..89cb667b 100644
--- a/src/compile.c
+++ b/src/compile.c
@@ -4383,7 +4383,10 @@ CORD compile_top_level_code(env_t *env, ast_t *ast)
}
case Extend: {
DeclareMatch(extend, ast, Extend);
- env_t *ns_env = namespace_env(env, extend->name);
+ binding_t *b = get_binding(env, extend->name);
+ if (!b)
+ code_err(ast, "'", extend->name, "' is not the name of any type I recognize.");
+ env_t *ns_env = Match(b->type, TypeInfoType)->env;
env_t *extended = new(env_t);
*extended = *ns_env;
extended->locals = new(Table_t, .fallback=env->locals);