summaryrefslogtreecommitdiff
path: root/cli/lsp/tsc.rs
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2023-03-17 12:22:15 -0600
committerGitHub <noreply@github.com>2023-03-17 18:22:15 +0000
commite55b448730160a6e4df9815a268d4049ac89deab (patch)
tree35d80fd60f2f1d1d06903caff256484a7d703d76 /cli/lsp/tsc.rs
parent0bc6bf5d33b8198253954d7f04558270de45c925 (diff)
feat(core) deno_core::extension! macro to simplify extension registration (#18210)
This implements two macros to simplify extension registration and centralize a lot of the boilerplate as a base for future improvements: * `deno_core::ops!` registers a block of `#[op]`s, optionally with type parameters, useful for places where we share lists of ops * `deno_core::extension!` is used to register an extension, and creates two methods that can be used at runtime/snapshot generation time: `init_ops` and `init_ops_and_esm`. --------- Co-authored-by: Bartek IwaƄczuk <biwanczuk@gmail.com>
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r--cli/lsp/tsc.rs42
1 files changed, 21 insertions, 21 deletions
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs
index 335d91ed7..910d13691 100644
--- a/cli/lsp/tsc.rs
+++ b/cli/lsp/tsc.rs
@@ -37,7 +37,6 @@ use deno_core::serde_json;
use deno_core::serde_json::json;
use deno_core::serde_json::Value;
use deno_core::url::Url;
-use deno_core::Extension;
use deno_core::JsRuntime;
use deno_core::ModuleSpecifier;
use deno_core::OpState;
@@ -2819,31 +2818,32 @@ fn op_script_version(
/// server.
fn js_runtime(performance: Arc<Performance>) -> JsRuntime {
JsRuntime::new(RuntimeOptions {
- extensions: vec![init_extension(performance)],
+ extensions: vec![deno_tsc::init_ops(performance)],
startup_snapshot: Some(tsc::compiler_snapshot()),
..Default::default()
})
}
-fn init_extension(performance: Arc<Performance>) -> Extension {
- Extension::builder("deno_tsc")
- .ops(vec![
- op_is_cancelled::decl(),
- op_is_node_file::decl(),
- op_load::decl(),
- op_resolve::decl(),
- op_respond::decl(),
- op_script_names::decl(),
- op_script_version::decl(),
- ])
- .state(move |state| {
- state.put(State::new(
- Arc::new(StateSnapshot::default()),
- performance.clone(),
- ));
- })
- .build()
-}
+deno_core::extension!(deno_tsc,
+ ops = [
+ op_is_cancelled,
+ op_is_node_file,
+ op_load,
+ op_resolve,
+ op_respond,
+ op_script_names,
+ op_script_version,
+ ],
+ config = {
+ performance: Arc<Performance>
+ },
+ state = |state, performance| {
+ state.put(State::new(
+ Arc::new(StateSnapshot::default()),
+ performance,
+ ));
+ },
+);
/// Instruct a language server runtime to start the language server and provide
/// it with a minimal bootstrap configuration.