Initial draft of named tuple members · microsoft/TypeScript@c80c84a (original) (raw)

`@@ -179,7 +179,7 @@ namespace ts {

`

179

179

`case SyntaxKind.ArrayType:

`

180

180

`return visitNode(cbNode, (node).elementType);

`

181

181

`case SyntaxKind.TupleType:

`

182

``

`-

return visitNodes(cbNode, cbNodes, (node).elementTypes);

`

``

182

`+

return visitNodes(cbNode, cbNodes, (node).elements);

`

183

183

`case SyntaxKind.UnionType:

`

184

184

`case SyntaxKind.IntersectionType:

`

185

185

`return visitNodes(cbNode, cbNodes, (node).types);

`

`@@ -207,6 +207,11 @@ namespace ts {

`

207

207

`visitNode(cbNode, (node).type);

`

208

208

`case SyntaxKind.LiteralType:

`

209

209

`return visitNode(cbNode, (node).literal);

`

``

210

`+

case SyntaxKind.NamedTupleMember:

`

``

211

`+

return visitNode(cbNode, (node).dotDotDotToken) ||

`

``

212

`+

visitNode(cbNode, (node).name) ||

`

``

213

`+

visitNode(cbNode, (node).questionToken) ||

`

``

214

`+

visitNode(cbNode, (node).type);

`

210

215

`case SyntaxKind.ObjectBindingPattern:

`

211

216

`case SyntaxKind.ArrayBindingPattern:

`

212

217

`return visitNodes(cbNode, cbNodes, (node).elements);

`

`@@ -3056,9 +3061,33 @@ namespace ts {

`

3056

3061

`return type;

`

3057

3062

`}

`

3058

3063

``

``

3064

`+

function isNextTokenColonOrQuestionColon() {

`

``

3065

`+

return nextToken() === SyntaxKind.ColonToken || (token() === SyntaxKind.QuestionToken && nextToken() === SyntaxKind.ColonToken);

`

``

3066

`+

}

`

``

3067

+

``

3068

`+

function isTupleElementName() {

`

``

3069

`+

if (token() === SyntaxKind.DotDotDotToken) {

`

``

3070

`+

return tokenIsIdentifierOrKeyword(nextToken()) && isNextTokenColonOrQuestionColon();

`

``

3071

`+

}

`

``

3072

`+

return tokenIsIdentifierOrKeyword(token()) && isNextTokenColonOrQuestionColon();

`

``

3073

`+

}

`

``

3074

+

``

3075

`+

function parseTupleElementNameOrTupleElementType() {

`

``

3076

`+

if (lookAhead(isTupleElementName)) {

`

``

3077

`+

const node = createNode(SyntaxKind.NamedTupleMember);

`

``

3078

`+

node.dotDotDotToken = parseOptionalToken(SyntaxKind.DotDotDotToken);

`

``

3079

`+

node.name = parseIdentifierName();

`

``

3080

`+

node.questionToken = parseOptionalToken(SyntaxKind.QuestionToken);

`

``

3081

`+

parseExpected(SyntaxKind.ColonToken);

`

``

3082

`+

node.type = parseTupleElementType();

`

``

3083

`+

return addJSDocComment(finishNode(node));

`

``

3084

`+

}

`

``

3085

`+

return parseTupleElementType();

`

``

3086

`+

}

`

``

3087

+

3059

3088

`function parseTupleType(): TupleTypeNode {

`

3060

3089

`const node = createNode(SyntaxKind.TupleType);

`

3061

``

`-

node.elementTypes = parseBracketedList(ParsingContext.TupleElementTypes, parseTupleElementType, SyntaxKind.OpenBracketToken, SyntaxKind.CloseBracketToken);

`

``

3090

`+

node.elements = parseBracketedList(ParsingContext.TupleElementTypes, parseTupleElementNameOrTupleElementType, SyntaxKind.OpenBracketToken, SyntaxKind.CloseBracketToken);

`

3062

3091

`return finishNode(node);

`

3063

3092

`}

`

3064

3093

``