Skip to content

Commit 08fef8e

Browse files
authored
Merge pull request sl-sh-dev#169 from sl-sh-dev/io-builtins
Io builtins
2 parents 3563510 + 8969b11 commit 08fef8e

File tree

23 files changed

+1773
-84
lines changed

23 files changed

+1773
-84
lines changed

Cargo.lock

Lines changed: 9 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ compile_state = { path = "compile_state" }
3434
sl-compiler = { path = "compiler" }
3535
compiler_test_utils = { path = "compiler/test_utils" }
3636
slvm = { path = "vm" }
37+
shell = { path = "shell" }
3738
regex = "1"
3839
lazy_static = "1"
3940
mdbook = "0.4.37"

bridge_adapters/src/lisp_adapters.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -279,9 +279,3 @@ impl SlFrom<Value> for Value {
279279
Ok(value)
280280
}
281281
}
282-
283-
impl<'a> SlFromRef<'a, Value> for Value {
284-
fn sl_from_ref(value: Value, _vm: &'a SloshVm) -> VMResult<Self> {
285-
Ok(value)
286-
}
287-
}

bridge_adapters/src/lisp_adapters/numbers.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ impl SlFrom<u32> for Value {
3535
}
3636
}
3737

38+
impl SlFrom<i64> for Value {
39+
fn sl_from(value: i64, _vm: &mut SloshVm) -> VMResult<Self> {
40+
Ok(to_i56(value))
41+
}
42+
}
3843
impl<'a> SlFromRef<'a, Value> for i32 {
3944
fn sl_from_ref(value: Value, vm: &'a SloshVm) -> VMResult<i32> {
4045
match value {

bridge_adapters/src/lisp_adapters/primitives.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@ use crate::lisp_adapters::{SlFrom, SlFromRef};
22
use compile_state::state::SloshVm;
33
use slvm::{VMResult, Value};
44

5+
impl<'a> SlFromRef<'a, Value> for Value {
6+
fn sl_from_ref(value: Value, _vm: &SloshVm) -> VMResult<Self> {
7+
Ok(value)
8+
}
9+
}
10+
511
impl<'a> SlFromRef<'a, Value> for bool {
612
fn sl_from_ref(value: Value, _vm: &SloshVm) -> VMResult<Self> {
713
match value {

bridge_adapters/src/lisp_adapters/text.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ impl<'a> SlFromRef<'a, Value> for String {
166166
fn sl_from_ref(value: Value, vm: &'a SloshVm) -> VMResult<Self> {
167167
match value {
168168
Value::String(h) => Ok(vm.get_string(h).to_string()),
169+
Value::StringConst(i) => Ok(vm.get_interned(i).to_string()),
169170
_ => Err(VMError::new_conversion(
170171
ErrorStrings::fix_me_mismatched_type(
171172
<&'static str>::from(ValueType::String),

builtins/Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,18 @@ edition = "2021"
88
[dependencies]
99
slvm = { workspace = true }
1010
compile_state = { workspace = true }
11+
shell = { workspace = true }
1112
sl-compiler = { workspace = true }
1213
bridge_adapters = { path = "../bridge_adapters" }
1314
unicode-segmentation = "1.10.1"
15+
unicode_reader = "1"
1416
bridge_types = { workspace = true }
1517
bridge_macros = { path = "../bridge_macros" }
1618
static_assertions = "1.1.0"
19+
rand = "0.8.5"
20+
walkdir = "2.5.0"
21+
same-file = "1.0.6"
22+
glob = "0.3"
1723

1824
[dev-dependencies]
1925
trybuild = "1.0"

0 commit comments

Comments
 (0)