mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-24 12:19:20 +00:00
Use switch case
This commit is contained in:
@@ -52,37 +52,47 @@ function getParameterListParts(
|
||||
let isInMethod = false;
|
||||
let hasOptionalParameters = false;
|
||||
let parenCount = 0;
|
||||
for (let i = 0; i < displayParts.length; ++i) {
|
||||
|
||||
outer: for (let i = 0; i < displayParts.length; ++i) {
|
||||
const part = displayParts[i];
|
||||
if ((part.kind === PConst.DisplayPartKind.methodName || part.kind === PConst.DisplayPartKind.functionName || part.kind === PConst.DisplayPartKind.text) && part.text === label) {
|
||||
if (parenCount === 0) {
|
||||
isInMethod = true;
|
||||
}
|
||||
}
|
||||
if (part.kind === PConst.DisplayPartKind.parameterName && parenCount === 1 && isInMethod) {
|
||||
// Only take top level paren names
|
||||
const next = displayParts[i + 1];
|
||||
// Skip optional parameters
|
||||
const nameIsFollowedByOptionalIndicator = next && next.text === '?';
|
||||
if (!nameIsFollowedByOptionalIndicator) {
|
||||
parts.push(part);
|
||||
}
|
||||
hasOptionalParameters = hasOptionalParameters || nameIsFollowedByOptionalIndicator;
|
||||
}
|
||||
else if (part.kind === PConst.DisplayPartKind.punctuation) {
|
||||
if (part.text === '(') {
|
||||
++parenCount;
|
||||
} else if (part.text === ')') {
|
||||
--parenCount;
|
||||
if (parenCount <= 0 && isInMethod) {
|
||||
break;
|
||||
switch (part.kind) {
|
||||
case PConst.DisplayPartKind.methodName:
|
||||
case PConst.DisplayPartKind.functionName:
|
||||
case PConst.DisplayPartKind.text:
|
||||
if (part.text === label && parenCount === 0) {
|
||||
isInMethod = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case PConst.DisplayPartKind.parameterName:
|
||||
if (parenCount === 1 && isInMethod) {
|
||||
// Only take top level paren names
|
||||
const next = displayParts[i + 1];
|
||||
// Skip optional parameters
|
||||
const nameIsFollowedByOptionalIndicator = next && next.text === '?';
|
||||
if (!nameIsFollowedByOptionalIndicator) {
|
||||
parts.push(part);
|
||||
}
|
||||
hasOptionalParameters = hasOptionalParameters || nameIsFollowedByOptionalIndicator;
|
||||
}
|
||||
break;
|
||||
|
||||
case PConst.DisplayPartKind.punctuation:
|
||||
if (part.text === '(') {
|
||||
++parenCount;
|
||||
} else if (part.text === ')') {
|
||||
--parenCount;
|
||||
if (parenCount <= 0 && isInMethod) {
|
||||
break outer;
|
||||
}
|
||||
} else if (part.text === '...' && parenCount === 1) {
|
||||
// Found rest parmeter. Do not fill in any further arguments
|
||||
hasOptionalParameters = true;
|
||||
break outer;
|
||||
}
|
||||
} else if (part.text === '...' && parenCount === 1) {
|
||||
// Found rest parmeter. Do not fill in any further arguments
|
||||
hasOptionalParameters = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return { hasOptionalParameters, parts };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user