@@ -83,9 +83,7 @@ func (p *Parser) parseJSDocTypeExpression(mayOmitBraces bool) *ast.Node {
83
83
p .parseExpectedJSDoc (ast .KindCloseBraceToken )
84
84
}
85
85
86
- result := p .factory .NewJSDocTypeExpression (t )
87
- p .finishNode (result , pos )
88
- return result
86
+ return p .finishNode (p .factory .NewJSDocTypeExpression (t ), pos )
89
87
}
90
88
91
89
func (p * Parser ) parseJSDocNameReference () * ast.Node {
@@ -96,16 +94,13 @@ func (p *Parser) parseJSDocNameReference() *ast.Node {
96
94
for p .token == ast .KindPrivateIdentifier {
97
95
p .scanner .ReScanHashToken () // rescan #id as # id
98
96
p .nextTokenJSDoc () // then skip the #
99
- entityName = p .factory .NewQualifiedName (entityName , p .parseIdentifier ())
100
- p .finishNode (entityName , p2 )
97
+ entityName = p .finishNode (p .factory .NewQualifiedName (entityName , p .parseIdentifier ()), p2 )
101
98
}
102
99
if hasBrace {
103
100
p .parseExpectedJSDoc (ast .KindCloseBraceToken )
104
101
}
105
102
106
- result := p .factory .NewJSDocNameReference (entityName )
107
- p .finishNode (result , pos )
108
- return result
103
+ return p .finishNode (p .factory .NewJSDocNameReference (entityName ), pos )
109
104
}
110
105
111
106
// Pass end=-1 to parse the text to the end
@@ -258,8 +253,7 @@ loop:
258
253
if linkEnd == start {
259
254
comments = removeLeadingNewlines (comments )
260
255
}
261
- jsdocText := p .factory .NewJSDocText (p .stringSlicePool .Clone (comments ))
262
- p .finishNodeWithEnd (jsdocText , linkEnd , commentEnd )
256
+ jsdocText := p .finishNodeWithEnd (p .factory .NewJSDocText (p .stringSlicePool .Clone (comments )), linkEnd , commentEnd )
263
257
commentParts = append (commentParts , jsdocText , link )
264
258
comments = comments [:0 ]
265
259
linkEnd = p .scanner .TokenEnd ()
@@ -287,8 +281,7 @@ loop:
287
281
288
282
if len (comments ) > 0 {
289
283
comments [len (comments )- 1 ] = strings .TrimRightFunc (comments [len (comments )- 1 ], unicode .IsSpace )
290
- jsdocText := p .factory .NewJSDocText (p .stringSlicePool .Clone (comments ))
291
- p .finishNodeWithEnd (jsdocText , linkEnd , commentsPos )
284
+ jsdocText := p .finishNodeWithEnd (p .factory .NewJSDocText (p .stringSlicePool .Clone (comments )), linkEnd , commentsPos )
292
285
commentParts = append (commentParts , jsdocText )
293
286
}
294
287
@@ -305,8 +298,7 @@ loop:
305
298
p .newNodeList (core .NewTextRange (start , commentsPos ), commentParts ),
306
299
tagsNodeList ,
307
300
)
308
- p .finishNodeWithEnd (jsdocComment , fullStart , end )
309
- return jsdocComment
301
+ return p .finishNodeWithEnd (jsdocComment , fullStart , end )
310
302
}
311
303
312
304
func removeLeadingNewlines (comments []string ) []string {
@@ -532,14 +524,13 @@ loop:
532
524
linkStart := p .scanner .TokenEnd () - 1
533
525
link := p .parseJSDocLink (linkStart )
534
526
if link != nil {
535
- text := p .factory .NewJSDocText (p .stringSlicePool .Clone (comments ))
536
527
var commentStart int
537
528
if linkEnd > - 1 {
538
529
commentStart = linkEnd
539
530
} else {
540
531
commentStart = commentsPos
541
532
}
542
- p .finishNodeWithEnd (text , commentStart , commentEnd )
533
+ text := p .finishNodeWithEnd (p . factory . NewJSDocText ( p . stringSlicePool . Clone ( comments )) , commentStart , commentEnd )
543
534
parts = append (parts , text )
544
535
parts = append (parts , link )
545
536
comments = comments [:0 ]
@@ -593,8 +584,7 @@ loop:
593
584
} else {
594
585
commentStart = commentsPos
595
586
}
596
- text := p .factory .NewJSDocText (p .stringSlicePool .Clone (comments ))
597
- p .finishNode (text , commentStart )
587
+ text := p .finishNode (p .factory .NewJSDocText (p .stringSlicePool .Clone (comments )), commentStart )
598
588
parts = append (parts , text )
599
589
}
600
590
@@ -631,8 +621,7 @@ func (p *Parser) parseJSDocLink(start int) *ast.Node {
631
621
default :
632
622
create = p .factory .NewJSDocLinkPlain (name , text )
633
623
}
634
- p .finishNodeWithEnd (create , start , p .scanner .TokenEnd ())
635
- return create
624
+ return p .finishNodeWithEnd (create , start , p .scanner .TokenEnd ())
636
625
}
637
626
638
627
func (p * Parser ) parseJSDocLinkName () * ast.Node {
@@ -647,15 +636,13 @@ func (p *Parser) parseJSDocLinkName() *ast.Node {
647
636
} else {
648
637
right = p .parseIdentifierName ()
649
638
}
650
- name = p .factory .NewQualifiedName (name , right )
651
- p .finishNode (name , pos )
639
+ name = p .finishNode (p .factory .NewQualifiedName (name , right ), pos )
652
640
}
653
641
654
642
for p .token == ast .KindPrivateIdentifier {
655
643
p .scanner .ReScanHashToken ()
656
644
p .nextTokenJSDoc ()
657
- name = p .factory .NewQualifiedName (name , p .parseIdentifier ())
658
- p .finishNode (name , pos )
645
+ name = p .finishNode (p .factory .NewQualifiedName (name , p .parseIdentifier ()), pos )
659
646
}
660
647
return name
661
648
}
@@ -678,9 +665,7 @@ func isJSDocLinkTag(kind string) bool {
678
665
}
679
666
680
667
func (p * Parser ) parseUnknownTag (start int , tagName * ast.IdentifierNode , indent int , indentText string ) * ast.Node {
681
- tag := p .factory .NewJSDocUnknownTag (tagName , p .parseTrailingTagComments (start , p .nodePos (), indent , indentText ))
682
- p .finishNode (tag , start )
683
- return tag
668
+ return p .finishNode (p .factory .NewJSDocUnknownTag (tagName , p .parseTrailingTagComments (start , p .nodePos (), indent , indentText )), start )
684
669
}
685
670
686
671
func (p * Parser ) tryParseTypeExpression () * ast.Node {
@@ -757,8 +742,7 @@ func (p *Parser) parseParameterOrPropertyTag(start int, tagName *ast.IdentifierN
757
742
} else {
758
743
result = p .factory .NewJSDocParameterTag (tagName , name , isBracketed , typeExpression , isNameFirst , comment )
759
744
}
760
- p .finishNode (result , start )
761
- return result
745
+ return p .finishNode (result , start )
762
746
}
763
747
764
748
func (p * Parser ) parseNestedTypeLiteral (typeExpression * ast.Node , name * ast.EntityName , target propertyLikeParse , indent int ) * ast.Node {
@@ -779,11 +763,8 @@ func (p *Parser) parseNestedTypeLiteral(typeExpression *ast.Node, name *ast.Enti
779
763
}
780
764
}
781
765
if children != nil {
782
- literal := p .factory .NewJSDocTypeLiteral (children , typeExpression .Type ().Kind == ast .KindArrayType )
783
- p .finishNode (literal , pos )
784
- result := p .factory .NewJSDocTypeExpression (literal )
785
- p .finishNode (result , pos )
786
- return result
766
+ literal := p .finishNode (p .factory .NewJSDocTypeLiteral (children , typeExpression .Type ().Kind == ast .KindArrayType ), pos )
767
+ return p .finishNode (p .factory .NewJSDocTypeExpression (literal ), pos )
787
768
}
788
769
}
789
770
return nil
@@ -795,9 +776,7 @@ func (p *Parser) parseReturnTag(previousTags []*ast.Node, start int, tagName *as
795
776
}
796
777
797
778
typeExpression := p .tryParseTypeExpression ()
798
- result := p .factory .NewJSDocReturnTag (tagName , typeExpression , p .parseTrailingTagComments (start , p .nodePos (), indent , indentText ))
799
- p .finishNode (result , start )
800
- return result
779
+ return p .finishNode (p .factory .NewJSDocReturnTag (tagName , typeExpression , p .parseTrailingTagComments (start , p .nodePos (), indent , indentText )), start )
801
780
}
802
781
803
782
// pass indent=-1 to skip parsing trailing comments (as when a type tag is nested in a typedef)
@@ -811,9 +790,7 @@ func (p *Parser) parseTypeTag(previousTags []*ast.Node, start int, tagName *ast.
811
790
if indent != - 1 {
812
791
comments = p .parseTrailingTagComments (start , p .nodePos (), indent , indentText )
813
792
}
814
- result := p .factory .NewJSDocTypeTag (tagName , typeExpression , comments )
815
- p .finishNode (result , start )
816
- return result
793
+ return p .finishNode (p .factory .NewJSDocTypeTag (tagName , typeExpression , comments ), start )
817
794
}
818
795
819
796
func (p * Parser ) parseSeeTag (start int , tagName * ast.IdentifierNode , indent int , indentText string ) * ast.Node {
@@ -825,31 +802,23 @@ func (p *Parser) parseSeeTag(start int, tagName *ast.IdentifierNode, indent int,
825
802
nameExpression = p .parseJSDocNameReference ()
826
803
}
827
804
comments := p .parseTrailingTagComments (start , p .nodePos (), indent , indentText )
828
- result := p .factory .NewJSDocSeeTag (tagName , nameExpression , comments )
829
- p .finishNode (result , start )
830
- return result
805
+ return p .finishNode (p .factory .NewJSDocSeeTag (tagName , nameExpression , comments ), start )
831
806
}
832
807
833
808
func (p * Parser ) parseImplementsTag (start int , tagName * ast.IdentifierNode , margin int , indentText string ) * ast.Node {
834
809
className := p .parseExpressionWithTypeArgumentsForAugments ()
835
- result := p .factory .NewJSDocImplementsTag (tagName , className , p .parseTrailingTagComments (start , p .nodePos (), margin , indentText ))
836
- p .finishNode (result , start )
837
- return result
810
+ return p .finishNode (p .factory .NewJSDocImplementsTag (tagName , className , p .parseTrailingTagComments (start , p .nodePos (), margin , indentText )), start )
838
811
}
839
812
840
813
func (p * Parser ) parseAugmentsTag (start int , tagName * ast.IdentifierNode , margin int , indentText string ) * ast.Node {
841
814
className := p .parseExpressionWithTypeArgumentsForAugments ()
842
- result := p .factory .NewJSDocAugmentsTag (tagName , className , p .parseTrailingTagComments (start , p .nodePos (), margin , indentText ))
843
- p .finishNode (result , start )
844
- return result
815
+ return p .finishNode (p .factory .NewJSDocAugmentsTag (tagName , className , p .parseTrailingTagComments (start , p .nodePos (), margin , indentText )), start )
845
816
}
846
817
847
818
func (p * Parser ) parseSatisfiesTag (start int , tagName * ast.IdentifierNode , margin int , indentText string ) * ast.Node {
848
819
typeExpression := p .parseJSDocTypeExpression (false )
849
820
comments := p .parseTrailingTagComments (start , p .nodePos (), margin , indentText )
850
- result := p .factory .NewJSDocSatisfiesTag (tagName , typeExpression , comments )
851
- p .finishNode (result , start )
852
- return result
821
+ return p .finishNode (p .factory .NewJSDocSatisfiesTag (tagName , typeExpression , comments ), start )
853
822
}
854
823
855
824
func (p * Parser ) parseImportTag (start int , tagName * ast.IdentifierNode , margin int , indentText string ) * ast.Node {
@@ -865,9 +834,7 @@ func (p *Parser) parseImportTag(start int, tagName *ast.IdentifierNode, margin i
865
834
attributes := p .tryParseImportAttributes ()
866
835
867
836
comments := p .parseTrailingTagComments (start , p .nodePos (), margin , indentText )
868
- result := p .factory .NewJSDocImportTag (tagName , importClause , moduleSpecifier , attributes , comments )
869
- p .finishNode (result , start )
870
- return result
837
+ return p .finishNode (p .factory .NewJSDocImportTag (tagName , importClause , moduleSpecifier , attributes , comments ), start )
871
838
}
872
839
873
840
func (p * Parser ) parseExpressionWithTypeArgumentsForAugments () * ast.Node {
@@ -877,39 +844,33 @@ func (p *Parser) parseExpressionWithTypeArgumentsForAugments() *ast.Node {
877
844
p .scanner .SetSkipJSDocLeadingAsterisks (true )
878
845
typeArguments := p .parseTypeArguments ()
879
846
p .scanner .SetSkipJSDocLeadingAsterisks (false )
880
- node := p .factory .NewExpressionWithTypeArguments (expression , typeArguments )
881
- res := node
882
- p .finishNode (node , pos )
847
+ node := p .finishNode (p .factory .NewExpressionWithTypeArguments (expression , typeArguments ), pos )
883
848
if usedBrace {
884
849
p .skipWhitespace ()
885
850
p .parseExpected (ast .KindCloseBraceToken )
886
851
}
887
- return res
852
+ return node
888
853
}
889
854
890
855
func (p * Parser ) parsePropertyAccessEntityNameExpression () * ast.Node {
891
856
pos := p .nodePos ()
892
857
node := p .parseJSDocIdentifierName (nil )
893
858
for p .parseOptional (ast .KindDotToken ) {
894
859
name := p .parseJSDocIdentifierName (nil )
895
- node = p .factory .NewPropertyAccessExpression (node , nil , name , ast .NodeFlagsNone )
896
- p .finishNode (node , pos )
860
+ node = p .finishNode (p .factory .NewPropertyAccessExpression (node , nil , name , ast .NodeFlagsNone ), pos )
897
861
}
898
862
return node
899
863
}
900
864
901
865
func (p * Parser ) parseSimpleTag (start int , createTag func (tagName * ast.IdentifierNode , comment * ast.NodeList ) * ast.Node , tagName * ast.IdentifierNode , margin int , indentText string ) * ast.Node {
902
- tag := createTag (tagName , p .parseTrailingTagComments (start , p .nodePos (), margin , indentText ))
903
- p .finishNode (tag , start )
904
- return tag
866
+ return p .finishNode (createTag (tagName , p .parseTrailingTagComments (start , p .nodePos (), margin , indentText )), start )
905
867
}
906
868
907
869
func (p * Parser ) parseThisTag (start int , tagName * ast.IdentifierNode , margin int , indentText string ) * ast.Node {
908
870
typeExpression := p .parseJSDocTypeExpression (true )
909
871
p .skipWhitespace ()
910
872
result := p .factory .NewJSDocThisTag (tagName , typeExpression , p .parseTrailingTagComments (start , p .nodePos (), margin , indentText ))
911
- p .finishNode (result , start )
912
- return result
873
+ return p .finishNode (result , start )
913
874
}
914
875
915
876
func (p * Parser ) parseTypedefTag (start int , tagName * ast.IdentifierNode , indent int , indentText string ) * ast.Node {
@@ -957,8 +918,7 @@ func (p *Parser) parseTypedefTag(start int, tagName *ast.IdentifierNode, indent
957
918
if childTypeTag != nil && childTypeTag .TypeExpression != nil && ! isObjectOrObjectArrayTypeReference (childTypeTag .TypeExpression .Type ()) {
958
919
typeExpression = childTypeTag .TypeExpression
959
920
} else {
960
- p .finishNode (jsdocTypeLiteral , start )
961
- typeExpression = jsdocTypeLiteral
921
+ typeExpression = p .finishNode (jsdocTypeLiteral , start )
962
922
}
963
923
}
964
924
}
@@ -982,8 +942,7 @@ func (p *Parser) parseTypedefTag(start int, tagName *ast.IdentifierNode, indent
982
942
comment = p .parseTrailingTagComments (start , end , indent , indentText )
983
943
}
984
944
985
- typedefTag := p .factory .NewJSDocTypedefTag (tagName , typeExpression , fullName , comment )
986
- p .finishNodeWithEnd (typedefTag , start , end )
945
+ typedefTag := p .finishNodeWithEnd (p .factory .NewJSDocTypedefTag (tagName , typeExpression , fullName , comment ), start , end )
987
946
if typeExpression != nil {
988
947
typeExpression .Parent = typedefTag // forcibly overwrite parent potentially set by inner type expression parse
989
948
}
@@ -1023,9 +982,7 @@ func (p *Parser) parseJSDocSignature(start int, indent int) *ast.Node {
1023
982
if returnTag == nil {
1024
983
p .rewind (state )
1025
984
}
1026
- result := p .factory .NewJSDocSignature (nil , parameters , returnTag )
1027
- p .finishNode (result , start )
1028
- return result
985
+ return p .finishNode (p .factory .NewJSDocSignature (nil , parameters , returnTag ), start )
1029
986
}
1030
987
1031
988
func (p * Parser ) parseCallbackTag (start int , tagName * ast.IdentifierNode , indent int , indentText string ) * ast.Node {
@@ -1042,9 +999,7 @@ func (p *Parser) parseCallbackTag(start int, tagName *ast.IdentifierNode, indent
1042
999
} else {
1043
1000
end = typeExpression .End ()
1044
1001
}
1045
- result := p .factory .NewJSDocCallbackTag (tagName , typeExpression , fullName , comment )
1046
- p .finishNodeWithEnd (result , start , end )
1047
- return result
1002
+ return p .finishNodeWithEnd (p .factory .NewJSDocCallbackTag (tagName , typeExpression , fullName , comment ), start , end )
1048
1003
}
1049
1004
1050
1005
func (p * Parser ) parseOverloadTag (start int , tagName * ast.IdentifierNode , indent int , indentText string ) * ast.Node {
@@ -1060,9 +1015,7 @@ func (p *Parser) parseOverloadTag(start int, tagName *ast.IdentifierNode, indent
1060
1015
} else {
1061
1016
end = typeExpression .End ()
1062
1017
}
1063
- result := p .factory .NewJSDocOverloadTag (tagName , typeExpression , comment )
1064
- p .finishNodeWithEnd (result , start , end )
1065
- return result
1018
+ return p .finishNodeWithEnd (p .factory .NewJSDocOverloadTag (tagName , typeExpression , comment ), start , end )
1066
1019
}
1067
1020
1068
1021
func textsEqual (a * ast.EntityName , b * ast.EntityName ) bool {
@@ -1168,9 +1121,7 @@ func (p *Parser) parseTemplateTagTypeParameter() *ast.Node {
1168
1121
if ast .NodeIsMissing (name ) {
1169
1122
return nil
1170
1123
}
1171
- result := p .factory .NewTypeParameterDeclaration (modifiers , name , nil /*constraint*/ , defaultType )
1172
- p .finishNode (result , typeParameterPos )
1173
- return result
1124
+ return p .finishNode (p .factory .NewTypeParameterDeclaration (modifiers , name , nil /*constraint*/ , defaultType ), typeParameterPos )
1174
1125
}
1175
1126
1176
1127
func (p * Parser ) parseTemplateTagTypeParameters () * ast.TypeParameterList {
@@ -1204,8 +1155,7 @@ func (p *Parser) parseTemplateTag(start int, tagName *ast.IdentifierNode, indent
1204
1155
}
1205
1156
typeParameters := p .parseTemplateTagTypeParameters ()
1206
1157
result := p .factory .NewJSDocTemplateTag (tagName , constraint , typeParameters , p .parseTrailingTagComments (start , p .nodePos (), indent , indentText ))
1207
- p .finishNode (result , start )
1208
- return result
1158
+ return p .finishNode (result , start )
1209
1159
}
1210
1160
1211
1161
func (p * Parser ) parseOptionalJsdoc (t ast.Kind ) bool {
@@ -1230,8 +1180,7 @@ func (p *Parser) parseJSDocEntityName() *ast.EntityName {
1230
1180
p .parseExpected (ast .KindCloseBracketToken )
1231
1181
}
1232
1182
pos := entity .Pos ()
1233
- entity = p .factory .NewQualifiedName (entity , name )
1234
- p .finishNode (entity , pos )
1183
+ entity = p .finishNode (p .factory .NewQualifiedName (entity , name ), pos )
1235
1184
}
1236
1185
return entity
1237
1186
}
@@ -1245,16 +1194,12 @@ func (p *Parser) parseJSDocIdentifierName(diagnosticMessage *diagnostics.Message
1245
1194
} else {
1246
1195
p .parseErrorAtCurrentToken (diagnostics .Identifier_expected )
1247
1196
}
1248
- result := p .newIdentifier ("" )
1249
- p .finishNode (result , p .nodePos ())
1250
- return result
1197
+ return p .finishNode (p .newIdentifier ("" ), p .nodePos ())
1251
1198
}
1252
1199
pos := p .scanner .TokenStart ()
1253
1200
end := p .scanner .TokenEnd ()
1254
1201
text := p .scanner .TokenValue ()
1255
1202
p .internIdentifier (text )
1256
1203
p .nextTokenJSDoc ()
1257
- result := p .newIdentifier (text )
1258
- p .finishNodeWithEnd (result , pos , end )
1259
- return result
1204
+ return p .finishNodeWithEnd (p .newIdentifier (text ), pos , end )
1260
1205
}
0 commit comments