lemonlang 0.0.4

an experimental, modern, purely safe, programming language.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use crate::{ast::StructType, ir::Struct};

use super::{context::FieldTable, Builder};

impl Builder<'_> {
	pub fn build_struct_def_stmt(&mut self, struct_type: &mut StructType) -> (Struct, FieldTable) {
		let mut field_table = FieldTable::default();
		let mut ir_struct = Struct::with_capacity(struct_type.fields.len());
		for field in struct_type.fields.iter() {
			let field_name = field.ident.lexeme();
			let field_type = self.build_type(field.get_type_id(), field.get_range());
			let position = ir_struct.add_field(field_type);
			field_table.insert(field_name.into(), (field_type, position));
		}
		(ir_struct, field_table)
	}
}