From 4c19dd9305411e038ffdee51d1efbdf50609faf5 Mon Sep 17 00:00:00 2001 From: Alex Povel Date: Sat, 17 Aug 2024 15:53:24 +0200 Subject: [PATCH] feat(typescript): Scope `try`/`catch`/`finally` blocks --- README.md | 1 + src/scoping/langs/typescript.rs | 3 +++ tests/langs/mod.rs | 5 ++++ .../r#mod__langs__base.ts_try-block.snap | 25 +++++++++++++++++++ 4 files changed, 34 insertions(+) create mode 100644 tests/langs/snapshots/r#mod__langs__base.ts_try-block.snap diff --git a/README.md b/README.md index 0d8f49e6..a8188ca0 100644 --- a/README.md +++ b/README.md @@ -1619,6 +1619,7 @@ Language scopes: - async-function: `async function` definitions - sync-function: Non-`async function` definitions - enum: `enum` definitions + - try-catch: `try`/`catch`/`finally` blocks --typescript-query Scope TypeScript code using a custom tree-sitter query. diff --git a/src/scoping/langs/typescript.rs b/src/scoping/langs/typescript.rs index 5c275ce9..3f137016 100644 --- a/src/scoping/langs/typescript.rs +++ b/src/scoping/langs/typescript.rs @@ -24,6 +24,8 @@ pub enum PreparedTypeScriptQuery { SyncFunction, /// `enum` definitions. Enum, + /// `try`/`catch`/`finally` blocks. + TryCatch, } impl From for TSQuery { @@ -48,6 +50,7 @@ impl From for TSQuery { )"# } PreparedTypeScriptQuery::Enum => "(enum_declaration) @enum", + PreparedTypeScriptQuery::TryCatch => "(try_statement) @try", }, ) .expect("Prepared queries to be valid") diff --git a/tests/langs/mod.rs b/tests/langs/mod.rs index 4f484b13..525ea22a 100644 --- a/tests/langs/mod.rs +++ b/tests/langs/mod.rs @@ -197,6 +197,11 @@ impl InScopeLinePart { include_str!("typescript/base.ts"), TypeScript::new(CodeQuery::Prepared(PreparedTypeScriptQuery::Enum)), )] +#[case( + "base.ts_try-block", + include_str!("typescript/base.ts"), + TypeScript::new(CodeQuery::Prepared(PreparedTypeScriptQuery::TryCatch)), +)] #[case( "base.rs_strings", include_str!("rust/base.rs"), diff --git a/tests/langs/snapshots/r#mod__langs__base.ts_try-block.snap b/tests/langs/snapshots/r#mod__langs__base.ts_try-block.snap new file mode 100644 index 00000000..145b16dd --- /dev/null +++ b/tests/langs/snapshots/r#mod__langs__base.ts_try-block.snap @@ -0,0 +1,25 @@ +--- +source: tests/langs/mod.rs +expression: inscope_parts +--- +- n: 28 + l: " try {\n" + m: " ^^^^^^^" +- n: 29 + l: " throw new Error('This is an error');\n" + m: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +- n: 30 + l: " } catch (e) {\n" + m: ^^^^^^^^^^^^^^^^^^^ +- n: 31 + l: " console.error(e);\n" + m: ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +- n: 32 + l: " } finally {\n" + m: ^^^^^^^^^^^^^^^^^ +- n: 33 + l: " console.log('finally');\n" + m: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +- n: 34 + l: " }\n" + m: "^^^^^ "