about summary refs log tree commit diff
path: root/editors/code/src
diff options
context:
space:
mode:
authorMikhail Modin <mikhailm1@gmail.com>2020-03-15 21:23:18 +0000
committerMikhail Modin <mikhailm1@gmail.com>2020-03-15 21:23:18 +0000
commitb150965ed7994c679711bc807de301a12f5c7944 (patch)
treeb8e4e4aed87953ead767861ce5066b8cc950f868 /editors/code/src
parent530ff9f57fd27505302d082a6007b49d8b98c8af (diff)
downloadrust-b150965ed7994c679711bc807de301a12f5c7944.tar.gz
rust-b150965ed7994c679711bc807de301a12f5c7944.zip
Swtches to rust SSR query check
Diffstat (limited to 'editors/code/src')
-rw-r--r--editors/code/src/commands/ssr.ts16
-rw-r--r--editors/code/src/rust-analyzer-api.ts3
2 files changed, 11 insertions, 8 deletions
diff --git a/editors/code/src/commands/ssr.ts b/editors/code/src/commands/ssr.ts
index eee48c69352..6fee051fdf6 100644
--- a/editors/code/src/commands/ssr.ts
+++ b/editors/code/src/commands/ssr.ts
@@ -10,20 +10,22 @@ export function ssr(ctx: Ctx): Cmd {
         if (!client) return;
 
         const options: vscode.InputBoxOptions = {
-            placeHolder: "foo($a:expr, $b:expr) ==>> bar($a, foo($b))",
-            prompt: "Enter request",
-            validateInput: (x: string) => {
-                if (x.includes('==>>')) {
-                    return null;
+            value: "() ==>> ()",
+            prompt: "EnteR request, for example 'Foo($a:expr) ==> Foo::new($a)' ",
+            validateInput: async (x: string) => {
+                try {
+                    await client.sendRequest(ra.ssr, { query: x, parseOnly: true });
+                } catch (e) {
+                    return e.toString();
                 }
-                return "Enter request: pattern ==>> template";
+                return null;
             }
         };
         const request = await vscode.window.showInputBox(options);
 
         if (!request) return;
 
-        const change = await client.sendRequest(ra.ssr, { arg: request });
+        const change = await client.sendRequest(ra.ssr, { query: request, parseOnly: false });
 
         await applySourceChange(ctx, change);
     };
diff --git a/editors/code/src/rust-analyzer-api.ts b/editors/code/src/rust-analyzer-api.ts
index bd6e3ada083..6ad93715f93 100644
--- a/editors/code/src/rust-analyzer-api.ts
+++ b/editors/code/src/rust-analyzer-api.ts
@@ -108,7 +108,8 @@ export const inlayHints = request<InlayHintsParams, Vec<InlayHint>>("inlayHints"
 
 
 export interface SsrParams {
-    arg: string;
+    query: string;
+    parseOnly: boolean;
 }
 export const ssr = request<SsrParams, SourceChange>("ssr");