Codegen unary expressions
This commit is contained in:
parent
00689d3637
commit
dd632b6bcc
@ -448,11 +448,18 @@ namespace AST {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<types::Type> UnaryExpression::get_codegen_type(codegen::Scope& scope) {
|
std::shared_ptr<types::Type> UnaryExpression::get_codegen_type(codegen::Scope& scope) {
|
||||||
return this->m_expr->get_codegen_type(scope);
|
auto unary = types::find_unop(scope.unops, this->m_expr->get_codegen_type(scope), this->m_unary);
|
||||||
|
return unary->res;
|
||||||
}
|
}
|
||||||
|
|
||||||
codegen::StackValue UnaryExpression::codegen(codegen::Builder&, codegen::Scope&, codegen::StackAllocator&) {
|
codegen::StackValue UnaryExpression::codegen(codegen::Builder& builder, codegen::Scope& scope, codegen::StackAllocator& allocator) {
|
||||||
throw std::runtime_error("TODO");
|
auto unary = types::find_unop(scope.unops, this->m_expr->get_codegen_type(scope), this->m_unary);
|
||||||
|
auto lvalue = scope.with_lvalue();
|
||||||
|
auto expr_ptr = this->m_expr->codegen(builder, lvalue, allocator);
|
||||||
|
return {
|
||||||
|
unary->codegen(builder, this->m_expr->get_codegen_type(scope), expr_ptr.value),
|
||||||
|
unary->res
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReturnStatement::codegen(codegen::Builder& builder, codegen::Scope& scope, codegen::StackAllocator& allocator) {
|
void ReturnStatement::codegen(codegen::Builder& builder, codegen::Scope& scope, codegen::StackAllocator& allocator) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user