summaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/codegen_decl.c10
-rw-r--r--src/codegen/codegen_stmt.c2
2 files changed, 11 insertions, 1 deletions
diff --git a/src/codegen/codegen_decl.c b/src/codegen/codegen_decl.c
index 109aa9a..18d81f5 100644
--- a/src/codegen/codegen_decl.c
+++ b/src/codegen/codegen_decl.c
@@ -732,6 +732,11 @@ void emit_protos(ASTNode *node, FILE *out)
ASTNode *m = f->impl.methods;
while (m)
{
+ if (m->func.generic_params)
+ {
+ m = m->next;
+ continue;
+ }
char *fname = m->func.name;
char *proto = xmalloc(strlen(fname) + strlen(sname) + 2);
int slen = strlen(sname);
@@ -810,6 +815,11 @@ void emit_protos(ASTNode *node, FILE *out)
ASTNode *m = f->impl_trait.methods;
while (m)
{
+ if (m->func.generic_params)
+ {
+ m = m->next;
+ continue;
+ }
if (m->func.is_async)
{
fprintf(out, "Async %s(%s);\n", m->func.name, m->func.args);
diff --git a/src/codegen/codegen_stmt.c b/src/codegen/codegen_stmt.c
index 983130c..54c6a14 100644
--- a/src/codegen/codegen_stmt.c
+++ b/src/codegen/codegen_stmt.c
@@ -551,7 +551,7 @@ void codegen_node_single(ParserContext *ctx, ASTNode *node, FILE *out)
fprintf(out, ";\n");
break;
case NODE_FUNCTION:
- if (!node->func.body)
+ if (!node->func.body || node->func.generic_params)
{
break;
}