remove unused valueless.rs
This commit is contained in:
parent
e8c393f3bb
commit
f35d88d2bb
|
@ -30,7 +30,6 @@ pub struct __;
|
||||||
#[cfg(feature = "unstable-doc")]
|
#[cfg(feature = "unstable-doc")]
|
||||||
pub mod _docs;
|
pub mod _docs;
|
||||||
|
|
||||||
// FIXME: finish
|
|
||||||
pub mod annotations;
|
pub mod annotations;
|
||||||
pub mod array;
|
pub mod array;
|
||||||
pub mod bundle;
|
pub mod bundle;
|
||||||
|
@ -50,5 +49,4 @@ pub mod source_location;
|
||||||
pub mod testing;
|
pub mod testing;
|
||||||
pub mod ty;
|
pub mod ty;
|
||||||
pub mod util;
|
pub mod util;
|
||||||
//pub mod valueless;
|
|
||||||
pub mod wire;
|
pub mod wire;
|
||||||
|
|
|
@ -1,88 +0,0 @@
|
||||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
|
||||||
// See Notices.txt for copyright information
|
|
||||||
use crate::{
|
|
||||||
int::{DynIntType, DynSIntType, DynUIntType, IntTypeTrait, SIntType},
|
|
||||||
ty::{Type, Value},
|
|
||||||
};
|
|
||||||
use std::ops::RangeBounds;
|
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, Default)]
|
|
||||||
pub struct Valueless<T> {
|
|
||||||
pub ty: T,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: Type> Valueless<T> {
|
|
||||||
pub fn to_canonical(&self) -> Valueless<T::CanonicalType> {
|
|
||||||
Valueless {
|
|
||||||
ty: self.ty.canonical(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pub fn from_canonical(v: Valueless<T::CanonicalType>) -> Self {
|
|
||||||
Valueless {
|
|
||||||
ty: T::from_canonical_type(v.ty),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mod sealed {
|
|
||||||
pub trait Sealed {}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub trait ValuelessTr: sealed::Sealed {
|
|
||||||
type Type: Type<Value = Self::Value>;
|
|
||||||
type Value: Value<Type = Self::Type>;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T> sealed::Sealed for Valueless<T> {}
|
|
||||||
|
|
||||||
impl<T: Type> ValuelessTr for Valueless<T> {
|
|
||||||
type Type = T;
|
|
||||||
type Value = T::Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: IntTypeTrait> Valueless<T> {
|
|
||||||
pub fn signum(&self) -> Valueless<SIntType<2>> {
|
|
||||||
Valueless::default()
|
|
||||||
}
|
|
||||||
pub fn as_same_width_uint(self) -> Valueless<T::SameWidthUInt> {
|
|
||||||
Valueless {
|
|
||||||
ty: self.ty.as_same_width_uint(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pub fn as_same_width_sint(self) -> Valueless<T::SameWidthSInt> {
|
|
||||||
Valueless {
|
|
||||||
ty: self.ty.as_same_width_sint(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pub fn as_same_value_uint(self) -> Valueless<DynUIntType> {
|
|
||||||
Valueless {
|
|
||||||
ty: self.ty.as_same_value_uint(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pub fn as_same_value_sint(self) -> Valueless<DynSIntType> {
|
|
||||||
Valueless {
|
|
||||||
ty: self.ty.as_same_value_sint(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pub fn concat<HighType: IntTypeTrait>(
|
|
||||||
&self,
|
|
||||||
high_part: Valueless<HighType>,
|
|
||||||
) -> Valueless<DynIntType<HighType::Signed>> {
|
|
||||||
let ty = DynIntType::new(
|
|
||||||
self.ty
|
|
||||||
.width()
|
|
||||||
.checked_add(high_part.ty.width())
|
|
||||||
.expect("result has too many bits"),
|
|
||||||
);
|
|
||||||
Valueless { ty }
|
|
||||||
}
|
|
||||||
pub fn repeat(&self, count: usize) -> Valueless<DynIntType<T::Signed>> {
|
|
||||||
let width = self.ty.width();
|
|
||||||
let ty = DynIntType::new(width.checked_mul(count).expect("result has too many bits"));
|
|
||||||
Valueless { ty }
|
|
||||||
}
|
|
||||||
pub fn slice<I: RangeBounds<usize>>(&self, index: I) -> Valueless<DynUIntType> {
|
|
||||||
let ty = self.ty.slice(index);
|
|
||||||
Valueless { ty }
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue