Skip to content

Commit d056c7d

Browse files
authored
Add optionality to @typedef's @Property (microsoft#872)
1 parent 7f3ffe1 commit d056c7d

File tree

3 files changed

+9
-119
lines changed

3 files changed

+9
-119
lines changed

internal/parser/reparser.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func (p *Parser) reparseTags(parent *ast.Node, jsDoc []*ast.Node) {
4343
if tags == nil {
4444
continue
4545
}
46-
for _, tag := range j.AsJSDoc().Tags.Nodes {
46+
for _, tag := range tags.Nodes {
4747
switch tag.Kind {
4848
case ast.KindJSDocTypedefTag:
4949
// !!! Don't mark typedefs as exported if they are not in a module
@@ -67,7 +67,14 @@ func (p *Parser) reparseTags(parent *ast.Node, jsDoc []*ast.Node) {
6767
case ast.KindJSDocTypeLiteral:
6868
members := p.nodeSlicePool.NewSlice(0)
6969
for _, member := range typeExpression.AsJSDocTypeLiteral().JSDocPropertyTags {
70-
prop := p.factory.NewPropertySignatureDeclaration(nil, member.Name(), nil /*postfixToken*/, member.Type(), nil /*initializer*/)
70+
var questionToken *ast.TokenNode
71+
if member.AsJSDocPropertyTag().IsBracketed ||
72+
member.AsJSDocPropertyTag().TypeExpression != nil && member.AsJSDocPropertyTag().TypeExpression.Type().Kind == ast.KindJSDocOptionalType {
73+
questionToken = p.factory.NewToken(ast.KindQuestionToken)
74+
questionToken.Loc = core.NewTextRange(member.Pos(), member.End())
75+
questionToken.Flags = p.contextFlags | ast.NodeFlagsReparsed
76+
}
77+
prop := p.factory.NewPropertySignatureDeclaration(nil, member.Name(), questionToken, member.Type(), nil /*initializer*/)
7178
prop.Loc = member.Loc
7279
prop.Flags = p.contextFlags | ast.NodeFlagsReparsed
7380
members = append(members, prop)

testdata/baselines/reference/submodule/conformance/checkJsdocTypedefInParamTag1.errors.txt

Lines changed: 0 additions & 56 deletions
This file was deleted.

testdata/baselines/reference/submoduleAccepted/conformance/checkJsdocTypedefInParamTag1.errors.txt.diff

Lines changed: 0 additions & 61 deletions
This file was deleted.

0 commit comments

Comments
 (0)