From 76ce025faa596c6bc43f328674c0f77eeffd029e Mon Sep 17 00:00:00 2001 From: Ayaz Hafiz Date: Tue, 11 Oct 2022 10:48:25 -0500 Subject: [PATCH] Turn on type caching for Encode, Decode, Hash --- crates/compiler/load/build.rs | 1 + crates/compiler/load/src/lib.rs | 11 ++++++++++- crates/compiler/load_internal/src/lib.rs | 17 +++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/crates/compiler/load/build.rs b/crates/compiler/load/build.rs index 8c39b69d37..08583d00d6 100644 --- a/crates/compiler/load/build.rs +++ b/crates/compiler/load/build.rs @@ -11,6 +11,7 @@ const SKIP_SUBS_CACHE: bool = { } }; +// IFTTT: crates/compiler/load/src/lib.rs const MODULES: &[(ModuleId, &str)] = &[ (ModuleId::BOOL, "Bool.roc"), (ModuleId::RESULT, "Result.roc"), diff --git a/crates/compiler/load/src/lib.rs b/crates/compiler/load/src/lib.rs index 5c3ea10da1..1a5925fa0a 100644 --- a/crates/compiler/load/src/lib.rs +++ b/crates/compiler/load/src/lib.rs @@ -156,14 +156,18 @@ pub fn load_and_typecheck_str<'a>( } } +// IFTTT: crates/compiler/load/build.rs const BOOL: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Bool.dat")) as &[_]; const RESULT: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Result.dat")) as &[_]; +const NUM: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Num.dat")) as &[_]; const LIST: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/List.dat")) as &[_]; const STR: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Str.dat")) as &[_]; const DICT: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Dict.dat")) as &[_]; const SET: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Set.dat")) as &[_]; const BOX: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Box.dat")) as &[_]; -const NUM: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Num.dat")) as &[_]; +const ENCODE: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Encode.dat")) as &[_]; +const DECODE: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Decode.dat")) as &[_]; +const HASH: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Hash.dat")) as &[_]; fn deserialize_help(bytes: &[u8]) -> TypeState { let (state, _offset) = TypeState::deserialize(bytes); @@ -188,6 +192,11 @@ fn read_cached_types() -> MutMap { output.insert(ModuleId::SET, deserialize_help(SET)); output.insert(ModuleId::BOX, deserialize_help(BOX)); + + output.insert(ModuleId::ENCODE, deserialize_help(ENCODE)); + output.insert(ModuleId::DECODE, deserialize_help(DECODE)); + + output.insert(ModuleId::HASH, deserialize_help(HASH)); } output diff --git a/crates/compiler/load_internal/src/lib.rs b/crates/compiler/load_internal/src/lib.rs index e7131d151e..89e7656529 100644 --- a/crates/compiler/load_internal/src/lib.rs +++ b/crates/compiler/load_internal/src/lib.rs @@ -1,9 +1,26 @@ #![warn(clippy::dbg_macro)] // See github.com/roc-lang/roc/issues/800 for discussion of the large_enum_variant check. #![allow(clippy::large_enum_variant)] + +use roc_module::symbol::ModuleId; pub mod docs; pub mod file; mod work; #[cfg(target_family = "wasm")] mod wasm_instant; + +pub const BUILTIN_MODULES: &[(ModuleId, &str)] = &[ + (ModuleId::BOOL, "Bool"), + (ModuleId::RESULT, "Result"), + (ModuleId::NUM, "Num"), + (ModuleId::LIST, "List"), + (ModuleId::STR, "Str"), + (ModuleId::DICT, "Dict"), + (ModuleId::SET, "Set"), + (ModuleId::BOX, "Box"), + (ModuleId::ENCODE, "Encode"), + (ModuleId::DECODE, "Decode"), + (ModuleId::HASH, "Hash"), + (ModuleId::JSON, "Json"), +];