Skip to content

Commit 772f6cd

Browse files
author
Andy
authored
Remove JSDocTag#atToken (#28376)
1 parent a323d98 commit 772f6cd

File tree

34 files changed

+40
-227
lines changed

34 files changed

+40
-227
lines changed

src/compiler/factory.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2225,7 +2225,6 @@ namespace ts {
22252225
/* @internal */
22262226
function createJSDocTag<T extends JSDocTag>(kind: T["kind"], tagName: string): T {
22272227
const node = createSynthesizedNode(kind) as T;
2228-
node.atToken = createToken(SyntaxKind.AtToken);
22292228
node.tagName = createIdentifier(tagName);
22302229
return node;
22312230
}

src/compiler/parser.ts

Lines changed: 39 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -6548,8 +6548,7 @@ namespace ts {
65486548

65496549
function parseTag(indent: number) {
65506550
Debug.assert(token() === SyntaxKind.AtToken);
6551-
const atToken = <AtToken>createNode(SyntaxKind.AtToken, scanner.getTokenPos());
6552-
atToken.end = scanner.getTextPos();
6551+
const start = scanner.getTokenPos();
65536552
nextJSDocToken();
65546553

65556554
const tagName = parseJSDocIdentifierName(/*message*/ undefined);
@@ -6559,40 +6558,40 @@ namespace ts {
65596558
switch (tagName.escapedText) {
65606559
case "augments":
65616560
case "extends":
6562-
tag = parseAugmentsTag(atToken, tagName);
6561+
tag = parseAugmentsTag(start, tagName);
65636562
break;
65646563
case "class":
65656564
case "constructor":
6566-
tag = parseClassTag(atToken, tagName);
6565+
tag = parseClassTag(start, tagName);
65676566
break;
65686567
case "this":
6569-
tag = parseThisTag(atToken, tagName);
6568+
tag = parseThisTag(start, tagName);
65706569
break;
65716570
case "enum":
6572-
tag = parseEnumTag(atToken, tagName);
6571+
tag = parseEnumTag(start, tagName);
65736572
break;
65746573
case "arg":
65756574
case "argument":
65766575
case "param":
6577-
return parseParameterOrPropertyTag(atToken, tagName, PropertyLikeParse.Parameter, indent);
6576+
return parseParameterOrPropertyTag(start, tagName, PropertyLikeParse.Parameter, indent);
65786577
case "return":
65796578
case "returns":
6580-
tag = parseReturnTag(atToken, tagName);
6579+
tag = parseReturnTag(start, tagName);
65816580
break;
65826581
case "template":
6583-
tag = parseTemplateTag(atToken, tagName);
6582+
tag = parseTemplateTag(start, tagName);
65846583
break;
65856584
case "type":
6586-
tag = parseTypeTag(atToken, tagName);
6585+
tag = parseTypeTag(start, tagName);
65876586
break;
65886587
case "typedef":
6589-
tag = parseTypedefTag(atToken, tagName, indent);
6588+
tag = parseTypedefTag(start, tagName, indent);
65906589
break;
65916590
case "callback":
6592-
tag = parseCallbackTag(atToken, tagName, indent);
6591+
tag = parseCallbackTag(start, tagName, indent);
65936592
break;
65946593
default:
6595-
tag = parseUnknownTag(atToken, tagName);
6594+
tag = parseUnknownTag(start, tagName);
65966595
break;
65976596
}
65986597

@@ -6675,9 +6674,8 @@ namespace ts {
66756674
return comments.length === 0 ? undefined : comments.join("");
66766675
}
66776676

6678-
function parseUnknownTag(atToken: AtToken, tagName: Identifier) {
6679-
const result = <JSDocTag>createNode(SyntaxKind.JSDocTag, atToken.pos);
6680-
result.atToken = atToken;
6677+
function parseUnknownTag(start: number, tagName: Identifier) {
6678+
const result = <JSDocTag>createNode(SyntaxKind.JSDocTag, start);
66816679
result.tagName = tagName;
66826680
return finishNode(result);
66836681
}
@@ -6734,7 +6732,7 @@ namespace ts {
67346732
}
67356733
}
67366734

6737-
function parseParameterOrPropertyTag(atToken: AtToken, tagName: Identifier, target: PropertyLikeParse, indent: number): JSDocParameterTag | JSDocPropertyTag {
6735+
function parseParameterOrPropertyTag(start: number, tagName: Identifier, target: PropertyLikeParse, indent: number): JSDocParameterTag | JSDocPropertyTag {
67386736
let typeExpression = tryParseTypeExpression();
67396737
let isNameFirst = !typeExpression;
67406738
skipWhitespaceOrAsterisk();
@@ -6747,15 +6745,14 @@ namespace ts {
67476745
}
67486746

67496747
const result = target === PropertyLikeParse.Property ?
6750-
<JSDocPropertyTag>createNode(SyntaxKind.JSDocPropertyTag, atToken.pos) :
6751-
<JSDocParameterTag>createNode(SyntaxKind.JSDocParameterTag, atToken.pos);
6752-
const comment = parseTagComments(indent + scanner.getStartPos() - atToken.pos);
6748+
<JSDocPropertyTag>createNode(SyntaxKind.JSDocPropertyTag, start) :
6749+
<JSDocParameterTag>createNode(SyntaxKind.JSDocParameterTag, start);
6750+
const comment = parseTagComments(indent + scanner.getStartPos() - start);
67536751
const nestedTypeLiteral = target !== PropertyLikeParse.CallbackParameter && parseNestedTypeLiteral(typeExpression, name, target, indent);
67546752
if (nestedTypeLiteral) {
67556753
typeExpression = nestedTypeLiteral;
67566754
isNameFirst = true;
67576755
}
6758-
result.atToken = atToken;
67596756
result.tagName = tagName;
67606757
result.typeExpression = typeExpression;
67616758
result.name = name;
@@ -6789,33 +6786,30 @@ namespace ts {
67896786
}
67906787
}
67916788

6792-
function parseReturnTag(atToken: AtToken, tagName: Identifier): JSDocReturnTag {
6789+
function parseReturnTag(start: number, tagName: Identifier): JSDocReturnTag {
67936790
if (forEach(tags, t => t.kind === SyntaxKind.JSDocReturnTag)) {
67946791
parseErrorAt(tagName.pos, scanner.getTokenPos(), Diagnostics._0_tag_already_specified, tagName.escapedText);
67956792
}
67966793

6797-
const result = <JSDocReturnTag>createNode(SyntaxKind.JSDocReturnTag, atToken.pos);
6798-
result.atToken = atToken;
6794+
const result = <JSDocReturnTag>createNode(SyntaxKind.JSDocReturnTag, start);
67996795
result.tagName = tagName;
68006796
result.typeExpression = tryParseTypeExpression();
68016797
return finishNode(result);
68026798
}
68036799

6804-
function parseTypeTag(atToken: AtToken, tagName: Identifier): JSDocTypeTag {
6800+
function parseTypeTag(start: number, tagName: Identifier): JSDocTypeTag {
68056801
if (forEach(tags, t => t.kind === SyntaxKind.JSDocTypeTag)) {
68066802
parseErrorAt(tagName.pos, scanner.getTokenPos(), Diagnostics._0_tag_already_specified, tagName.escapedText);
68076803
}
68086804

6809-
const result = <JSDocTypeTag>createNode(SyntaxKind.JSDocTypeTag, atToken.pos);
6810-
result.atToken = atToken;
6805+
const result = <JSDocTypeTag>createNode(SyntaxKind.JSDocTypeTag, start);
68116806
result.tagName = tagName;
68126807
result.typeExpression = parseJSDocTypeExpression(/*mayOmitBraces*/ true);
68136808
return finishNode(result);
68146809
}
68156810

6816-
function parseAugmentsTag(atToken: AtToken, tagName: Identifier): JSDocAugmentsTag {
6817-
const result = <JSDocAugmentsTag>createNode(SyntaxKind.JSDocAugmentsTag, atToken.pos);
6818-
result.atToken = atToken;
6811+
function parseAugmentsTag(start: number, tagName: Identifier): JSDocAugmentsTag {
6812+
const result = <JSDocAugmentsTag>createNode(SyntaxKind.JSDocAugmentsTag, start);
68196813
result.tagName = tagName;
68206814
result.class = parseExpressionWithTypeArgumentsForAugments();
68216815
return finishNode(result);
@@ -6844,37 +6838,33 @@ namespace ts {
68446838
return node;
68456839
}
68466840

6847-
function parseClassTag(atToken: AtToken, tagName: Identifier): JSDocClassTag {
6848-
const tag = <JSDocClassTag>createNode(SyntaxKind.JSDocClassTag, atToken.pos);
6849-
tag.atToken = atToken;
6841+
function parseClassTag(start: number, tagName: Identifier): JSDocClassTag {
6842+
const tag = <JSDocClassTag>createNode(SyntaxKind.JSDocClassTag, start);
68506843
tag.tagName = tagName;
68516844
return finishNode(tag);
68526845
}
68536846

6854-
function parseThisTag(atToken: AtToken, tagName: Identifier): JSDocThisTag {
6855-
const tag = <JSDocThisTag>createNode(SyntaxKind.JSDocThisTag, atToken.pos);
6856-
tag.atToken = atToken;
6847+
function parseThisTag(start: number, tagName: Identifier): JSDocThisTag {
6848+
const tag = <JSDocThisTag>createNode(SyntaxKind.JSDocThisTag, start);
68576849
tag.tagName = tagName;
68586850
tag.typeExpression = parseJSDocTypeExpression(/*mayOmitBraces*/ true);
68596851
skipWhitespace();
68606852
return finishNode(tag);
68616853
}
68626854

6863-
function parseEnumTag(atToken: AtToken, tagName: Identifier): JSDocEnumTag {
6864-
const tag = <JSDocEnumTag>createNode(SyntaxKind.JSDocEnumTag, atToken.pos);
6865-
tag.atToken = atToken;
6855+
function parseEnumTag(start: number, tagName: Identifier): JSDocEnumTag {
6856+
const tag = <JSDocEnumTag>createNode(SyntaxKind.JSDocEnumTag, start);
68666857
tag.tagName = tagName;
68676858
tag.typeExpression = parseJSDocTypeExpression(/*mayOmitBraces*/ true);
68686859
skipWhitespace();
68696860
return finishNode(tag);
68706861
}
68716862

6872-
function parseTypedefTag(atToken: AtToken, tagName: Identifier, indent: number): JSDocTypedefTag {
6863+
function parseTypedefTag(start: number, tagName: Identifier, indent: number): JSDocTypedefTag {
68736864
const typeExpression = tryParseTypeExpression();
68746865
skipWhitespaceOrAsterisk();
68756866

6876-
const typedefTag = <JSDocTypedefTag>createNode(SyntaxKind.JSDocTypedefTag, atToken.pos);
6877-
typedefTag.atToken = atToken;
6867+
const typedefTag = <JSDocTypedefTag>createNode(SyntaxKind.JSDocTypedefTag, start);
68786868
typedefTag.tagName = tagName;
68796869
typedefTag.fullName = parseJSDocTypeNameWithNamespace();
68806870
typedefTag.name = getJSDocTypeAliasName(typedefTag.fullName);
@@ -6887,7 +6877,6 @@ namespace ts {
68876877
let child: JSDocTypeTag | JSDocPropertyTag | false;
68886878
let jsdocTypeLiteral: JSDocTypeLiteral | undefined;
68896879
let childTypeTag: JSDocTypeTag | undefined;
6890-
const start = atToken.pos;
68916880
while (child = tryParse(() => parseChildPropertyTag(indent))) {
68926881
if (!jsdocTypeLiteral) {
68936882
jsdocTypeLiteral = <JSDocTypeLiteral>createNode(SyntaxKind.JSDocTypeLiteral, start);
@@ -6941,17 +6930,15 @@ namespace ts {
69416930
return typeNameOrNamespaceName;
69426931
}
69436932

6944-
function parseCallbackTag(atToken: AtToken, tagName: Identifier, indent: number): JSDocCallbackTag {
6945-
const callbackTag = createNode(SyntaxKind.JSDocCallbackTag, atToken.pos) as JSDocCallbackTag;
6946-
callbackTag.atToken = atToken;
6933+
function parseCallbackTag(start: number, tagName: Identifier, indent: number): JSDocCallbackTag {
6934+
const callbackTag = createNode(SyntaxKind.JSDocCallbackTag, start) as JSDocCallbackTag;
69476935
callbackTag.tagName = tagName;
69486936
callbackTag.fullName = parseJSDocTypeNameWithNamespace();
69496937
callbackTag.name = getJSDocTypeAliasName(callbackTag.fullName);
69506938
skipWhitespace();
69516939
callbackTag.comment = parseTagComments(indent);
69526940

69536941
let child: JSDocParameterTag | false;
6954-
const start = scanner.getStartPos();
69556942
const jsdocSignature = createNode(SyntaxKind.JSDocSignature, start) as JSDocSignature;
69566943
jsdocSignature.parameters = [];
69576944
while (child = tryParse(() => parseChildParameterOrPropertyTag(PropertyLikeParse.CallbackParameter, indent) as JSDocParameterTag)) {
@@ -7039,16 +7026,15 @@ namespace ts {
70397026

70407027
function tryParseChildTag(target: PropertyLikeParse, indent: number): JSDocTypeTag | JSDocPropertyTag | JSDocParameterTag | false {
70417028
Debug.assert(token() === SyntaxKind.AtToken);
7042-
const atToken = <AtToken>createNode(SyntaxKind.AtToken);
7043-
atToken.end = scanner.getTextPos();
7029+
const start = scanner.getStartPos();
70447030
nextJSDocToken();
70457031

70467032
const tagName = parseJSDocIdentifierName();
70477033
skipWhitespace();
70487034
let t: PropertyLikeParse;
70497035
switch (tagName.escapedText) {
70507036
case "type":
7051-
return target === PropertyLikeParse.Property && parseTypeTag(atToken, tagName);
7037+
return target === PropertyLikeParse.Property && parseTypeTag(start, tagName);
70527038
case "prop":
70537039
case "property":
70547040
t = PropertyLikeParse.Property;
@@ -7064,10 +7050,10 @@ namespace ts {
70647050
if (!(target & t)) {
70657051
return false;
70667052
}
7067-
return parseParameterOrPropertyTag(atToken, tagName, target, indent);
7053+
return parseParameterOrPropertyTag(start, tagName, target, indent);
70687054
}
70697055

7070-
function parseTemplateTag(atToken: AtToken, tagName: Identifier): JSDocTemplateTag {
7056+
function parseTemplateTag(start: number, tagName: Identifier): JSDocTemplateTag {
70717057
// the template tag looks like '@template {Constraint} T,U,V'
70727058
let constraint: JSDocTypeExpression | undefined;
70737059
if (token() === SyntaxKind.OpenBraceToken) {
@@ -7085,8 +7071,7 @@ namespace ts {
70857071
typeParameters.push(typeParameter);
70867072
} while (parseOptionalJsdoc(SyntaxKind.CommaToken));
70877073

7088-
const result = <JSDocTemplateTag>createNode(SyntaxKind.JSDocTemplateTag, atToken.pos);
7089-
result.atToken = atToken;
7074+
const result = <JSDocTemplateTag>createNode(SyntaxKind.JSDocTemplateTag, start);
70907075
result.tagName = tagName;
70917076
result.constraint = constraint;
70927077
result.typeParameters = createNodeArray(typeParameters, typeParametersPos);

src/compiler/types.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -719,7 +719,6 @@ namespace ts {
719719
export type AsteriskToken = Token<SyntaxKind.AsteriskToken>;
720720
export type EqualsGreaterThanToken = Token<SyntaxKind.EqualsGreaterThanToken>;
721721
export type EndOfFileToken = Token<SyntaxKind.EndOfFileToken> & JSDocContainer;
722-
export type AtToken = Token<SyntaxKind.AtToken>;
723722
export type ReadonlyToken = Token<SyntaxKind.ReadonlyKeyword>;
724723
export type AwaitKeywordToken = Token<SyntaxKind.AwaitKeyword>;
725724
export type PlusToken = Token<SyntaxKind.PlusToken>;
@@ -2421,7 +2420,6 @@ namespace ts {
24212420

24222421
export interface JSDocTag extends Node {
24232422
parent: JSDoc | JSDocTypeLiteral;
2424-
atToken: AtToken;
24252423
tagName: Identifier;
24262424
comment?: string;
24272425
}

src/services/classifier.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,7 @@ namespace ts {
703703
pushCommentRange(pos, tag.pos - pos);
704704
}
705705

706-
pushClassification(tag.atToken.pos, tag.atToken.end - tag.atToken.pos, ClassificationType.punctuation); // "@"
706+
pushClassification(tag.pos, 1, ClassificationType.punctuation); // "@"
707707
pushClassification(tag.tagName.pos, tag.tagName.end - tag.tagName.pos, ClassificationType.docCommentTagName); // e.g. "param"
708708

709709
pos = tag.tagName.end;

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.@link tags.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@
77
"kind": "JSDocTag",
88
"pos": 63,
99
"end": 68,
10-
"atToken": {
11-
"kind": "AtToken",
12-
"pos": 63,
13-
"end": 64
14-
},
1510
"tagName": {
1611
"kind": "Identifier",
1712
"pos": 64,

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Nested @param tags.json

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@
77
"kind": "JSDocParameterTag",
88
"pos": 6,
99
"end": 64,
10-
"atToken": {
11-
"kind": "AtToken",
12-
"pos": 6,
13-
"end": 7
14-
},
1510
"tagName": {
1611
"kind": "Identifier",
1712
"pos": 7,
@@ -31,11 +26,6 @@
3126
"kind": "JSDocParameterTag",
3227
"pos": 34,
3328
"end": 64,
34-
"atToken": {
35-
"kind": "AtToken",
36-
"pos": 34,
37-
"end": 35
38-
},
3929
"tagName": {
4030
"kind": "Identifier",
4131
"pos": 35,

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.argSynonymForParamTag.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@
77
"kind": "JSDocParameterTag",
88
"pos": 8,
99
"end": 42,
10-
"atToken": {
11-
"kind": "AtToken",
12-
"pos": 8,
13-
"end": 9
14-
},
1510
"tagName": {
1611
"kind": "Identifier",
1712
"pos": 9,

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.argumentSynonymForParamTag.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@
77
"kind": "JSDocParameterTag",
88
"pos": 8,
99
"end": 47,
10-
"atToken": {
11-
"kind": "AtToken",
12-
"pos": 8,
13-
"end": 9
14-
},
1510
"tagName": {
1611
"kind": "Identifier",
1712
"pos": 9,

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.leadingAsterisk.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@
77
"kind": "JSDocTypeTag",
88
"pos": 8,
99
"end": 22,
10-
"atToken": {
11-
"kind": "AtToken",
12-
"pos": 8,
13-
"end": 9
14-
},
1510
"tagName": {
1611
"kind": "Identifier",
1712
"pos": 9,

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.less-than and greater-than characters.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@
77
"kind": "JSDocParameterTag",
88
"pos": 7,
99
"end": 59,
10-
"atToken": {
11-
"kind": "AtToken",
12-
"pos": 7,
13-
"end": 8
14-
},
1510
"tagName": {
1611
"kind": "Identifier",
1712
"pos": 8,

0 commit comments

Comments
 (0)