diff --git a/crates/kind-checker/src/compiler/mod.rs b/crates/kind-checker/src/compiler/mod.rs index 5a6fe513..06054e4c 100644 --- a/crates/kind-checker/src/compiler/mod.rs +++ b/crates/kind-checker/src/compiler/mod.rs @@ -267,8 +267,8 @@ fn codegen_all_expr( eval_ctr(quote, TermTag::Hole), vec![span_to_num(expr.span), mk_u60(*num)], ), + Str(str) => codegen_str(str), Hlp(_) => mk_lifted_ctr(eval_ctr(quote, TermTag::Hlp), vec![span_to_num(expr.span)]), - Str(_) => todo!("Strings in codegen"), Err => panic!("Internal Error: Was not expecting an ERR node inside the HVM checker"), } } diff --git a/crates/kind-driver/src/resolution.rs b/crates/kind-driver/src/resolution.rs index e9328ae4..2f047a51 100644 --- a/crates/kind-driver/src/resolution.rs +++ b/crates/kind-driver/src/resolution.rs @@ -227,7 +227,7 @@ fn parse_and_store_book_by_path<'a>( expand_uses(&mut module, session.diagnostic_sender.clone()); module_to_book(&mut failed, session, module, book); - + for idents in state.unbound_top_level.values() { failed |= parse_and_store_book_by_identifier(session, &idents.iter().nth(0).unwrap(), book); } diff --git a/crates/kind-parser/src/lexer/tokens.rs b/crates/kind-parser/src/lexer/tokens.rs index 0c12deb9..13e2c704 100644 --- a/crates/kind-parser/src/lexer/tokens.rs +++ b/crates/kind-parser/src/lexer/tokens.rs @@ -144,7 +144,7 @@ impl fmt::Display for Token { Token::Num60(n) => write!(f, "{}", n), Token::Num120(n) => write!(f, "{}u120", n), Token::Float(start, end) => write!(f, "{}.{}", start, end), - Token::Hole => write!(f, "-"), + Token::Hole => write!(f, "_"), Token::Plus => write!(f, "+"), Token::Minus => write!(f, "-"), Token::Star => write!(f, "*"), diff --git a/crates/kind-pass/src/desugar/expr.rs b/crates/kind-pass/src/desugar/expr.rs index fd555701..3676d4ca 100644 --- a/crates/kind-pass/src/desugar/expr.rs +++ b/crates/kind-pass/src/desugar/expr.rs @@ -8,24 +8,6 @@ use crate::errors::{PassError, Sugar}; use super::DesugarState; impl<'a> DesugarState<'a> { - pub(crate) fn desugar_str(&self, range: Range, input: &str) -> Box { - let cons = QualifiedIdent::new_static("String.cons", None, range); - input.chars().rfold( - desugared::Expr::ctr( - range, - QualifiedIdent::new_static("String.nil", None, range), - vec![], - ), - |right, chr| { - desugared::Expr::ctr( - range, - cons.clone(), - vec![desugared::Expr::num60(range, chr as u64), right], - ) - }, - ) - } - pub(crate) fn desugar_literal( &mut self, range: Range, @@ -38,7 +20,7 @@ impl<'a> DesugarState<'a> { Literal::NumType(kind_tree::NumType::U120) => desugared::Expr::u120(range), Literal::Number(kind_tree::Number::U60(num)) => desugared::Expr::num60(range, *num), Literal::Number(kind_tree::Number::U120(num)) => desugared::Expr::num120(range, *num), - Literal::String(string) => self.desugar_str(range, string), + Literal::String(string) => desugared::Expr::str(range, string.clone()), Literal::Char(cht) => desugared::Expr::num60(range, *cht as u64), } } diff --git a/crates/kind-target-hvm/src/lib.rs b/crates/kind-target-hvm/src/lib.rs index 2539e1fd..25eec1d0 100644 --- a/crates/kind-target-hvm/src/lib.rs +++ b/crates/kind-target-hvm/src/lib.rs @@ -70,7 +70,7 @@ pub fn compile_term(expr: &desugared::Expr) -> Box { let cons = |numb, next| { Box::new(Term::Ctr { - name: String::from("U120.new"), + name: String::from("String.cons"), args: vec![Box::new(Term::U6O { numb }), next], }) };