diff --git a/crates/oxc_formatter/src/write/mod.rs b/crates/oxc_formatter/src/write/mod.rs index c3e534ea0a8be..608d691992059 100644 --- a/crates/oxc_formatter/src/write/mod.rs +++ b/crates/oxc_formatter/src/write/mod.rs @@ -1547,8 +1547,7 @@ impl<'a> FormatWrite<'a> for AstNode<'a, TSInterfaceDeclaration<'a>> { impl<'a> FormatWrite<'a> for AstNode<'a, TSInterfaceBody<'a>> { fn write(&self, f: &mut Formatter<'_, 'a>) -> FormatResult<()> { - let source_text = f.context().source_text(); - f.join_nodes_with_soft_line().entries(self.body()).finish() + self.body().fmt(f) } } @@ -1572,9 +1571,50 @@ impl<'a> FormatWrite<'a> for AstNode<'a, TSPropertySignature<'a>> { } } +struct FormatTSSignature<'a, 'b> { + last: bool, + signature: &'b AstNode<'a, TSSignature<'a>>, +} + +impl GetSpan for FormatTSSignature<'_, '_> { + fn span(&self) -> Span { + self.signature.span() + } +} + +impl<'a> Format<'a> for FormatTSSignature<'a, '_> { + fn fmt(&self, f: &mut Formatter<'_, 'a>) -> FormatResult<()> { + self.signature.fmt(f)?; + + match f.options().semicolons { + Semicolons::Always => { + if self.last { + write!(f, [if_group_breaks(&text(";"))])?; + } else { + text(";").fmt(f)?; + } + } + Semicolons::AsNeeded => { + if !self.last { + write!(f, [if_group_fits_on_line(&text(";"))])?; + } + } + } + + Ok(()) + } +} + impl<'a> Format<'a> for AstNode<'a, Vec<'a, TSSignature<'a>>> { fn fmt(&self, f: &mut Formatter<'_, 'a>) -> FormatResult<()> { - f.join_nodes_with_soft_line().entries(self).finish() + let last_index = self.len().saturating_sub(1); + f.join_nodes_with_soft_line() + .entries( + self.iter() + .enumerate() + .map(|(i, signature)| FormatTSSignature { last: i == last_index, signature }), + ) + .finish() } } @@ -1584,16 +1624,7 @@ impl<'a> FormatWrite<'a> for AstNode<'a, TSIndexSignature<'a>> { write!(f, ["readonly", space()])?; } // TODO: parameters only have one element for now. - write!( - f, - [ - "[", - self.parameters().first().unwrap(), - "]", - self.type_annotation(), - OptionalSemicolon - ] - ) + write!(f, ["[", self.parameters().first().unwrap(), "]", self.type_annotation(),]) } } @@ -1610,7 +1641,7 @@ impl<'a> FormatWrite<'a> for AstNode<'a, TSCallSignatureDeclaration<'a>> { if let Some(return_type) = &self.return_type() { write!(f, return_type)?; } - write!(f, OptionalSemicolon) + Ok(()) } } @@ -1656,7 +1687,7 @@ impl<'a> FormatWrite<'a> for AstNode<'a, TSMethodSignature<'a>> { if let Some(return_type) = &self.return_type() { write!(f, return_type)?; } - write!(f, OptionalSemicolon) + Ok(()) } } @@ -1670,7 +1701,7 @@ impl<'a> FormatWrite<'a> for AstNode<'a, TSConstructSignatureDeclaration<'a>> { if let Some(return_type) = self.return_type() { write!(f, return_type)?; } - write!(f, OptionalSemicolon) + Ok(()) } } diff --git a/crates/oxc_formatter/src/write/semicolon.rs b/crates/oxc_formatter/src/write/semicolon.rs index 7209f8e308834..c095b25731c66 100644 --- a/crates/oxc_formatter/src/write/semicolon.rs +++ b/crates/oxc_formatter/src/write/semicolon.rs @@ -73,6 +73,7 @@ impl<'a, 'b> ClassPropertySemicolon<'a, 'b> { ClassElement::AccessorProperty(def) => { def.computed && !(def.accessibility.is_some() || def.r#static || def.r#override) } + ClassElement::TSIndexSignature(_) => true, _ => false, } } @@ -82,9 +83,7 @@ impl<'a> Format<'a> for ClassPropertySemicolon<'a, '_> { fn fmt(&self, f: &mut Formatter<'_, 'a>) -> FormatResult<()> { if matches!( self.element.as_ref(), - ClassElement::StaticBlock(_) - | ClassElement::MethodDefinition(_) - | ClassElement::TSIndexSignature(_) + ClassElement::StaticBlock(_) | ClassElement::MethodDefinition(_) ) { return Ok(()); } diff --git a/tasks/coverage/snapshots/formatter_typescript.snap b/tasks/coverage/snapshots/formatter_typescript.snap index 8799896979061..afb15e9ebd0d1 100644 --- a/tasks/coverage/snapshots/formatter_typescript.snap +++ b/tasks/coverage/snapshots/formatter_typescript.snap @@ -2,9 +2,7 @@ commit: 261630d6 formatter_typescript Summary: AST Parsed : 8816/8816 (100.00%) -Positive Passed: 8763/8816 (99.40%) -Expect to Parse: tasks/coverage/typescript/tests/cases/compiler/APISample_jsdoc.ts -Expected `]` but found `:` +Positive Passed: 8774/8816 (99.52%) Mismatch: tasks/coverage/typescript/tests/cases/compiler/amdLikeInputDeclarationEmit.ts Expect to Parse: tasks/coverage/typescript/tests/cases/compiler/arrayFromAsync.ts @@ -21,8 +19,6 @@ Mismatch: tasks/coverage/typescript/tests/cases/compiler/complexNarrowingWithAny Mismatch: tasks/coverage/typescript/tests/cases/compiler/declarationEmitCastReusesTypeNode4.ts -Expect to Parse: tasks/coverage/typescript/tests/cases/compiler/declarationEmitPartialReuseComputedProperty.ts -Unexpected token Expect to Parse: tasks/coverage/typescript/tests/cases/compiler/declarationEmitPromise.ts Expected a semicolon or an implicit semicolon after a statement, but found none Mismatch: tasks/coverage/typescript/tests/cases/compiler/declarationEmitRecursiveConditionalAliasPreserved.ts @@ -37,16 +33,12 @@ Mismatch: tasks/coverage/typescript/tests/cases/compiler/jsxNamespaceGlobalReexp Mismatch: tasks/coverage/typescript/tests/cases/compiler/jsxNamespaceImplicitImportJSXNamespace.tsx -Expect to Parse: tasks/coverage/typescript/tests/cases/compiler/keyRemappingKeyofResult.ts -Unexpected token Expect to Parse: tasks/coverage/typescript/tests/cases/compiler/narrowingByTypeofInSwitch.ts Expected a semicolon or an implicit semicolon after a statement, but found none Mismatch: tasks/coverage/typescript/tests/cases/compiler/propertyAccessExpressionInnerComments.ts Expect to Parse: tasks/coverage/typescript/tests/cases/compiler/readonlyAssignmentInSubclassOfClassExpression.ts Expected `{` but found `as` -Expect to Parse: tasks/coverage/typescript/tests/cases/compiler/reducibleIndexedAccessTypes.ts -Expected `]` but found `:` Expect to Parse: tasks/coverage/typescript/tests/cases/compiler/reverseMappedTypeInferenceSameSource1.ts An implementation cannot be declared in ambient contexts. Mismatch: tasks/coverage/typescript/tests/cases/compiler/sourceMapValidationClasses.ts @@ -59,8 +51,6 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/compiler/superAccessCaste Expected a semicolon or an implicit semicolon after a statement, but found none Mismatch: tasks/coverage/typescript/tests/cases/compiler/tryStatementInternalComments.ts -Expect to Parse: tasks/coverage/typescript/tests/cases/compiler/typeName1.ts -Expected `]` but found `:` Mismatch: tasks/coverage/typescript/tests/cases/compiler/unionSignaturesWithThisParameter.ts Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/classes/propertyMemberDeclarations/overrideInterfaceProperty.ts @@ -93,19 +83,7 @@ Mismatch: tasks/coverage/typescript/tests/cases/conformance/interfaces/interface Mismatch: tasks/coverage/typescript/tests/cases/conformance/interfaces/interfacesExtendingClasses/interfaceExtendingClassWithProtecteds2.ts -Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/pedantic/noUncheckedIndexedAccess.ts -Expected `]` but found `:` Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/returnStatements/returnStatementNoAsiAfterTransform.ts Expected `,` but found `(` -Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/types/mapped/mappedTypeModifiers.ts -Expected `]` but found `:` -Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/propertyNamesOfReservedWords.ts -'static' modifier cannot appear on a type member.'static' modifier cannot appear on a type member. -Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/types/rest/genericObjectRest.ts -Unexpected token Mismatch: tasks/coverage/typescript/tests/cases/conformance/types/tuple/named/namedTupleMembers.ts -Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/types/uniqueSymbol/uniqueSymbols.ts -Unexpected token -Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/types/uniqueSymbol/uniqueSymbolsDeclarations.ts -Unexpected token diff --git a/tasks/prettier_conformance/snapshots/prettier.ts.snap.md b/tasks/prettier_conformance/snapshots/prettier.ts.snap.md index 323d60f8a817b..61a108ac0a00d 100644 --- a/tasks/prettier_conformance/snapshots/prettier.ts.snap.md +++ b/tasks/prettier_conformance/snapshots/prettier.ts.snap.md @@ -1,4 +1,4 @@ -ts compatibility: 352/573 (61.43%) +ts compatibility: 386/573 (67.36%) # Failed @@ -13,12 +13,10 @@ ts compatibility: 352/573 (61.43%) | typescript/angular-component-examples/15934-computed.component.ts | 💥💥 | 76.92% | | typescript/angular-component-examples/15934.component.ts | 💥💥 | 53.85% | | typescript/angular-component-examples/test.component.ts | 💥💥 | 41.18% | -| typescript/argument-expansion/argument_expansion.ts | 💥 | 93.22% | | typescript/argument-expansion/arrow-with-return-type.ts | 💥 | 89.47% | -| typescript/array/comment.ts | 💥 | 87.50% | | typescript/arrow/16067.ts | 💥💥 | 95.92% | | typescript/arrow/comments.ts | 💥✨ | 44.44% | -| typescript/as/as.ts | 💥 | 69.29% | +| typescript/as/as.ts | 💥 | 74.02% | | typescript/as/assignment.ts | 💥 | 86.67% | | typescript/as/assignment2.ts | 💥 | 94.12% | | typescript/as/export_default_as.ts | 💥 | 0.00% | @@ -26,11 +24,9 @@ ts compatibility: 352/573 (61.43%) | typescript/as/long-identifiers.ts | 💥 | 92.86% | | typescript/as/nested-await-and-as.ts | 💥 | 42.86% | | typescript/as/ternary.ts | 💥 | 82.00% | -| typescript/assignment/issue-10846.ts | 💥 | 38.60% | -| typescript/assignment/issue-10848.tsx | 💥 | 48.48% | +| typescript/assignment/issue-10846.ts | 💥 | 63.16% | +| typescript/assignment/issue-10848.tsx | 💥 | 52.12% | | typescript/assignment/issue-10850.ts | 💥 | 50.00% | -| typescript/assignment/issue-12413.ts | 💥 | 21.88% | -| typescript/call-signature/call-signature.ts | 💥 | 79.66% | | typescript/cast/as-const.ts | 💥 | 60.00% | | typescript/cast/generic-cast.ts | 💥 | 39.60% | | typescript/cast/tuple-and-record.ts | 💥 | 0.00% | @@ -41,29 +37,25 @@ ts compatibility: 352/573 (61.43%) | typescript/class/constructor.ts | 💥 | 96.15% | | typescript/class/empty-method-body.ts | 💥 | 80.00% | | typescript/class/extends_implements.ts | 💥 | 86.30% | -| typescript/class/generics.ts | 💥 | 80.00% | | typescript/class/quoted-property.ts | 💥 | 66.67% | | typescript/comments/16065.ts | 💥 | 63.64% | | typescript/comments/16207.ts | 💥 | 71.43% | | typescript/comments/16889.ts | 💥 | 62.61% | | typescript/comments/declare_function.ts | 💥 | 66.67% | -| typescript/comments/interface.ts | 💥 | 92.86% | -| typescript/comments/issues.ts | 💥 | 21.21% | -| typescript/comments/location.ts | 💥 | 75.00% | +| typescript/comments/issues.ts | 💥 | 27.27% | +| typescript/comments/location.ts | 💥 | 95.00% | | typescript/comments/mapped_types.ts | 💥 | 58.82% | -| typescript/comments/method_types.ts | 💥 | 76.92% | +| typescript/comments/method_types.ts | 💥 | 79.49% | | typescript/comments/type-parameters.ts | 💥 | 36.36% | -| typescript/comments/type_literals.ts | 💥 | 55.17% | +| typescript/comments/type_literals.ts | 💥 | 68.97% | | typescript/comments/union.ts | 💥 | 5.26% | -| typescript/compiler/anyIsAssignableToObject.ts | 💥 | 50.00% | +| typescript/compiler/anyIsAssignableToObject.ts | 💥 | 75.00% | | typescript/compiler/castOfAwait.ts | 💥 | 87.50% | | typescript/compiler/castTest.ts | 💥 | 96.67% | -| typescript/compiler/checkInfiniteExpansionTermination.ts | 💥 | 85.00% | -| typescript/compiler/commentsInterface.ts | 💥 | 66.67% | | typescript/compiler/contextualSignatureInstantiation2.ts | 💥 | 88.89% | | typescript/compiler/indexSignatureWithInitializer.ts | 💥 | 75.00% | -| typescript/compiler/mappedTypeWithCombinedTypeMappers.ts | 💥 | 64.86% | -| typescript/compiler/privacyGloImport.ts | 💥 | 95.92% | +| typescript/compiler/mappedTypeWithCombinedTypeMappers.ts | 💥 | 91.89% | +| typescript/compiler/privacyGloImport.ts | 💥 | 99.32% | | typescript/conditional-types/comments.ts | 💥💥 | 60.21% | | typescript/conditional-types/conditonal-types.ts | 💥💥 | 77.84% | | typescript/conditional-types/infer-type.ts | 💥💥 | 39.38% | @@ -75,44 +67,33 @@ ts compatibility: 352/573 (61.43%) | typescript/conformance/classes/mixinClassesAnnotated.ts | 💥 | 98.57% | | typescript/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMixedWithModifiers.ts | 💥 | 86.67% | | typescript/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingClass.ts | 💥 | 96.77% | -| typescript/conformance/es6/Symbols/symbolProperty15.ts | 💥 | 66.67% | +| typescript/conformance/es6/Symbols/symbolProperty15.ts | 💥 | 73.33% | | typescript/conformance/expressions/functionCalls/callWithSpreadES6.ts | 💥 | 97.96% | -| typescript/conformance/interfaces/interfaceDeclarations/interfaceWithMultipleBaseTypes2.ts | 💥 | 64.00% | -| typescript/conformance/internalModules/importDeclarations/exportImportAlias.ts | 💥 | 91.67% | -| typescript/conformance/internalModules/importDeclarations/importAliasIdentifiers.ts | 💥 | 86.00% | -| typescript/conformance/internalModules/importDeclarations/invalidImportAliasIdentifiers.ts | 💥 | 95.83% | -| typescript/conformance/internalModules/importDeclarations/shadowedInternalModule.ts | 💥 | 87.88% | | typescript/conformance/types/ambient/ambientDeclarations.ts | 💥 | 90.00% | -| typescript/conformance/types/functions/functionImplementations.ts | 💥 | 99.44% | | typescript/conformance/types/functions/functionOverloadCompatibilityWithVoid01.ts | 💥 | 75.00% | | typescript/conformance/types/functions/functionOverloadCompatibilityWithVoid02.ts | 💥 | 75.00% | | typescript/conformance/types/functions/functionOverloadCompatibilityWithVoid03.ts | 💥 | 75.00% | | typescript/conformance/types/functions/functionOverloadErrorsSyntax.ts | 💥 | 0.00% | -| typescript/conformance/types/interfaceDeclaration/interfaceDeclaration.ts | 💥 | 90.00% | | typescript/conformance/types/namespaceExportDeclaration/exportAsNamespace.d.ts | 💥 | 75.00% | | typescript/conformance/types/tuple/wideningTuples1.ts | 💥 | 80.00% | | typescript/conformance/types/typeOperator/typeOperator.ts | 💥 | 0.00% | -| typescript/conformance/types/typeParameter/typeParameter.ts | 💥 | 66.67% | | typescript/conformance/types/typeParameters/typeParameterLists/innerTypeParameterShadowingOuterOne2.ts | 💥 | 93.33% | -| typescript/conformance/types/union/unionTypeCallSignatures.ts | 💥 | 63.27% | +| typescript/conformance/types/union/unionTypeCallSignatures.ts | 💥 | 64.95% | | typescript/conformance/types/union/unionTypeCallSignatures3.ts | 💥 | 68.97% | | typescript/conformance/types/union/unionTypeConstructSignatures.ts | 💥 | 63.44% | | typescript/conformance/types/union/unionTypeEquivalence.ts | 💥 | 90.00% | -| typescript/conformance/types/union/unionTypeFromArrayLiteral.ts | 💥 | 93.55% | -| typescript/conformance/types/union/unionTypeIndexSignature.ts | 💥 | 63.33% | +| typescript/conformance/types/union/unionTypeIndexSignature.ts | 💥 | 68.97% | | typescript/custom/abstract/abstractProperties.ts | 💥 | 75.00% | | typescript/custom/computedProperties/string.ts | 💥 | 73.33% | -| typescript/custom/computedProperties/symbol.ts | 💥 | 71.43% | | typescript/custom/declare/declareModifier.d.ts | 💥 | 88.89% | | typescript/custom/modifiers/minustoken.ts | 💥 | 20.00% | | typescript/custom/modifiers/question.ts | 💥 | 0.00% | | typescript/custom/modifiers/readonly.ts | 💥 | 0.00% | -| typescript/custom/module/global.ts | 💥 | 80.00% | | typescript/custom/typeParameters/callAndConstructSignatureLong.ts | 💥 | 18.18% | | typescript/custom/typeParameters/functionTypeLong.ts | 💥 | 50.00% | | typescript/custom/typeParameters/typeParametersLong.ts | 💥 | 0.00% | | typescript/declare/declare_function.ts | 💥 | 44.44% | -| typescript/declare/object-type-in-declare-function.ts | 💥 | 58.82% | +| typescript/declare/object-type-in-declare-function.ts | 💥 | 64.71% | | typescript/declare/trailing-comma/function-rest-trailing-comma.ts | 💥💥💥 | 50.00% | | typescript/decorators/comments.ts | 💥 | 60.00% | | typescript/decorators/decorators-comments.ts | 💥 | 65.71% | @@ -122,29 +103,23 @@ ts compatibility: 352/573 (61.43%) | typescript/definite/without-annotation.ts | 💥 | 25.00% | | typescript/enum/computed-members.ts | 💥 | 0.00% | | typescript/export/comment.ts | 💥 | 50.00% | -| typescript/export/default.ts | 💥 | 66.67% | | typescript/export/export.ts | 💥 | 85.71% | | typescript/export-default/function_as.ts | 💥 | 0.00% | | typescript/function-type/consistent.ts | 💥 | 70.83% | -| typescript/function-type/single-parameter.ts | 💥 | 50.00% | | typescript/function-type/type-annotation.ts | 💥 | 0.00% | | typescript/generic/arrow-return-type.ts | 💥 | 80.77% | | typescript/generic/issue-6899.ts | 💥 | 21.05% | | typescript/generic/object-method.ts | 💥 | 72.73% | -| typescript/generic/ungrouped-parameters.ts | 💥 | 74.07% | -| typescript/import-type/import-type.ts | 💥💥 | 93.33% | +| typescript/generic/ungrouped-parameters.ts | 💥 | 81.48% | | typescript/index-signature/static.ts | 💥 | 66.67% | | typescript/infer-extends/basic.ts | 💥 | 71.43% | | typescript/interface/comments-generic.ts | 💥💥 | 30.00% | -| typescript/interface/ignore.ts | 💥💥 | 94.84% | -| typescript/interface/long-extends.ts | 💥✨ | 40.74% | -| typescript/interface/separator.ts | 💥✨ | 36.11% | +| typescript/interface/ignore.ts | 💥💥 | 88.26% | | typescript/interface/long-type-parameters/long-type-parameters.ts | 💥💥 | 52.10% | -| typescript/interface2/comments-declare.ts | 💥 | 44.44% | +| typescript/interface2/comments-declare.ts | 💥 | 66.67% | | typescript/interface2/comments.ts | 💥 | 78.87% | -| typescript/interface2/module.ts | 💥 | 80.00% | -| typescript/interface2/break/break.ts | 💥💥💥 | 68.93% | -| typescript/intersection/intersection-parens.ts | 💥💥 | 55.91% | +| typescript/interface2/break/break.ts | 💥💥💥 | 80.23% | +| typescript/intersection/intersection-parens.ts | 💥💥 | 58.06% | | typescript/intersection/type-arguments.ts | 💥💥 | 46.67% | | typescript/intersection/consistent-with-flow/comment.ts | 💥 | 0.00% | | typescript/intersection/consistent-with-flow/intersection-parens.ts | 💥 | 60.47% | @@ -152,14 +127,11 @@ ts compatibility: 352/573 (61.43%) | typescript/keyof/keyof.ts | 💥 | 20.00% | | typescript/keyword-types/conditional-types.ts | 💥 | 87.50% | | typescript/keywords/keywords-2.ts | 💥 | 79.41% | -| typescript/last-argument-expansion/decorated-function.tsx | 💥 | 22.81% | +| typescript/last-argument-expansion/decorated-function.tsx | 💥 | 29.06% | | typescript/mapped-type/intersection.ts | 💥 | 0.00% | | typescript/mapped-type/issue-11098.ts | 💥 | 60.00% | | typescript/mapped-type/break-mode/break-mode.ts | 💥 | 40.00% | -| typescript/method/issue-10352-consistency.ts | 💥 | 95.45% | -| typescript/method/method-signature.ts | 💥 | 93.75% | | typescript/method/semi.ts | 💥 | 42.86% | -| typescript/method/type_literal_optional_method.ts | 💥 | 0.00% | | typescript/module/global.ts | 💥 | 75.00% | | typescript/module/namespace_function.ts | 💥 | 66.67% | | typescript/multiparser-css/issue-6259.ts | 💥 | 57.14% | @@ -167,21 +139,18 @@ ts compatibility: 352/573 (61.43%) | typescript/no-semi/non-null.ts | 💥💥 | 66.67% | | typescript/non-null/optional-chain.ts | 💥 | 72.22% | | typescript/non-null/parens.ts | 💥 | 96.00% | -| typescript/nosemi/type.ts | 💥 | 88.89% | -| typescript/object-multiline/multiline.ts | 💥💥 | 58.83% | +| typescript/nosemi/index-signature.ts | 💥 | 75.00% | +| typescript/object-multiline/multiline.ts | 💥✨ | 23.21% | | typescript/optional-type/complex.ts | 💥 | 0.00% | -| typescript/optional-variance/basic.ts | 💥 | 59.02% | -| typescript/optional-variance/with-jsx.tsx | 💥 | 59.02% | +| typescript/optional-variance/basic.ts | 💥 | 83.61% | +| typescript/optional-variance/with-jsx.tsx | 💥 | 83.61% | | typescript/override-modifiers/override-modifier.ts | 💥 | 25.00% | | typescript/prettier-ignore/mapped-types.ts | 💥 | 54.72% | | typescript/prettier-ignore/prettier-ignore-nested-unions.ts | 💥 | 15.79% | | typescript/prettier-ignore/prettier-ignore-parenthesized-type.ts | 💥 | 0.00% | -| typescript/quote-props/types.ts | 💥💥💥 | 55.56% | | typescript/rest-type/complex.ts | 💥 | 0.00% | | typescript/rest-type/infer-type.ts | 💥 | 80.00% | -| typescript/satisfies-operators/argument-expansion.ts | 💥✨ | 46.77% | | typescript/satisfies-operators/assignment.ts | 💥💥 | 72.73% | -| typescript/satisfies-operators/basic.ts | 💥✨ | 45.00% | | typescript/satisfies-operators/export-default-as.ts | 💥💥 | 0.00% | | typescript/satisfies-operators/expression-statement.ts | 💥💥 | 78.38% | | typescript/satisfies-operators/gt-lt.ts | 💥💥 | 0.00% | @@ -190,20 +159,18 @@ ts compatibility: 352/573 (61.43%) | typescript/satisfies-operators/non-null.ts | 💥💥 | 66.67% | | typescript/satisfies-operators/satisfies.ts | 💥💥 | 81.82% | | typescript/satisfies-operators/ternary.ts | 💥💥 | 82.00% | -| typescript/semi/no-semi.ts | 💥 | 88.89% | | typescript/template-literal-types/template-literal-types.ts | 💥 | 80.00% | | typescript/test-declarations/test_declarations.ts | 💥💥 | 66.67% | | typescript/trailing-comma/arrow-functions.tsx | 💥💥💥 | 25.00% | | typescript/trailing-comma/type-arguments.ts | 💥💥💥 | 10.53% | | typescript/trailing-comma/type-parameters-vs-arguments.ts | 💥💥💥 | 66.67% | -| typescript/tsx/type-parameters.tsx | 💥 | 90.48% | | typescript/tuple/dangling-comments.ts | 💥💥💥 | 21.28% | | typescript/tuple/trailing-comma-for-empty-tuples.ts | 💥💥💥 | 16.67% | | typescript/tuple/trailing-comma-trailing-rest.ts | 💥💥💥 | 0.00% | -| typescript/tuple/trailing-comma.ts | 💥💥💥 | 15.38% | +| typescript/tuple/trailing-comma.ts | 💥💥💥 | 61.54% | | typescript/tuple/tuple.ts | 💥💥💥 | 0.00% | | typescript/type-alias/conditional.ts | 💥 | 23.33% | -| typescript/type-alias/issue-100857.ts | 💥 | 25.35% | +| typescript/type-alias/issue-100857.ts | 💥 | 67.61% | | typescript/type-alias/issue-9874.ts | 💥 | 0.00% | | typescript/type-arguments-bit-shift-left-like/1.ts | 💥 | 0.00% | | typescript/type-arguments-bit-shift-left-like/3.ts | 💥 | 0.00% | @@ -213,15 +180,14 @@ ts compatibility: 352/573 (61.43%) | typescript/typeparams/const.ts | 💥 | 86.15% | | typescript/typeparams/line-breaking-after-extends-2.ts | 💥 | 21.74% | | typescript/typeparams/line-breaking-after-extends.ts | 💥 | 17.14% | -| typescript/typeparams/long-function-arg.ts | 💥 | 66.67% | +| typescript/typeparams/long-function-arg.ts | 💥 | 76.92% | | typescript/typeparams/empty-parameters-with-arrow-function/issue-13817.ts | 💥 | 66.67% | | typescript/typeparams/trailing-comma/type-paramters.ts | 💥💥💥 | 28.57% | | typescript/union/comments.ts | 💥 | 15.38% | -| typescript/union/inlining.ts | 💥 | 36.22% | -| typescript/union/union-parens.ts | 💥 | 56.00% | +| typescript/union/inlining.ts | 💥 | 45.67% | +| typescript/union/union-parens.ts | 💥 | 58.00% | | typescript/union/with-type-params.ts | 💥 | 0.00% | | typescript/union/consistent-with-flow/prettier-ignore.ts | 💥 | 19.05% | | typescript/union/consistent-with-flow/single-type.ts | 💥 | 3.39% | | typescript/union/consistent-with-flow/within-tuple.ts | 💥 | 16.51% | -| typescript/union/single-type/single-type.ts | 💥 | 33.33% | -| typescript/webhost/webtsc.ts | 💥 | 99.08% | +| typescript/union/single-type/single-type.ts | 💥 | 66.67% |