@@ -104,24 +104,24 @@ class CstExprConstantString : public CstNode
104104// Shared between the expression and call nodes
105105struct CstTypeInstantiation
106106{
107- Position leftArrow1Position = { 0 , 0 } ;
108- Position leftArrow2Position = { 0 , 0 } ;
107+ Position leftArrow1Position = Position::missing() ;
108+ Position leftArrow2Position = Position::missing() ;
109109
110110 AstArray<Position> commaPositions = {};
111111
112- Position rightArrow1Position = { 0 , 0 } ;
113- Position rightArrow2Position = { 0 , 0 } ;
112+ Position rightArrow1Position = Position::missing() ;
113+ Position rightArrow2Position = Position::missing() ;
114114};
115115
116116class CstExprCall : public CstNode
117117{
118118public:
119119 LUAU_CST_RTTI (CstExprCall)
120120
121- CstExprCall (std::optional< Position> openParens, std::optional< Position> closeParens, AstArray<Position> commaPositions);
121+ CstExprCall (Position openParens, Position closeParens, AstArray<Position> commaPositions);
122122
123- std::optional< Position> openParens;
124- std::optional< Position> closeParens;
123+ Position openParens;
124+ Position closeParens;
125125 AstArray<Position> commaPositions;
126126 CstTypeInstantiation* explicitTypes = nullptr ;
127127};
@@ -144,14 +144,14 @@ class CstExprFunction : public CstNode
144144
145145 CstExprFunction ();
146146
147- Position functionKeywordPosition{ 0 , 0 } ;
148- Position openGenericsPosition{ 0 , 0 } ;
147+ Position functionKeywordPosition = Position::missing() ;
148+ Position openGenericsPosition = Position::missing() ;
149149 AstArray<Position> genericsCommaPositions;
150- Position closeGenericsPosition{ 0 , 0 } ;
150+ Position closeGenericsPosition = Position::missing() ;
151151 AstArray<Position> argsAnnotationColonPositions;
152152 AstArray<Position> argsCommaPositions;
153- Position varargAnnotationColonPosition{ 0 , 0 } ;
154- Position returnSpecifierPosition{ 0 , 0 } ;
153+ Position varargAnnotationColonPosition = Position::missing() ;
154+ Position returnSpecifierPosition = Position::missing() ;
155155};
156156
157157class CstExprTable : public CstNode
@@ -163,15 +163,16 @@ class CstExprTable : public CstNode
163163 {
164164 Comma,
165165 Semicolon,
166+ Missing
166167 };
167168
168169 struct Item
169170 {
170- std::optional< Position> indexerOpenPosition; // '[', only if Kind == General
171- std::optional< Position> indexerClosePosition; // ']', only if Kind == General
172- std::optional< Position> equalsPosition; // only if Kind != List
173- std::optional< Separator> separator; // may be missing for last Item
174- std::optional< Position> separatorPosition;
171+ Position indexerOpenPosition; // '[', only if Kind == General
172+ Position indexerClosePosition; // ']', only if Kind == General
173+ Position equalsPosition; // only if Kind != List
174+ Separator separator; // may be missing for last Item
175+ Position separatorPosition;
175176 };
176177
177178 explicit CstExprTable (const AstArray<Item>& items);
@@ -281,12 +282,12 @@ class CstStatFor : public CstNode
281282public:
282283 LUAU_CST_RTTI (CstStatFor)
283284
284- CstStatFor (Position annotationColonPosition, Position equalsPosition, Position endCommaPosition, std::optional< Position> stepCommaPosition);
285+ CstStatFor (Position annotationColonPosition, Position equalsPosition, Position endCommaPosition, Position stepCommaPosition);
285286
286287 Position annotationColonPosition;
287288 Position equalsPosition;
288289 Position endCommaPosition;
289- std::optional< Position> stepCommaPosition;
290+ Position stepCommaPosition;
290291};
291292
292293class CstStatForIn : public CstNode
@@ -349,20 +350,20 @@ class CstGenericType : public CstNode
349350public:
350351 LUAU_CST_RTTI (CstGenericType)
351352
352- CstGenericType (std::optional< Position> defaultEqualsPosition);
353+ CstGenericType (Position defaultEqualsPosition);
353354
354- std::optional< Position> defaultEqualsPosition;
355+ Position defaultEqualsPosition;
355356};
356357
357358class CstGenericTypePack : public CstNode
358359{
359360public:
360361 LUAU_CST_RTTI (CstGenericTypePack)
361362
362- CstGenericTypePack (Position ellipsisPosition, std::optional< Position> defaultEqualsPosition);
363+ CstGenericTypePack (Position ellipsisPosition, Position defaultEqualsPosition);
363364
364365 Position ellipsisPosition;
365- std::optional< Position> defaultEqualsPosition;
366+ Position defaultEqualsPosition;
366367};
367368
368369class CstStatTypeAlias : public CstNode
@@ -402,13 +403,13 @@ class CstTypeReference : public CstNode
402403 LUAU_CST_RTTI (CstTypeReference)
403404
404405 CstTypeReference (
405- std::optional< Position> prefixPointPosition,
406+ Position prefixPointPosition,
406407 Position openParametersPosition,
407408 AstArray<Position> parametersCommaPositions,
408409 Position closeParametersPosition
409410 );
410411
411- std::optional< Position> prefixPointPosition;
412+ Position prefixPointPosition;
412413 Position openParametersPosition;
413414 AstArray<Position> parametersCommaPositions;
414415 Position closeParametersPosition;
@@ -432,8 +433,8 @@ class CstTypeTable : public CstNode
432433 Position indexerOpenPosition; // '[', only if Kind != Property
433434 Position indexerClosePosition; // ']' only if Kind != Property
434435 Position colonPosition;
435- std::optional< CstExprTable::Separator> separator; // may be missing for last Item
436- std::optional< Position> separatorPosition;
436+ CstExprTable::Separator separator; // may be missing for last Item
437+ Position separatorPosition;
437438
438439 CstExprConstantString* stringInfo = nullptr ; // only if Kind == StringProperty
439440 Position stringPosition{0 , 0 }; // only if Kind == StringProperty
@@ -455,7 +456,7 @@ class CstTypeFunction : public CstNode
455456 AstArray<Position> genericsCommaPositions,
456457 Position closeGenericsPosition,
457458 Position openArgsPosition,
458- AstArray<std::optional< Position> > argumentNameColonPositions,
459+ AstArray<Position> argumentNameColonPositions,
459460 AstArray<Position> argumentsCommaPositions,
460461 Position closeArgsPosition,
461462 Position returnArrowPosition
@@ -465,7 +466,7 @@ class CstTypeFunction : public CstNode
465466 AstArray<Position> genericsCommaPositions;
466467 Position closeGenericsPosition;
467468 Position openArgsPosition;
468- AstArray<std::optional< Position> > argumentNameColonPositions;
469+ AstArray<Position> argumentNameColonPositions;
469470 AstArray<Position> argumentsCommaPositions;
470471 Position closeArgsPosition;
471472 Position returnArrowPosition;
@@ -487,9 +488,9 @@ class CstTypeUnion : public CstNode
487488public:
488489 LUAU_CST_RTTI (CstTypeUnion)
489490
490- CstTypeUnion (std::optional< Position> leadingPosition, AstArray<Position> separatorPositions);
491+ CstTypeUnion (Position leadingPosition, AstArray<Position> separatorPositions);
491492
492- std::optional< Position> leadingPosition;
493+ Position leadingPosition;
493494 AstArray<Position> separatorPositions;
494495};
495496
@@ -498,9 +499,9 @@ class CstTypeIntersection : public CstNode
498499public:
499500 LUAU_CST_RTTI (CstTypeIntersection)
500501
501- explicit CstTypeIntersection (std::optional< Position> leadingPosition, AstArray<Position> separatorPositions);
502+ explicit CstTypeIntersection (Position leadingPosition, AstArray<Position> separatorPositions);
502503
503- std::optional< Position> leadingPosition;
504+ Position leadingPosition;
504505 AstArray<Position> separatorPositions;
505506};
506507
@@ -534,7 +535,6 @@ class CstTypePackExplicit : public CstNode
534535 explicit CstTypePackExplicit ();
535536 explicit CstTypePackExplicit (Position openParenthesesPosition, Position closeParenthesesPosition, AstArray<Position> commaPositions);
536537
537- bool hasParentheses;
538538 Position openParenthesesPosition;
539539 Position closeParenthesesPosition;
540540 AstArray<Position> commaPositions;
0 commit comments