mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-04 21:53:42 -06:00
fix(10019): allow renaming labels (#40064)
This commit is contained in:
parent
f9cca25cd7
commit
9f3af67929
@ -13,7 +13,13 @@ namespace ts.Rename {
|
||||
|
||||
function getRenameInfoForNode(node: Node, typeChecker: TypeChecker, sourceFile: SourceFile, isDefinedInLibraryFile: (declaration: Node) => boolean, options?: RenameInfoOptions): RenameInfo | undefined {
|
||||
const symbol = typeChecker.getSymbolAtLocation(node);
|
||||
if (!symbol) return;
|
||||
if (!symbol) {
|
||||
if (isLabelName(node)) {
|
||||
const name = getTextOfNode(node);
|
||||
return getRenameInfoSuccess(name, name, ScriptElementKind.label, ScriptElementKindModifier.none, node, sourceFile);
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
// Only allow a symbol to be renamed if it actually has at least one declaration.
|
||||
const { declarations } = symbol;
|
||||
if (!declarations || declarations.length === 0) return;
|
||||
|
||||
5
tests/baselines/reference/renameLabel1.baseline
Normal file
5
tests/baselines/reference/renameLabel1.baseline
Normal file
@ -0,0 +1,5 @@
|
||||
/*====== /tests/cases/fourslash/renameLabel1.ts ======*/
|
||||
|
||||
RENAME: {
|
||||
break [|RENAME|];
|
||||
}
|
||||
5
tests/baselines/reference/renameLabel2.baseline
Normal file
5
tests/baselines/reference/renameLabel2.baseline
Normal file
@ -0,0 +1,5 @@
|
||||
/*====== /tests/cases/fourslash/renameLabel2.ts ======*/
|
||||
|
||||
[|RENAME|]: {
|
||||
break RENAME;
|
||||
}
|
||||
8
tests/baselines/reference/renameLabel3.baseline
Normal file
8
tests/baselines/reference/renameLabel3.baseline
Normal file
@ -0,0 +1,8 @@
|
||||
/*====== /tests/cases/fourslash/renameLabel3.ts ======*/
|
||||
|
||||
[|RENAME|]:
|
||||
for (let i = 0; i <= 10; i++) {
|
||||
if (i === 0) continue RENAME;
|
||||
if (i === 1) continue RENAME;
|
||||
if (i === 10) break RENAME;
|
||||
}
|
||||
8
tests/baselines/reference/renameLabel4.baseline
Normal file
8
tests/baselines/reference/renameLabel4.baseline
Normal file
@ -0,0 +1,8 @@
|
||||
/*====== /tests/cases/fourslash/renameLabel4.ts ======*/
|
||||
|
||||
RENAME:
|
||||
for (let i = 0; i <= 10; i++) {
|
||||
if (i === 0) continue RENAME;
|
||||
if (i === 1) continue [|RENAME|];
|
||||
if (i === 10) break RENAME;
|
||||
}
|
||||
8
tests/baselines/reference/renameLabel5.baseline
Normal file
8
tests/baselines/reference/renameLabel5.baseline
Normal file
@ -0,0 +1,8 @@
|
||||
/*====== /tests/cases/fourslash/renameLabel5.ts ======*/
|
||||
|
||||
RENAME: for (let i = 0; i <= 10; i++) {
|
||||
loop2: for (let j = 0; j <= 10; j++) {
|
||||
if (i === 5) continue [|RENAME|];
|
||||
if (j === 5) break loop2;
|
||||
}
|
||||
}
|
||||
8
tests/baselines/reference/renameLabel6.baseline
Normal file
8
tests/baselines/reference/renameLabel6.baseline
Normal file
@ -0,0 +1,8 @@
|
||||
/*====== /tests/cases/fourslash/renameLabel6.ts ======*/
|
||||
|
||||
loop1: for (let i = 0; i <= 10; i++) {
|
||||
RENAME: for (let j = 0; j <= 10; j++) {
|
||||
if (i === 5) continue loop1;
|
||||
if (j === 5) break [|RENAME|];
|
||||
}
|
||||
}
|
||||
7
tests/cases/fourslash/renameLabel1.ts
Normal file
7
tests/cases/fourslash/renameLabel1.ts
Normal file
@ -0,0 +1,7 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
////foo: {
|
||||
//// break /**/foo;
|
||||
////}
|
||||
|
||||
verify.baselineRename("", {});
|
||||
7
tests/cases/fourslash/renameLabel2.ts
Normal file
7
tests/cases/fourslash/renameLabel2.ts
Normal file
@ -0,0 +1,7 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
/////**/foo: {
|
||||
//// break foo;
|
||||
////}
|
||||
|
||||
verify.baselineRename("", {});
|
||||
11
tests/cases/fourslash/renameLabel3.ts
Normal file
11
tests/cases/fourslash/renameLabel3.ts
Normal file
@ -0,0 +1,11 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
/////**/loop:
|
||||
////for (let i = 0; i <= 10; i++) {
|
||||
//// if (i === 0) continue loop;
|
||||
//// if (i === 1) continue loop;
|
||||
//// if (i === 10) break loop;
|
||||
////}
|
||||
|
||||
verify.baselineRename("", {});
|
||||
|
||||
11
tests/cases/fourslash/renameLabel4.ts
Normal file
11
tests/cases/fourslash/renameLabel4.ts
Normal file
@ -0,0 +1,11 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
////loop:
|
||||
////for (let i = 0; i <= 10; i++) {
|
||||
//// if (i === 0) continue loop;
|
||||
//// if (i === 1) continue /**/loop;
|
||||
//// if (i === 10) break loop;
|
||||
////}
|
||||
|
||||
verify.baselineRename("", {});
|
||||
|
||||
10
tests/cases/fourslash/renameLabel5.ts
Normal file
10
tests/cases/fourslash/renameLabel5.ts
Normal file
@ -0,0 +1,10 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
////loop1: for (let i = 0; i <= 10; i++) {
|
||||
//// loop2: for (let j = 0; j <= 10; j++) {
|
||||
//// if (i === 5) continue /**/loop1;
|
||||
//// if (j === 5) break loop2;
|
||||
//// }
|
||||
////}
|
||||
|
||||
verify.baselineRename("", {});
|
||||
10
tests/cases/fourslash/renameLabel6.ts
Normal file
10
tests/cases/fourslash/renameLabel6.ts
Normal file
@ -0,0 +1,10 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
////loop1: for (let i = 0; i <= 10; i++) {
|
||||
//// loop2: for (let j = 0; j <= 10; j++) {
|
||||
//// if (i === 5) continue loop1;
|
||||
//// if (j === 5) break /**/loop2;
|
||||
//// }
|
||||
////}
|
||||
|
||||
verify.baselineRename("", {});
|
||||
Loading…
x
Reference in New Issue
Block a user