diff --git a/crates/compiler/gen_dev/src/lib.rs b/crates/compiler/gen_dev/src/lib.rs index ef8425f454..b78788269e 100644 --- a/crates/compiler/gen_dev/src/lib.rs +++ b/crates/compiler/gen_dev/src/lib.rs @@ -1109,6 +1109,17 @@ trait Backend<'a> { arg_layouts, ret_layout, ), + LowLevel::NumToStr => { + let arg_layout = arg_layouts[0]; + let intrinsic = match self.interner().get(arg_layout) { + Layout::Builtin(Builtin::Int(width)) => &bitcode::STR_FROM_INT[width], + Layout::Builtin(Builtin::Float(width)) => &bitcode::STR_FROM_FLOAT[width], + Layout::Builtin(Builtin::Decimal) => bitcode::DEC_TO_STR, + x => internal_error!("NumToStr is not defined for {:?}", x), + }; + + self.build_fn_call(sym, intrinsic.to_string(), args, arg_layouts, ret_layout) + } x => todo!("low level, {:?}", x), } } diff --git a/crates/compiler/test_gen/src/gen_num.rs b/crates/compiler/test_gen/src/gen_num.rs index 1eed3af00c..5704559f9a 100644 --- a/crates/compiler/test_gen/src/gen_num.rs +++ b/crates/compiler/test_gen/src/gen_num.rs @@ -3113,7 +3113,7 @@ fn when_on_i16() { } #[test] -#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))] +#[cfg(any(feature = "gen-llvm", feature = "gen-wasm", feature = "gen-dev"))] fn num_to_str() { use roc_std::RocStr;