aboutsummaryrefslogtreecommitdiff
path: root/src/compile
diff options
context:
space:
mode:
Diffstat (limited to 'src/compile')
-rw-r--r--src/compile/expressions.c1
-rw-r--r--src/compile/files.c15
-rw-r--r--src/compile/functions.c5
-rw-r--r--src/compile/headers.c17
-rw-r--r--src/compile/statements.c1
5 files changed, 1 insertions, 38 deletions
diff --git a/src/compile/expressions.c b/src/compile/expressions.c
index b9fafeb8..098ed4ca 100644
--- a/src/compile/expressions.c
+++ b/src/compile/expressions.c
@@ -241,7 +241,6 @@ Text_t compile(env_t *env, ast_t *ast) {
case Repeat:
case StructDef:
case LangDef:
- case Extend:
case EnumDef:
case FunctionDef:
case ConvertDef:
diff --git a/src/compile/files.c b/src/compile/files.c
index f331a50a..a4cc07fe 100644
--- a/src/compile/files.c
+++ b/src/compile/files.c
@@ -48,8 +48,6 @@ void initialize_vars_and_statics(env_t *env, ast_t *ast) {
initialize_namespace(env, Match(stmt->ast, EnumDef)->name, Match(stmt->ast, EnumDef)->namespace);
} else if (stmt->ast->tag == LangDef) {
initialize_namespace(env, Match(stmt->ast, LangDef)->name, Match(stmt->ast, LangDef)->namespace);
- } else if (stmt->ast->tag == Extend) {
- initialize_namespace(env, Match(stmt->ast, Extend)->name, Match(stmt->ast, Extend)->body);
} else if (stmt->ast->tag == Use) {
continue;
} else {
@@ -137,19 +135,6 @@ Text_t compile_top_level_code(env_t *env, ast_t *ast) {
", .metamethods=Text$metamethods, .tag=TextInfo, .TextInfo={", quoted_str(def->name), "}};\n");
return Texts(code, compile_namespace(env, def->name, def->namespace));
}
- case Extend: {
- DeclareMatch(extend, ast, Extend);
- binding_t *b = get_binding(env, extend->name);
- if (!b || b->type->tag != TypeInfoType)
- 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);
- extended->namespace_bindings = new (Table_t, .fallback = env->namespace_bindings);
- extended->id_suffix = env->id_suffix;
- return compile_top_level_code(extended, extend->body);
- }
case Block: {
Text_t code = EMPTY_TEXT;
for (ast_list_t *stmt = Match(ast, Block)->statements; stmt; stmt = stmt->next) {
diff --git a/src/compile/functions.c b/src/compile/functions.c
index 40e16e48..ab267e2c 100644
--- a/src/compile/functions.c
+++ b/src/compile/functions.c
@@ -580,10 +580,7 @@ static void add_closed_vars(Table_t *closed_vars, env_t *enclosing_scope, env_t
case ConvertDef:
case StructDef:
case EnumDef:
- case LangDef:
- case Extend: {
- errx(1, "Definitions should not be reachable in a closure.");
- }
+ case LangDef: errx(1, "Definitions should not be reachable in a closure.");
default: break;
}
}
diff --git a/src/compile/headers.c b/src/compile/headers.c
index 1865905c..bc0156ad 100644
--- a/src/compile/headers.c
+++ b/src/compile/headers.c
@@ -25,20 +25,6 @@ Text_t compile_statement_namespace_header(env_t *env, Path_t header_path, ast_t
block = def->namespace;
break;
}
- case Extend: {
- DeclareMatch(extend, ast, Extend);
- ns_env = namespace_env(env, extend->name);
-
- env_t *extended = new (env_t);
- *extended = *ns_env;
- extended->locals = new (Table_t, .fallback = env->locals);
- extended->namespace_bindings = new (Table_t, .fallback = env->namespace_bindings);
- extended->id_suffix = env->id_suffix;
- ns_env = extended;
-
- block = extend->body;
- break;
- }
case StructDef: {
DeclareMatch(def, ast, StructDef);
ns_env = namespace_env(env, def->name);
@@ -251,9 +237,6 @@ Text_t compile_statement_type_header(env_t *env, Path_t header_path, ast_t *ast)
"extern const TypeInfo_t ",
namespace_name(env, env->namespace, Texts(def->name, Text("$$info"))), ";\n");
}
- case Extend: {
- return EMPTY_TEXT;
- }
default: return EMPTY_TEXT;
}
}
diff --git a/src/compile/statements.c b/src/compile/statements.c
index 156cc8c0..a9ec4327 100644
--- a/src/compile/statements.c
+++ b/src/compile/statements.c
@@ -76,7 +76,6 @@ static Text_t _compile_statement(env_t *env, ast_t *ast) {
case StructDef:
case EnumDef:
case LangDef:
- case Extend:
case FunctionDef:
case ConvertDef: {
return EMPTY_TEXT;