diff --git a/nac3core/src/codegen/model/int.rs b/nac3core/src/codegen/model/int.rs index 3315f97b..6eede4a8 100644 --- a/nac3core/src/codegen/model/int.rs +++ b/nac3core/src/codegen/model/int.rs @@ -12,7 +12,7 @@ use crate::codegen::{CodeGenContext, CodeGenerator}; use super::*; pub trait IntKind<'ctx>: fmt::Debug + Clone + Copy { - fn get_int_type(&self, size_t: IntType<'ctx>, ctx: &'ctx Context) -> IntType<'ctx>; + fn int_type(&self, size_t: IntType<'ctx>, ctx: &'ctx Context) -> IntType<'ctx>; } #[derive(Debug, Clone, Copy, Default)] @@ -27,31 +27,31 @@ pub struct Int64; pub struct SizeT; impl<'ctx> IntKind<'ctx> for Bool { - fn get_int_type(&self, _size_t: IntType<'ctx>, ctx: &'ctx Context) -> IntType<'ctx> { + fn int_type(&self, _size_t: IntType<'ctx>, ctx: &'ctx Context) -> IntType<'ctx> { ctx.bool_type() } } impl<'ctx> IntKind<'ctx> for Byte { - fn get_int_type(&self, _size_t: IntType<'ctx>, ctx: &'ctx Context) -> IntType<'ctx> { + fn int_type(&self, _size_t: IntType<'ctx>, ctx: &'ctx Context) -> IntType<'ctx> { ctx.i8_type() } } impl<'ctx> IntKind<'ctx> for Int32 { - fn get_int_type(&self, _size_t: IntType<'ctx>, ctx: &'ctx Context) -> IntType<'ctx> { + fn int_type(&self, _size_t: IntType<'ctx>, ctx: &'ctx Context) -> IntType<'ctx> { ctx.i32_type() } } impl<'ctx> IntKind<'ctx> for Int64 { - fn get_int_type(&self, _size_t: IntType<'ctx>, ctx: &'ctx Context) -> IntType<'ctx> { + fn int_type(&self, _size_t: IntType<'ctx>, ctx: &'ctx Context) -> IntType<'ctx> { ctx.i64_type() } } impl<'ctx> IntKind<'ctx> for SizeT { - fn get_int_type(&self, size_t: IntType<'ctx>, _ctx: &'ctx Context) -> IntType<'ctx> { + fn int_type(&self, size_t: IntType<'ctx>, _ctx: &'ctx Context) -> IntType<'ctx> { size_t } } @@ -60,7 +60,7 @@ impl<'ctx> IntKind<'ctx> for SizeT { pub struct AnyInt<'ctx>(pub IntType<'ctx>); impl<'ctx> IntKind<'ctx> for AnyInt<'ctx> { - fn get_int_type(&self, _size_t: IntType<'ctx>, _ctx: &'ctx Context) -> IntType<'ctx> { + fn int_type(&self, _size_t: IntType<'ctx>, _ctx: &'ctx Context) -> IntType<'ctx> { self.0 } } @@ -73,7 +73,7 @@ pub struct Int<'ctx, N: IntKind<'ctx>> { impl<'ctx, N: IntKind<'ctx>> ModelBase<'ctx> for Int<'ctx, N> { fn llvm_type_impl(&self, size_t: IntType<'ctx>, ctx: &'ctx Context) -> BasicTypeEnum<'ctx> { - self.kind.get_int_type(size_t, ctx).into() + self.kind.int_type(size_t, ctx).into() } fn check_type_impl( @@ -86,7 +86,7 @@ impl<'ctx, N: IntKind<'ctx>> ModelBase<'ctx> for Int<'ctx, N> { return Err(ModelError(format!("Expecting IntType, but got {ty:?}"))); }; - let exp_ty = self.kind.get_int_type(size_t, ctx); + let exp_ty = self.kind.int_type(size_t, ctx); if ty.get_bit_width() != exp_ty.get_bit_width() { return Err(ModelError(format!( "Expecting IntType to have {} bit(s), but got {} bit(s)", @@ -153,10 +153,7 @@ impl<'ctx, N: IntKind<'ctx>> Int<'ctx, N> { ) -> Instance<'ctx, Self> { assert!( value.get_type().get_bit_width() - <= self - .kind - .get_int_type(generator.get_size_type(ctx.ctx), ctx.ctx) - .get_bit_width() + <= self.kind.int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width() ); let value = ctx .builder @@ -173,7 +170,7 @@ impl<'ctx, N: IntKind<'ctx>> Int<'ctx, N> { ) -> Instance<'ctx, Self> { assert!( value.get_type().get_bit_width() - < self.kind.get_int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width() + < self.kind.int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width() ); let value = ctx.builder.build_int_s_extend(value, self.llvm_type(generator, ctx.ctx), "").unwrap(); @@ -188,10 +185,7 @@ impl<'ctx, N: IntKind<'ctx>> Int<'ctx, N> { ) -> Instance<'ctx, Self> { assert!( value.get_type().get_bit_width() - <= self - .kind - .get_int_type(generator.get_size_type(ctx.ctx), ctx.ctx) - .get_bit_width() + <= self.kind.int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width() ); let value = ctx .builder @@ -208,7 +202,7 @@ impl<'ctx, N: IntKind<'ctx>> Int<'ctx, N> { ) -> Instance<'ctx, Self> { assert!( value.get_type().get_bit_width() - < self.kind.get_int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width() + < self.kind.int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width() ); let value = ctx.builder.build_int_z_extend(value, self.llvm_type(generator, ctx.ctx), "").unwrap(); @@ -223,10 +217,7 @@ impl<'ctx, N: IntKind<'ctx>> Int<'ctx, N> { ) -> Instance<'ctx, Self> { assert!( value.get_type().get_bit_width() - >= self - .kind - .get_int_type(generator.get_size_type(ctx.ctx), ctx.ctx) - .get_bit_width() + >= self.kind.int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width() ); let value = ctx .builder @@ -243,7 +234,7 @@ impl<'ctx, N: IntKind<'ctx>> Int<'ctx, N> { ) -> Instance<'ctx, Self> { assert!( value.get_type().get_bit_width() - > self.kind.get_int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width() + > self.kind.int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width() ); let value = ctx.builder.build_int_truncate(value, self.llvm_type(generator, ctx.ctx), "").unwrap(); @@ -259,7 +250,7 @@ impl<'ctx, N: IntKind<'ctx>> Int<'ctx, N> { ) -> Instance<'ctx, Self> { let their_width = value.get_type().get_bit_width(); let our_width = - self.kind.get_int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width(); + self.kind.int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width(); match their_width.cmp(&our_width) { Ordering::Less => self.s_extend(generator, ctx, value), Ordering::Equal => unsafe { self.believe_value(value) }, @@ -276,7 +267,7 @@ impl<'ctx, N: IntKind<'ctx>> Int<'ctx, N> { ) -> Instance<'ctx, Self> { let their_width = value.get_type().get_bit_width(); let our_width = - self.kind.get_int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width(); + self.kind.int_type(generator.get_size_type(ctx.ctx), ctx.ctx).get_bit_width(); match their_width.cmp(&our_width) { Ordering::Less => self.z_extend(generator, ctx, value), Ordering::Equal => unsafe { self.believe_value(value) },