mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-07 05:41:22 -06:00
fix(33286): add outlining for arrow function with one parameter (#38631)
This commit is contained in:
parent
45cf20ca70
commit
c00aeb5486
@ -276,9 +276,7 @@ namespace ts.OutliningElementsCollector {
|
||||
}
|
||||
|
||||
function functionSpan(node: FunctionLike, body: Block, sourceFile: SourceFile): OutliningSpan | undefined {
|
||||
const openToken = isNodeArrayMultiLine(node.parameters, sourceFile)
|
||||
? findChildOfKind(node, SyntaxKind.OpenParenToken, sourceFile)
|
||||
: findChildOfKind(body, SyntaxKind.OpenBraceToken, sourceFile);
|
||||
const openToken = tryGetFunctionOpenToken(node, body, sourceFile);
|
||||
const closeToken = findChildOfKind(body, SyntaxKind.CloseBraceToken, sourceFile);
|
||||
return openToken && closeToken && spanBetweenTokens(openToken, closeToken, node, sourceFile, /*autoCollapse*/ node.kind !== SyntaxKind.ArrowFunction);
|
||||
}
|
||||
@ -291,4 +289,14 @@ namespace ts.OutliningElementsCollector {
|
||||
function createOutliningSpan(textSpan: TextSpan, kind: OutliningSpanKind, hintSpan: TextSpan = textSpan, autoCollapse = false, bannerText = "..."): OutliningSpan {
|
||||
return { textSpan, kind, hintSpan, bannerText, autoCollapse };
|
||||
}
|
||||
|
||||
function tryGetFunctionOpenToken(node: FunctionLike, body: Block, sourceFile: SourceFile): Node | undefined {
|
||||
if (isNodeArrayMultiLine(node.parameters, sourceFile)) {
|
||||
const openParenToken = findChildOfKind(node, SyntaxKind.OpenParenToken, sourceFile);
|
||||
if (openParenToken) {
|
||||
return openParenToken;
|
||||
}
|
||||
}
|
||||
return findChildOfKind(body, SyntaxKind.OpenBraceToken, sourceFile);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,14 +1,84 @@
|
||||
/// <reference path="fourslash.ts"/>
|
||||
|
||||
////function f(x: number, y: number)[| {
|
||||
//// return x + y;
|
||||
////[|(
|
||||
//// a: number,
|
||||
//// b: number
|
||||
////) => {
|
||||
//// return a + b;
|
||||
////}|]
|
||||
/////
|
||||
////(a: number, b: number) => [|{
|
||||
//// return a + b;
|
||||
////}|]
|
||||
////
|
||||
////function g[|(
|
||||
//// x: number,
|
||||
//// y: number,
|
||||
////): number {
|
||||
//// return x + y;
|
||||
////const f1 = function[| (
|
||||
//// a: number
|
||||
//// b: number
|
||||
////) {
|
||||
//// return a + b;
|
||||
////}|]
|
||||
////
|
||||
////const f2 = function (a: number, b: number)[| {
|
||||
//// return a + b;
|
||||
////}|]
|
||||
////
|
||||
////function f3[| (
|
||||
//// a: number
|
||||
//// b: number
|
||||
////) {
|
||||
//// return a + b;
|
||||
////}|]
|
||||
////
|
||||
////function f4(a: number, b: number)[| {
|
||||
//// return a + b;
|
||||
////}|]
|
||||
////
|
||||
////class Foo[| {
|
||||
//// constructor[|(
|
||||
//// a: number,
|
||||
//// b: number
|
||||
//// ) {
|
||||
//// this.a = a;
|
||||
//// this.b = b;
|
||||
//// }|]
|
||||
////
|
||||
//// m1[|(
|
||||
//// a: number,
|
||||
//// b: number
|
||||
//// ) {
|
||||
//// return a + b;
|
||||
//// }|]
|
||||
////
|
||||
//// m1(a: number, b: number)[| {
|
||||
//// return a + b;
|
||||
//// }|]
|
||||
////}|]
|
||||
////
|
||||
////declare function foo(props: any): void;
|
||||
////foo(
|
||||
//// a =>[| {
|
||||
////
|
||||
//// }|]
|
||||
////)
|
||||
////
|
||||
////foo(
|
||||
//// (a) =>[| {
|
||||
////
|
||||
//// }|]
|
||||
////)
|
||||
////
|
||||
////foo(
|
||||
//// (a, b, c) =>[| {
|
||||
////
|
||||
//// }|]
|
||||
////)
|
||||
////
|
||||
////foo([|
|
||||
//// (a,
|
||||
//// b,
|
||||
//// c) => {
|
||||
////
|
||||
//// }|]
|
||||
////)
|
||||
|
||||
verify.outliningSpansInCurrentFile(test.ranges());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user