about summary refs log tree commit diff
path: root/src/bootstrap/codegen.pry
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-07-11 20:34:05 +0200
committerBaitinq <[email protected]>2025-07-11 20:34:05 +0200
commit22a46dc9b27fdd90e2dc307292b85bae42516e4f (patch)
treeebfaba570113926c694702719fb85c6fd86b83ab /src/bootstrap/codegen.pry
parentBoostrap: Parse ( expr ) (diff)
downloadpry-lang-22a46dc9b27fdd90e2dc307292b85bae42516e4f.tar.gz
pry-lang-22a46dc9b27fdd90e2dc307292b85bae42516e4f.tar.bz2
pry-lang-22a46dc9b27fdd90e2dc307292b85bae42516e4f.zip
Boostrap: Support cast statement
Diffstat (limited to 'src/bootstrap/codegen.pry')
-rw-r--r--src/bootstrap/codegen.pry13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/bootstrap/codegen.pry b/src/bootstrap/codegen.pry
index 1a81c42..50836cc 100644
--- a/src/bootstrap/codegen.pry
+++ b/src/bootstrap/codegen.pry
@@ -648,6 +648,19 @@ let codegen_generate_expression_value = (c: *codegen, expression: *Node, name: *
 	if ((*expression).type == NODE_FUNCTION_CALL_STATEMENT) {
 		return codegen_generate_function_call_statement(c, expression);
 	};
+	
+	if ((*expression).type == NODE_CAST_STATEMENT) {
+		let exp = *cast(*NODE_CAST_STATEMENT_DATA, (*expression).data);
+		let val = codegen_generate_expression_value(c, exp.expression, "");
+		assert(val != cast(*Variable, null));
+		let v = Variable{};
+		v.value = (*val).value;
+		v.type = cast(LLVMTypeRef, null);
+		v.stack_level = cast(*i64, null);
+		v.node = expression;
+		v.node_type = exp.typ;
+		return codegen_create_variable(c, v);
+	};
 
 	printf("ASSERT 1: %d\n", (*expression).type);
 	assert(false);