Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit fe838ba

Browse filesBrowse files
author
Yui T
committed
Parse ts-style property tag
1 parent 9c10246 commit fe838ba
Copy full SHA for fe838ba

2 files changed

+11-24Lines changed: 11 additions & 24 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/compiler/parser.ts‎

Copy file name to clipboardExpand all lines: src/compiler/parser.ts
+7-24Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6508,7 +6508,7 @@ namespace ts {
65086508
case "arg":
65096509
case "argument":
65106510
case "param":
6511-
tag = parseParamTag(atToken, tagName);
6511+
tag = parseParameterOrPropertyTag(atToken, tagName, /*shouldParseParamTag*/ true);
65126512
break;
65136513
case "return":
65146514
case "returns":
@@ -6653,11 +6653,12 @@ namespace ts {
66536653
return { name, isBracketed };
66546654
}
66556655

6656-
function parseParamTag(atToken: AtToken, tagName: Identifier) {
6656+
function parseParameterOrPropertyTag(atToken: AtToken, tagName: Identifier, shouldParseParamTag: boolean): JSDocPropertyTag | JSDocParameterTag {
66576657
let typeExpression = tryParseTypeExpression();
66586658
skipWhitespace();
66596659

66606660
const { name, isBracketed } = parseBracketNameInPropertyAndParamTag();
6661+
skipWhitespace();
66616662

66626663
if (!name) {
66636664
parseErrorAtPosition(scanner.getStartPos(), 0, Diagnostics.Identifier_expected);
@@ -6676,7 +6677,9 @@ namespace ts {
66766677
typeExpression = tryParseTypeExpression();
66776678
}
66786679

6679-
const result = <JSDocParameterTag>createNode(SyntaxKind.JSDocParameterTag, atToken.pos);
6680+
const result = shouldParseParamTag ?
6681+
<JSDocParameterTag>createNode(SyntaxKind.JSDocParameterTag, atToken.pos) :
6682+
<JSDocPropertyTag>createNode(SyntaxKind.JSDocPropertyTag, atToken.pos);
66806683
result.atToken = atToken;
66816684
result.tagName = tagName;
66826685
result.preParameterName = preName;
@@ -6711,26 +6714,6 @@ namespace ts {
67116714
return finishNode(result);
67126715
}
67136716

6714-
function parsePropertyTag(atToken: AtToken, tagName: Identifier): JSDocPropertyTag {
6715-
const typeExpression = tryParseTypeExpression();
6716-
skipWhitespace();
6717-
const { name, isBracketed } = parseBracketNameInPropertyAndParamTag();
6718-
skipWhitespace();
6719-
6720-
if (!name) {
6721-
parseErrorAtPosition(scanner.getStartPos(), /*length*/ 0, Diagnostics.Identifier_expected);
6722-
return undefined;
6723-
}
6724-
6725-
const result = <JSDocPropertyTag>createNode(SyntaxKind.JSDocPropertyTag, atToken.pos);
6726-
result.atToken = atToken;
6727-
result.tagName = tagName;
6728-
result.name = name;
6729-
result.typeExpression = typeExpression;
6730-
result.isBracketed = isBracketed;
6731-
return finishNode(result);
6732-
}
6733-
67346717
function parseAugmentsTag(atToken: AtToken, tagName: Identifier): JSDocAugmentsTag {
67356718
const typeExpression = tryParseTypeExpression();
67366719

@@ -6867,7 +6850,7 @@ namespace ts {
68676850
return true;
68686851
case "prop":
68696852
case "property":
6870-
const propertyTag = parsePropertyTag(atToken, tagName);
6853+
const propertyTag = parseParameterOrPropertyTag(atToken, tagName, /*shouldParseParamTag*/ false) as JSDocPropertyTag;
68716854
if (propertyTag) {
68726855
if (!parentTag.jsDocPropertyTags) {
68736856
parentTag.jsDocPropertyTags = <NodeArray<JSDocPropertyTag>>[];
Collapse file

‎src/compiler/types.ts‎

Copy file name to clipboardExpand all lines: src/compiler/types.ts
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2145,6 +2145,10 @@ namespace ts {
21452145
parent: JSDoc;
21462146
kind: SyntaxKind.JSDocPropertyTag;
21472147
name: Identifier;
2148+
/** the parameter name, if provided *before* the type (TypeScript-style) */
2149+
preParameterName?: Identifier;
2150+
/** the parameter name, if provided *after* the type (JSDoc-standard) */
2151+
postParameterName?: Identifier;
21482152
typeExpression: JSDocTypeExpression;
21492153
isBracketed: boolean;
21502154
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.