summaryrefslogtreecommitdiff
path: root/cli/build.rs
diff options
context:
space:
mode:
authorJared Beller <25756846+jbellerb@users.noreply.github.com>2021-02-13 11:56:56 -0500
committerGitHub <noreply@github.com>2021-02-13 11:56:56 -0500
commitb50691efed482496e241857921b66b65bec61655 (patch)
tree63acea6b2e2b1ae9ca43585f22800cade8458e27 /cli/build.rs
parentaf460fc464562566dc1534c0f61f53c2976b9bd7 (diff)
refactor(core): Strongly typed deserialization of JSON ops (#9423)
This PR makes json_op_sync/async generic to all Deserialize/Serialize types instead of the loosely-typed serde_json::Value. Since serde_json::Value implements Deserialize/Serialize, very little existing code needs to be updated, however as json_op_sync/async are now generic, type inference is broken in some cases (see cli/build.rs:146). I've found this reduces a good bit of boilerplate, as seen in the updated deno_core examples. This change may also reduce serialization and deserialization overhead as serde has a better idea of what types it is working with. I am currently working on benchmarks to confirm this and I will update this PR with my findings.
Diffstat (limited to 'cli/build.rs')
-rw-r--r--cli/build.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/cli/build.rs b/cli/build.rs
index b23035717..ef6e03503 100644
--- a/cli/build.rs
+++ b/cli/build.rs
@@ -8,6 +8,7 @@ use deno_core::JsRuntime;
use deno_core::RuntimeOptions;
use regex::Regex;
use serde::Deserialize;
+use serde_json::Value;
use std::collections::HashMap;
use std::env;
use std::path::Path;
@@ -142,7 +143,7 @@ fn create_compiler_snapshot(
});
js_runtime.register_op(
"op_build_info",
- json_op_sync(move |_state, _args, _bufs| {
+ json_op_sync(move |_state, _args: Value, _bufs| {
Ok(json!({
"buildSpecifier": build_specifier,
"libs": build_libs,