@@ -106,7 +106,7 @@ export function getAllRules(): RuleSpec[] {
106
106
rule ( "SpaceAfterQuestionMarkInConditionalOperator" , SyntaxKind . QuestionToken , anyToken , [ isNonJsxSameLineTokenContext , isConditionalOperatorContext ] , RuleAction . InsertSpace ) ,
107
107
108
108
// in other cases there should be no space between '?' and next token
109
- rule ( "NoSpaceAfterQuestionMark" , SyntaxKind . QuestionToken , anyToken , [ isNonJsxSameLineTokenContext ] , RuleAction . DeleteSpace ) ,
109
+ rule ( "NoSpaceAfterQuestionMark" , SyntaxKind . QuestionToken , anyToken , [ isNonJsxSameLineTokenContext , isNonOptionalPropertyContext ] , RuleAction . DeleteSpace ) ,
110
110
111
111
rule ( "NoSpaceBeforeDot" , anyToken , [ SyntaxKind . DotToken , SyntaxKind . QuestionDotToken ] , [ isNonJsxSameLineTokenContext , isNotPropertyAccessOnIntegerLiteral ] , RuleAction . DeleteSpace ) ,
112
112
rule ( "NoSpaceAfterDot" , [ SyntaxKind . DotToken , SyntaxKind . QuestionDotToken ] , anyToken , [ isNonJsxSameLineTokenContext ] , RuleAction . DeleteSpace ) ,
@@ -561,6 +561,14 @@ function isTypeAnnotationContext(context: FormattingContext): boolean {
561
561
isFunctionLikeKind ( contextKind ) ;
562
562
}
563
563
564
+ function isOptionalPropertyContext ( context : FormattingContext ) {
565
+ return isPropertyDeclaration ( context . contextNode ) && context . contextNode . questionToken ;
566
+ }
567
+
568
+ function isNonOptionalPropertyContext ( context : FormattingContext ) {
569
+ return ! isOptionalPropertyContext ( context ) ;
570
+ }
571
+
564
572
function isConditionalOperatorContext ( context : FormattingContext ) : boolean {
565
573
return context . contextNode . kind === SyntaxKind . ConditionalExpression ||
566
574
context . contextNode . kind === SyntaxKind . ConditionalType ;
0 commit comments