rue_compiler/compile/ty/
union.rs1use log::debug;
2use rue_ast::AstUnionType;
3use rue_types::{Type, TypeId, Union};
4
5use crate::{Compiler, compile_type};
6
7pub fn compile_union_type(ctx: &mut Compiler, union: &AstUnionType) -> TypeId {
8 let mut types = Vec::new();
9
10 for ty in union.types() {
11 types.push(compile_type(ctx, &ty));
12 }
13
14 if types.is_empty() {
15 debug!("Unresolved union type");
16 return ctx.builtins().unresolved.ty;
17 }
18
19 ctx.alloc_type(Type::Union(Union::new(types)))
20}