提交 336db91a 编写于 作者: M Matt Bierner

Use switch case

上级 9531a7c3
......@@ -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 };
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册