diff options
author | Jesse Morgan <jesse@jesterpm.net> | 2023-12-31 15:15:03 -0800 |
---|---|---|
committer | Jesse Morgan <jesse@jesterpm.net> | 2023-12-31 15:15:03 -0800 |
commit | aceb44fa5153a33eb8013be41f1c455ca424f92d (patch) | |
tree | 05f581bd267a551f2a648dd3444fa1fe136af931 /src/main.rs | |
parent | 8251c51e80e59d78d86be504535a3faf3149434a (diff) |
Implement Invoke, Yield, and Return ops
Javascript functions can now return values.
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/main.rs b/src/main.rs index 673c164..33da842 100644 --- a/src/main.rs +++ b/src/main.rs @@ -31,7 +31,8 @@ impl From<boa_parser::Error> for RelJsError { } } -fn main() -> Result<(), RelJsError> { +#[tokio::main] +async fn main() -> Result<(), RelJsError> { let src = Source::from_filepath(Path::new("demo/script.js"))?; let mut parser = Parser::new(src); let mut interner = Interner::new(); @@ -46,11 +47,10 @@ fn main() -> Result<(), RelJsError> { let function_id = runtime.to_symbol_id("main") .expect("script.js is missing a main function"); - let result = runtime.invoke(function_id, vec![]); - - for (i, v) in result.iter().enumerate() { - println!("Result {i}:"); - for b in v.bytes() { + let mut result = runtime.invoke(function_id, vec![]); + while let Some(value) = result.recv().await { + println!("Result:"); + for b in value.bytes() { print!("{b:02x} "); } println!("\n"); |