Skip to content

Commit 5996139

Browse files
committed
@param parsing:const enum to improve readability
1 parent e942bbb commit 5996139

1 file changed

Lines changed: 20 additions & 15 deletions

File tree

src/compiler/parser.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6168,6 +6168,11 @@ namespace ts {
61686168
SavingComments,
61696169
}
61706170

6171+
const enum PropertyLikeParse {
6172+
Property,
6173+
Parameter,
6174+
}
6175+
61716176
export function parseJSDocCommentWorker(start: number, length: number): JSDoc {
61726177
const content = sourceText;
61736178
start = start || 0;
@@ -6347,7 +6352,7 @@ namespace ts {
63476352
case "arg":
63486353
case "argument":
63496354
case "param":
6350-
tag = parseParameterOrPropertyTag(atToken, tagName, /*shouldParseParamTag*/ true);
6355+
tag = parseParameterOrPropertyTag(atToken, tagName, PropertyLikeParse.Parameter);
63516356
break;
63526357
case "return":
63536358
case "returns":
@@ -6494,9 +6499,9 @@ namespace ts {
64946499
node.kind === SyntaxKind.ArrayType && isObjectOrObjectArrayTypeReference((node as ArrayTypeNode).elementType);
64956500
}
64966501

6497-
function parseParameterOrPropertyTag(atToken: AtToken, tagName: Identifier, shouldParseParamTag: true): JSDocParameterTag;
6498-
function parseParameterOrPropertyTag(atToken: AtToken, tagName: Identifier, shouldParseParamTag: false): JSDocPropertyTag;
6499-
function parseParameterOrPropertyTag(atToken: AtToken, tagName: Identifier, shouldParseParamTag: boolean): JSDocPropertyLikeTag {
6502+
function parseParameterOrPropertyTag(atToken: AtToken, tagName: Identifier, target: PropertyLikeParse.Parameter): JSDocParameterTag;
6503+
function parseParameterOrPropertyTag(atToken: AtToken, tagName: Identifier, target: PropertyLikeParse.Property): JSDocPropertyTag;
6504+
function parseParameterOrPropertyTag(atToken: AtToken, tagName: Identifier, target: PropertyLikeParse): JSDocPropertyLikeTag {
65006505
let typeExpression = tryParseTypeExpression();
65016506
skipWhitespace();
65026507

@@ -6512,14 +6517,14 @@ namespace ts {
65126517
typeExpression = tryParseTypeExpression();
65136518
}
65146519

6515-
const result: JSDocPropertyLikeTag = shouldParseParamTag ?
6520+
const result: JSDocPropertyLikeTag = target ?
65166521
<JSDocParameterTag>createNode(SyntaxKind.JSDocParameterTag, atToken.pos) :
65176522
<JSDocPropertyTag>createNode(SyntaxKind.JSDocPropertyTag, atToken.pos);
65186523
if (typeExpression && isObjectOrObjectArrayTypeReference(typeExpression.type)) {
65196524
let child: JSDocPropertyLikeTag | false;
65206525
let jsdocTypeLiteral: JSDocTypeLiteral;
65216526
const start = scanner.getStartPos();
6522-
while (child = tryParse(() => parseChildParameterOrPropertyTag(/*shouldParseParamTag*/ true, fullName))) {
6527+
while (child = tryParse(() => parseChildParameterOrPropertyTag(PropertyLikeParse.Parameter, fullName))) {
65236528
if (!jsdocTypeLiteral) {
65246529
jsdocTypeLiteral = <JSDocTypeLiteral>createNode(SyntaxKind.JSDocTypeLiteral, start);
65256530
jsdocTypeLiteral.jsDocPropertyTags = [] as MutableNodeArray<JSDocPropertyTag>;
@@ -6616,7 +6621,7 @@ namespace ts {
66166621
let jsdocTypeLiteral: JSDocTypeLiteral;
66176622
let alreadyHasTypeTag = false;
66186623
const start = scanner.getStartPos();
6619-
while (child = tryParse(() => parseChildParameterOrPropertyTag(/*shouldParseParamTag*/ false))) {
6624+
while (child = tryParse(() => parseChildParameterOrPropertyTag(PropertyLikeParse.Property))) {
66206625
if (!jsdocTypeLiteral) {
66216626
jsdocTypeLiteral = <JSDocTypeLiteral>createNode(SyntaxKind.JSDocTypeLiteral, start);
66226627
}
@@ -6679,9 +6684,9 @@ namespace ts {
66796684
return parent.text === name.text;
66806685
}
66816686

6682-
function parseChildParameterOrPropertyTag(shouldParseParamTag: false): JSDocTypeTag | JSDocPropertyTag | false;
6683-
function parseChildParameterOrPropertyTag(shouldParseParamTag: true, fullName: EntityName): JSDocPropertyTag | JSDocParameterTag | false;
6684-
function parseChildParameterOrPropertyTag(shouldParseParamTag: boolean, fullName?: EntityName): JSDocTypeTag | JSDocPropertyTag | JSDocParameterTag | false {
6687+
function parseChildParameterOrPropertyTag(target: PropertyLikeParse.Property): JSDocTypeTag | JSDocPropertyTag | false;
6688+
function parseChildParameterOrPropertyTag(target: PropertyLikeParse.Parameter, fullName: EntityName): JSDocPropertyTag | JSDocParameterTag | false;
6689+
function parseChildParameterOrPropertyTag(target: PropertyLikeParse, fullName?: EntityName): JSDocTypeTag | JSDocPropertyTag | JSDocParameterTag | false {
66856690
let resumePos = scanner.getStartPos();
66866691
let canParseTag = true;
66876692
let seenAsterisk = false;
@@ -6690,7 +6695,7 @@ namespace ts {
66906695
switch (token()) {
66916696
case SyntaxKind.AtToken:
66926697
if (canParseTag) {
6693-
const child = tryParseChildTag(shouldParseParamTag);
6698+
const child = tryParseChildTag(target);
66946699
if (child && child.kind === SyntaxKind.JSDocParameterTag &&
66956700
(ts.isIdentifier(child.fullName) || !textsEqual(fullName, child.fullName.left))) {
66966701
break;
@@ -6720,7 +6725,7 @@ namespace ts {
67206725
scanner.setTextPos(resumePos);
67216726
}
67226727

6723-
function tryParseChildTag(shouldParseParamTag: boolean, alreadyHasTypeTag?: boolean): JSDocTypeTag | JSDocPropertyTag | JSDocParameterTag | false {
6728+
function tryParseChildTag(target: PropertyLikeParse, alreadyHasTypeTag?: boolean): JSDocTypeTag | JSDocPropertyTag | JSDocParameterTag | false {
67246729
Debug.assert(token() === SyntaxKind.AtToken);
67256730
const atToken = <AtToken>createNode(SyntaxKind.AtToken, scanner.getStartPos());
67266731
atToken.end = scanner.getTextPos();
@@ -6733,14 +6738,14 @@ namespace ts {
67336738
}
67346739
switch (tagName.text) {
67356740
case "type":
6736-
return !alreadyHasTypeTag && !shouldParseParamTag && parseTypeTag(atToken, tagName);
6741+
return !alreadyHasTypeTag && target === PropertyLikeParse.Property && parseTypeTag(atToken, tagName);
67376742
case "prop":
67386743
case "property":
6739-
return !shouldParseParamTag && parseParameterOrPropertyTag(atToken, tagName, /*shouldParseParamTag*/ false);
6744+
return target === PropertyLikeParse.Property && parseParameterOrPropertyTag(atToken, tagName, target);
67406745
case "arg":
67416746
case "argument":
67426747
case "param":
6743-
return shouldParseParamTag && parseParameterOrPropertyTag(atToken, tagName, /*shouldParseParamTag*/ true);
6748+
return target === PropertyLikeParse.Parameter && parseParameterOrPropertyTag(atToken, tagName, target);
67446749
}
67456750
return false;
67466751
}

0 commit comments

Comments
 (0)