Remove unsigned integer type for now
This commit is contained in:
@ -1346,7 +1346,6 @@ impl Literal {
|
||||
// calling (6.0).to_string() outputs "6" not "6.0".
|
||||
// It's important that fractional numbers stay fractional after recasting.
|
||||
LiteralValue::Fractional(n) => format!("{n:?}"),
|
||||
LiteralValue::UInteger(n) => n.to_string(),
|
||||
LiteralValue::IInteger(n) => n.to_string(),
|
||||
LiteralValue::String(ref s) => {
|
||||
let quote = if self.raw.trim().starts_with('"') { '"' } else { '\'' };
|
||||
@ -1972,8 +1971,7 @@ impl MemberExpression {
|
||||
LiteralIdentifier::Literal(literal) => {
|
||||
let value = literal.value.clone();
|
||||
match value {
|
||||
LiteralValue::UInteger(x) => return self.get_result_array(memory, x as usize),
|
||||
LiteralValue::IInteger(x) if x > 0 => return self.get_result_array(memory, x as usize),
|
||||
LiteralValue::IInteger(x) if x >= 0 => return self.get_result_array(memory, x as usize),
|
||||
LiteralValue::IInteger(x) => {
|
||||
return Err(KclError::Syntax(KclErrorDetails {
|
||||
source_ranges: vec![self.into()],
|
||||
|
||||
@ -8,7 +8,6 @@ use super::{Literal, Value};
|
||||
#[ts(export)]
|
||||
#[serde(tag = "type", content = "data", rename_all = "snake_case")]
|
||||
pub enum LiteralValue {
|
||||
UInteger(u64),
|
||||
IInteger(i64),
|
||||
Fractional(f64),
|
||||
String(String),
|
||||
@ -24,7 +23,6 @@ impl From<LiteralValue> for JValue {
|
||||
fn from(value: LiteralValue) -> Self {
|
||||
match value {
|
||||
LiteralValue::IInteger(x) => x.into(),
|
||||
LiteralValue::UInteger(x) => x.into(),
|
||||
LiteralValue::Fractional(x) => x.into(),
|
||||
LiteralValue::String(x) => x.into(),
|
||||
}
|
||||
@ -49,24 +47,19 @@ impl From<String> for LiteralValue {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<u64> for LiteralValue {
|
||||
fn from(value: u64) -> Self {
|
||||
Self::UInteger(value)
|
||||
}
|
||||
}
|
||||
impl From<u32> for LiteralValue {
|
||||
fn from(value: u32) -> Self {
|
||||
Self::UInteger(value as u64)
|
||||
Self::IInteger(value as i64)
|
||||
}
|
||||
}
|
||||
impl From<u16> for LiteralValue {
|
||||
fn from(value: u16) -> Self {
|
||||
Self::UInteger(value as u64)
|
||||
Self::IInteger(value as i64)
|
||||
}
|
||||
}
|
||||
impl From<u8> for LiteralValue {
|
||||
fn from(value: u8) -> Self {
|
||||
Self::UInteger(value as u64)
|
||||
Self::IInteger(value as i64)
|
||||
}
|
||||
}
|
||||
impl From<&'static str> for LiteralValue {
|
||||
|
||||
@ -94,7 +94,7 @@ mod tests {
|
||||
#[test]
|
||||
fn parse_and_evaluate() {
|
||||
/// Make a literal
|
||||
fn lit(n: u64) -> BinaryPart {
|
||||
fn lit(n: i64) -> BinaryPart {
|
||||
BinaryPart::Literal(Box::new(Literal {
|
||||
start: 0,
|
||||
end: 0,
|
||||
|
||||
@ -238,7 +238,7 @@ fn unsigned_number_literal(i: TokenSlice) -> PResult<Literal> {
|
||||
.try_map(|token: Token| match token.token_type {
|
||||
TokenType::Number => {
|
||||
if let Ok(x) = token.value.parse::<u64>() {
|
||||
return Ok((LiteralValue::UInteger(x), token));
|
||||
return Ok((LiteralValue::IInteger(x as i64), token));
|
||||
}
|
||||
let x: f64 = token.value.parse().map_err(|_| {
|
||||
KclError::Syntax(KclErrorDetails {
|
||||
@ -397,6 +397,7 @@ fn integer_range(i: TokenSlice) -> PResult<Vec<Value>> {
|
||||
let (_token1, ceiling) = integer.parse_next(i)?;
|
||||
Ok((floor..=ceiling)
|
||||
.map(|num| {
|
||||
let num = num as i64;
|
||||
Value::Literal(Box::new(Literal {
|
||||
start: token0.start,
|
||||
end: token0.end,
|
||||
|
||||
Reference in New Issue
Block a user