File tree Expand file tree Collapse file tree 3 files changed +71
-2
lines changed
e2e/tolk/testcases/rename Expand file tree Collapse file tree 3 files changed +71
-2
lines changed Original file line number Diff line number Diff line change @@ -480,7 +480,6 @@ Rename builtin type
480480========================================================================
481481fun test(): int {
482482//! ^ bool
483- }
484483}
485484------------------------------------------------------------------------
486485The element can't be renamed.
@@ -491,7 +490,40 @@ Rename stdlib function
491490fun test(): int {
492491 minMax();
493492//! ^ otherFunc
494- }
495493}
496494------------------------------------------------------------------------
497495The element can't be renamed.
496+
497+ ========================================================================
498+ Wrap in backtick for keyword name
499+ ========================================================================
500+ fun foo() {}
501+
502+ fun test(): int {
503+ foo();
504+ //! ^ return
505+ }
506+ ------------------------------------------------------------------------
507+ fun `return`() {}
508+
509+ fun test(): int {
510+ `return`();
511+ //! ^ return
512+ }
513+
514+ ========================================================================
515+ Wrap in backtick for keyword name 2
516+ ========================================================================
517+ fun foo() {}
518+
519+ fun test(): int {
520+ foo();
521+ //! ^ match
522+ }
523+ ------------------------------------------------------------------------
524+ fun `match`() {}
525+
526+ fun test(): int {
527+ `match`();
528+ //! ^ match
529+ }
Original file line number Diff line number Diff line change @@ -4,3 +4,38 @@ export function trimBackticks(text: string): string {
44 }
55 return text
66}
7+
8+ export const KEYWORDS = new Set ( [
9+ "tolk" ,
10+ "import" ,
11+ "global" ,
12+ "const" ,
13+ "type" ,
14+ "struct" ,
15+ "fun" ,
16+ "get" ,
17+ "mutate" ,
18+ "asm" ,
19+ "builtin" ,
20+ "var" ,
21+ "val" ,
22+ "return" ,
23+ "repeat" ,
24+ "if" ,
25+ "else" ,
26+ "do" ,
27+ "while" ,
28+ "break" ,
29+ "continue" ,
30+ "throw" ,
31+ "assert" ,
32+ "try" ,
33+ "catch" ,
34+ "lazy" ,
35+ "is" ,
36+ "!is" ,
37+ "match" ,
38+ "true" ,
39+ "false" ,
40+ "null" ,
41+ ] )
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import {NamedNode} from "@server/languages/tolk/psi/TolkNode"
77import { Reference } from "@server/languages/tolk/psi/Reference"
88import type { Node as SyntaxNode } from "web-tree-sitter"
99import type { Position } from "vscode-languageclient"
10+ import { KEYWORDS } from "@server/languages/tolk/lang/names-util"
1011
1112export function provideTolkRename ( params : lsp . RenameParams , file : TolkFile ) : WorkspaceEdit | null {
1213 const renameNode = findRenameTarget ( params , file )
@@ -82,6 +83,7 @@ export function provideTolkRenamePrepare(
8283}
8384
8485function isValidIdentifier ( name : string ) : boolean {
86+ if ( KEYWORDS . has ( name ) ) return false
8587 return / ^ [ A - Z _ a - z ] \w * $ / . test ( name )
8688}
8789
You can’t perform that action at this time.
0 commit comments