13af6ab5fSopenharmony_ciFrom 93dbec5e710a8cb28ca8b7f0c70b9ade4a8fc911 Mon Sep 17 00:00:00 2001 23af6ab5fSopenharmony_ciDate: Sat, 15 Jan 2022 21:39:48 +0800 33af6ab5fSopenharmony_ciSubject: [PATCH] test patch 43af6ab5fSopenharmony_ci 53af6ab5fSopenharmony_ci--- 63af6ab5fSopenharmony_ci .../ambient/ambientDeclarations.ts | 1 + 73af6ab5fSopenharmony_ci .../ambientDeclarationsPatterns.ts | 11 + 83af6ab5fSopenharmony_ci .../declarations.d.ts | 18 + 93af6ab5fSopenharmony_ci .../ambient/ambientInsideNonAmbient.ts | 2 + 103af6ab5fSopenharmony_ci .../ambientInsideNonAmbientExternalModule.ts | 4 +- 113af6ab5fSopenharmony_ci .../ambientShorthand_merging.ts | 6 + 123af6ab5fSopenharmony_ci .../declarations1.d.ts | 2 + 133af6ab5fSopenharmony_ci .../declarations2.d.ts | 4 + 143af6ab5fSopenharmony_ci .../ambientShorthand_reExport.ts | 5 + 153af6ab5fSopenharmony_ci .../declarations.d.ts | 2 + 163af6ab5fSopenharmony_ci .../ambientShorthand_reExport/jquery.d.ts | 2 + 173af6ab5fSopenharmony_ci .../ambientShorthand_reExport/reExportAll.ts | 2 + 183af6ab5fSopenharmony_ci .../ambientShorthand_reExport/reExportX.ts | 2 + 193af6ab5fSopenharmony_ci .../async/es5/asyncMethodWithSuper_es5.ts | 1 + 203af6ab5fSopenharmony_ci .../asyncOrYieldAsBindingIdentifier1.ts | 49 ++ 213af6ab5fSopenharmony_ci .../classAbstractAsIdentifier.ts | 2 +- 223af6ab5fSopenharmony_ci .../classBody/classWithEmptyBody.ts | 4 +- 233af6ab5fSopenharmony_ci .../classDeclarations/classInsideBlock.ts | 1 + 243af6ab5fSopenharmony_ci .../classWithPredefinedTypesAsNames.ts | 4 +- 253af6ab5fSopenharmony_ci .../classWithSemicolonClassElement1.ts | 3 +- 263af6ab5fSopenharmony_ci .../classWithSemicolonClassElement2.ts | 3 +- 273af6ab5fSopenharmony_ci .../classExpressions/classExpression2.ts | 4 +- 283af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock1.ts | 11 + 293af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock10.ts | 30 ++ 303af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock11.ts | 15 + 313af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock12.ts | 10 + 323af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock13.ts | 14 + 333af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock14.ts | 15 + 343af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock15.ts | 18 + 353af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock16.ts | 26 + 363af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock17.ts | 33 ++ 373af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock18.ts | 15 + 383af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock19.ts | 6 + 393af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock2.ts | 20 + 403af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock20.ts | 13 + 413af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock21.ts | 7 + 423af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock22.ts | 72 +++ 433af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock23.ts | 21 + 443af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock24.ts | 8 + 453af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock25.ts | 23 + 463af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock26.ts | 30 ++ 473af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock27.ts | 17 + 483af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock3.ts | 19 + 493af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock4.ts | 16 + 503af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock5.ts | 19 + 513af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock6.ts | 62 +++ 523af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock7.ts | 43 ++ 533af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock8.ts | 48 ++ 543af6ab5fSopenharmony_ci .../classStaticBlock/classStaticBlock9.ts | 8 + 553af6ab5fSopenharmony_ci .../classStaticBlockUseBeforeDef1.ts | 15 + 563af6ab5fSopenharmony_ci .../classStaticBlockUseBeforeDef2.ts | 10 + 573af6ab5fSopenharmony_ci .../classConstructorAccessibility4.ts | 4 +- 583af6ab5fSopenharmony_ci ...structorImplementationWithDefaultValues.ts | 6 +- 593af6ab5fSopenharmony_ci .../declarationEmitReadonly.ts | 3 +- 603af6ab5fSopenharmony_ci .../quotedConstructors.ts | 4 + 613af6ab5fSopenharmony_ci ...idesIndexersWithAssignmentCompatibility.ts | 4 +- 623af6ab5fSopenharmony_ci .../superInStaticMembers1.ts | 492 ++++++++++++++++++ 633af6ab5fSopenharmony_ci .../thisAndSuperInStaticMembers1.ts | 42 ++ 643af6ab5fSopenharmony_ci .../thisAndSuperInStaticMembers2.ts | 42 ++ 653af6ab5fSopenharmony_ci .../thisAndSuperInStaticMembers3.ts | 26 + 663af6ab5fSopenharmony_ci .../thisAndSuperInStaticMembers4.ts | 26 + 673af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers.ts | 3 +- 683af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers10.ts | 51 ++ 693af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers11.ts | 51 ++ 703af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers12.ts | 10 + 713af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers13.ts | 10 + 723af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers3.ts | 12 + 733af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers4.ts | 12 + 743af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers5.ts | 9 + 753af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers6.ts | 7 + 763af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers7.ts | 12 + 773af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers8.ts | 19 + 783af6ab5fSopenharmony_ci .../typeOfThisInStaticMembers9.ts | 22 + 793af6ab5fSopenharmony_ci .../privateNameComputedPropertyName3.ts | 2 + 803af6ab5fSopenharmony_ci .../privateNames/privateNameFieldAccess.ts | 1 + 813af6ab5fSopenharmony_ci .../privateNames/privateNameHashCharName.ts | 11 + 823af6ab5fSopenharmony_ci .../privateNames/privateNameInInExpression.ts | 119 +++++ 833af6ab5fSopenharmony_ci .../privateNameInInExpressionTransform.ts | 47 ++ 843af6ab5fSopenharmony_ci .../privateNameInInExpressionUnused.ts | 13 + 853af6ab5fSopenharmony_ci .../privateNamesIncompatibleModifiersJs.ts | 65 +++ 863af6ab5fSopenharmony_ci .../classes/mixinClassesAnnotated.ts | 3 + 873af6ab5fSopenharmony_ci .../classes/mixinClassesAnonymous.ts | 2 + 883af6ab5fSopenharmony_ci .../classes/mixinClassesMembers.ts | 5 + 893af6ab5fSopenharmony_ci .../abstractProperty.ts | 3 + 903af6ab5fSopenharmony_ci .../abstractPropertyInitializer.ts | 5 + 913af6ab5fSopenharmony_ci .../instanceMemberInitialization.ts | 7 +- 923af6ab5fSopenharmony_ci ...instanceMemberWithComputedPropertyName2.ts | 1 + 933af6ab5fSopenharmony_ci .../staticFactory1.ts | 3 +- 943af6ab5fSopenharmony_ci .../staticAndNonStaticPropertiesSameName.ts | 3 +- 953af6ab5fSopenharmony_ci .../staticPropertyAndFunctionWithSameName.ts | 4 +- 963af6ab5fSopenharmony_ci ...icPropertyNameConflictsInAmbientContext.ts | 10 + 973af6ab5fSopenharmony_ci .../controlFlow/assertionTypePredicates2.ts | 27 + 983af6ab5fSopenharmony_ci .../controlFlow/controlFlowAliasing.ts | 285 ++++++++++ 993af6ab5fSopenharmony_ci .../controlFlowAliasingCatchVariables.ts | 28 + 1003af6ab5fSopenharmony_ci .../controlFlow/controlFlowElementAccess2.ts | 2 +- 1013af6ab5fSopenharmony_ci .../controlFlow/controlFlowForInStatement2.ts | 25 + 1023af6ab5fSopenharmony_ci .../controlFlow/controlFlowInOperator.ts | 26 + 1033af6ab5fSopenharmony_ci .../controlFlowInstanceofExtendsFunction.ts | 4 +- 1043af6ab5fSopenharmony_ci .../controlFlowSuperPropertyAccess.ts | 1 + 1053af6ab5fSopenharmony_ci .../controlFlow/controlFlowTypeofObject.ts | 71 +++ 1063af6ab5fSopenharmony_ci .../dependentDestructuredVariables.ts | 161 ++++++ 1073af6ab5fSopenharmony_ci .../typeGuardsNestedAssignments.ts | 3 +- 1083af6ab5fSopenharmony_ci .../controlFlow/typeGuardsTypeParameters.ts | 1 + 1093af6ab5fSopenharmony_ci .../declarationEmitWorkWithInlineComments.ts | 5 +- 1103af6ab5fSopenharmony_ci .../declarationEmitThisPredicates01.ts | 3 +- 1113af6ab5fSopenharmony_ci ...tionEmitThisPredicatesWithPrivateName01.ts | 3 +- 1123af6ab5fSopenharmony_ci .../typeReferenceRelatedFiles/fs.d.ts | 5 + 1133af6ab5fSopenharmony_ci .../typeReferenceRelatedFiles/main.ts | 2 + 1143af6ab5fSopenharmony_ci .../typeReferenceRelatedFiles/package.json | 4 + 1153af6ab5fSopenharmony_ci .../typeReferenceRelatedFiles.ts | 18 + 1163af6ab5fSopenharmony_ci .../decoratorOnClassConstructorParameter5.ts | 15 + 1173af6ab5fSopenharmony_ci .../class/decoratedBlockScopedClass1.ts | 16 + 1183af6ab5fSopenharmony_ci .../class/decoratedBlockScopedClass2.ts | 19 + 1193af6ab5fSopenharmony_ci .../class/decoratedBlockScopedClass3.ts | 27 + 1203af6ab5fSopenharmony_ci .../class/method/decoratorOnClassMethod14.ts | 14 + 1213af6ab5fSopenharmony_ci .../class/method/decoratorOnClassMethod15.ts | 12 + 1223af6ab5fSopenharmony_ci .../class/method/decoratorOnClassMethod16.ts | 12 + 1233af6ab5fSopenharmony_ci .../class/method/decoratorOnClassMethod17.ts | 11 + 1243af6ab5fSopenharmony_ci .../class/method/decoratorOnClassMethod18.ts | 11 + 1253af6ab5fSopenharmony_ci .../decoratorMetadataWithTypeOnlyImport2.ts | 17 + 1263af6ab5fSopenharmony_ci ...ter.asyncGenerators.classMethods.es2015.ts | 11 + 1273af6ab5fSopenharmony_ci .../conformance/es2018/es2018IntlAPIs.ts | 7 + 1283af6ab5fSopenharmony_ci .../conformance/es2020/es2020IntlAPIs.ts | 45 ++ 1293af6ab5fSopenharmony_ci ...tionWithPropertyAccessInHeritageClause1.ts | 4 +- 1303af6ab5fSopenharmony_ci .../superCallBeforeThisAccessing1.ts | 1 + 1313af6ab5fSopenharmony_ci .../superCallBeforeThisAccessing2.ts | 1 + 1323af6ab5fSopenharmony_ci .../superCallBeforeThisAccessing5.ts | 1 + 1333af6ab5fSopenharmony_ci .../superCallBeforeThisAccessing8.ts | 1 + 1343af6ab5fSopenharmony_ci .../es6/spread/arraySpreadImportHelpers.ts | 16 + 1353af6ab5fSopenharmony_ci ...mplateStringWithCommentsInArrowFunction.ts | 14 + 1363af6ab5fSopenharmony_ci .../expressions/asOperator/asOperatorASI.ts | 1 + 1373af6ab5fSopenharmony_ci .../comparisonOperatorWithIdenticalObjects.ts | 6 +- 1383af6ab5fSopenharmony_ci .../comparisonOperatorWithIntersectionType.ts | 5 + 1393af6ab5fSopenharmony_ci ...nshipObjectsOnInstantiatedCallSignature.ts | 4 +- 1403af6ab5fSopenharmony_ci ...jectsOnInstantiatedConstructorSignature.ts | 4 +- 1413af6ab5fSopenharmony_ci ...peratorWithSubtypeObjectOnCallSignature.ts | 3 +- 1423af6ab5fSopenharmony_ci ...WithSubtypeObjectOnConstructorSignature.ts | 3 +- 1433af6ab5fSopenharmony_ci ...eratorWithSubtypeObjectOnIndexSignature.ts | 3 +- 1443af6ab5fSopenharmony_ci ...ubtypeObjectOnInstantiatedCallSignature.ts | 3 +- 1453af6ab5fSopenharmony_ci ...bjectOnInstantiatedConstructorSignature.ts | 3 +- 1463af6ab5fSopenharmony_ci ...isonOperatorWithSubtypeObjectOnProperty.ts | 6 +- 1473af6ab5fSopenharmony_ci ...anceofOperatorWithInvalidStaticToString.ts | 3 + 1483af6ab5fSopenharmony_ci .../instanceofOperatorWithLHSIsObject.ts | 1 + 1493af6ab5fSopenharmony_ci ...ommaOperatorWithSecondOperandObjectType.ts | 1 + 1503af6ab5fSopenharmony_ci .../conditionalOperatorWithIdenticalBCT.ts | 3 + 1513af6ab5fSopenharmony_ci .../superCallParameterContextualTyping1.ts | 2 + 1523af6ab5fSopenharmony_ci .../superCallParameterContextualTyping3.ts | 3 +- 1533af6ab5fSopenharmony_ci .../functionCalls/callWithSpread.ts | 1 + 1543af6ab5fSopenharmony_ci .../functions/arrowFunctionExpressions.ts | 1 + 1553af6ab5fSopenharmony_ci .../newOperator/newOperatorConformance.ts | 1 + 1563af6ab5fSopenharmony_ci .../expressions/superCalls/superCalls.ts | 2 + 1573af6ab5fSopenharmony_ci .../thisKeyword/typeOfThisGeneral.ts | 178 +++++++ 1583af6ab5fSopenharmony_ci .../typeGuards/TypeGuardWithArrayUnion.ts | 1 + 1593af6ab5fSopenharmony_ci .../typeGuards/typeGuardFunction.ts | 6 +- 1603af6ab5fSopenharmony_ci .../typeGuards/typeGuardFunctionGenerics.ts | 4 +- 1613af6ab5fSopenharmony_ci .../typeGuardOfFormExpr1AndExpr2.ts | 3 +- 1623af6ab5fSopenharmony_ci .../typeGuards/typeGuardOfFormExpr1OrExpr2.ts | 3 +- 1633af6ab5fSopenharmony_ci .../typeGuards/typeGuardOfFormInstanceOf.ts | 45 +- 1643af6ab5fSopenharmony_ci .../typeGuards/typeGuardOfFormIsType.ts | 5 +- 1653af6ab5fSopenharmony_ci .../typeGuardOfFormTypeOfBoolean.ts | 1 + 1663af6ab5fSopenharmony_ci .../typeGuards/typeGuardOfFormTypeOfNumber.ts | 1 + 1673af6ab5fSopenharmony_ci .../typeGuards/typeGuardOfFormTypeOfString.ts | 1 + 1683af6ab5fSopenharmony_ci .../typeGuardOfFromPropNameInUnionType.ts | 9 + 1693af6ab5fSopenharmony_ci .../typeGuards/typeGuardsInClassAccessors.ts | 1 + 1703af6ab5fSopenharmony_ci .../typeGuards/typeGuardsInClassMethods.ts | 1 + 1713af6ab5fSopenharmony_ci .../typeGuards/typeGuardsInProperties.ts | 3 +- 1723af6ab5fSopenharmony_ci .../typeGuards/typeGuardsOnClassProperty.ts | 3 +- 1733af6ab5fSopenharmony_ci .../bitwiseNotOperatorWithNumberType.ts | 3 +- 1743af6ab5fSopenharmony_ci .../bitwiseNotOperatorWithStringType.ts | 3 +- 1753af6ab5fSopenharmony_ci .../externalModules/exportNonVisibleType.ts | 1 + 1763af6ab5fSopenharmony_ci .../moduleResolutionWithoutExtension1.ts | 12 + 1773af6ab5fSopenharmony_ci .../moduleResolutionWithoutExtension2.ts | 6 + 1783af6ab5fSopenharmony_ci .../moduleResolutionWithoutExtension3.ts | 12 + 1793af6ab5fSopenharmony_ci .../moduleResolutionWithoutExtension4.ts | 12 + 1803af6ab5fSopenharmony_ci .../moduleResolutionWithoutExtension5.ts | 6 + 1813af6ab5fSopenharmony_ci .../moduleResolutionWithoutExtension6.ts | 8 + 1823af6ab5fSopenharmony_ci .../moduleResolutionWithoutExtension7.ts | 6 + 1833af6ab5fSopenharmony_ci .../moduleResolutionWithoutExtension8.ts | 6 + 1843af6ab5fSopenharmony_ci .../typeOnly/exportSpecifiers.ts | 21 + 1853af6ab5fSopenharmony_ci .../typeOnly/importDefaultNamedType/a.ts | 2 + 1863af6ab5fSopenharmony_ci .../importDefaultNamedType.ts | 5 + 1873af6ab5fSopenharmony_ci .../typeOnly/importSpecifiers1.ts | 46 ++ 1883af6ab5fSopenharmony_ci .../typeOnly/preserveValueImports.ts | 28 + 1893af6ab5fSopenharmony_ci .../typeOnly/preserveValueImports_errors.ts | 47 ++ 1903af6ab5fSopenharmony_ci ...erveValueImports_importsNotUsedAsValues.ts | 14 + 1913af6ab5fSopenharmony_ci .../preserveValueImports_mixedImports.ts | 13 + 1923af6ab5fSopenharmony_ci .../typeOnly/preserveValueImports_module.ts | 4 + 1933af6ab5fSopenharmony_ci .../importAssertion/importAssertion1.ts | 37 ++ 1943af6ab5fSopenharmony_ci .../importAssertion/importAssertion2.ts | 17 + 1953af6ab5fSopenharmony_ci .../importAssertion/importAssertion3.ts | 15 + 1963af6ab5fSopenharmony_ci .../importAssertion/importAssertion4.ts | 1 + 1973af6ab5fSopenharmony_ci .../importAssertion/importAssertion5.ts | 1 + 1983af6ab5fSopenharmony_ci .../mergedInterfacesWithMultipleBases3.ts | 6 +- 1993af6ab5fSopenharmony_ci .../interfaceExtendsObjectIntersection.ts | 12 + 2003af6ab5fSopenharmony_ci .../interfaceWithPropertyOfEveryType.ts | 3 +- 2013af6ab5fSopenharmony_ci ...duleAndAmbientWithSameNameAndCommonRoot.ts | 1 - 2023af6ab5fSopenharmony_ci ...onAmbientClassWithSameNameAndCommonRoot.ts | 1 + 2033af6ab5fSopenharmony_ci ...ionAndNonExportedFunctionThatShareAName.ts | 4 +- 2043af6ab5fSopenharmony_ci ...ortedAndNonExportedClassesOfTheSameName.ts | 4 + 2053af6ab5fSopenharmony_ci ...rgeEachWithExportedModulesOfTheSameName.ts | 2 + 2063af6ab5fSopenharmony_ci .../codeGeneration/exportCodeGen.ts | 2 + 2073af6ab5fSopenharmony_ci .../codeGeneration/nameCollision.ts | 1 + 2083af6ab5fSopenharmony_ci .../jsdoc/constructorTagOnClassConstructor.ts | 4 +- 2093af6ab5fSopenharmony_ci ...bclassWithExplicitNoArgumentConstructor.ts | 3 +- 2103af6ab5fSopenharmony_ci .../declarations/jsDeclarationsThisTypes.ts | 4 +- 2113af6ab5fSopenharmony_ci .../jsdoc/enumTagImported/enumTagImported.ts | 23 + 2123af6ab5fSopenharmony_ci tests/cases/conformance/jsdoc/extendsTag1.ts | 1 + 2133af6ab5fSopenharmony_ci .../jsdocAugments_qualifiedName.ts | 10 + 2143af6ab5fSopenharmony_ci .../jsdoc/jsdocAugments_withTypeParameter.ts | 1 + 2153af6ab5fSopenharmony_ci .../jsdocImplements_namespacedInterface.ts | 2 + 2163af6ab5fSopenharmony_ci .../jsdoc/jsdocTemplateTagDefault.ts | 71 +++ 2173af6ab5fSopenharmony_ci .../jsdoc/jsdocTemplateTagNameResolution.ts | 16 + 2183af6ab5fSopenharmony_ci .../jsdoc/jsdocTypeReferenceUseBeforeDef.ts | 1 + 2193af6ab5fSopenharmony_ci .../conformance/jsdoc/jsdocVariadicType.ts | 12 + 2203af6ab5fSopenharmony_ci tests/cases/conformance/jsdoc/seeTag3.ts | 7 + 2213af6ab5fSopenharmony_ci tests/cases/conformance/jsdoc/thisTag2.ts | 11 + 2223af6ab5fSopenharmony_ci .../conformance/jsx/jsxParsingError4.tsx | 18 + 2233af6ab5fSopenharmony_ci .../jsx/jsxUnclosedParserRecovery.ts | 140 +++++ 2243af6ab5fSopenharmony_ci .../jsx/tsxReactEmitSpreadAttribute.ts | 32 ++ 2253af6ab5fSopenharmony_ci .../declarationNotFoundPackageBundlesTypes.ts | 23 + 2263af6ab5fSopenharmony_ci .../scopedPackages/index.d.ts | 3 + 2273af6ab5fSopenharmony_ci .../scopedPackages/scopedPackages.ts | 12 + 2283af6ab5fSopenharmony_ci .../moduleResolution/scopedPackages/z.d.ts | 2 + 2293af6ab5fSopenharmony_ci .../scopedPackagesClassic/index.d.ts | 2 + 2303af6ab5fSopenharmony_ci .../scopedPackagesClassic.ts | 9 + 2313af6ab5fSopenharmony_ci .../untypedModuleImport_allowJs.ts | 12 + 2323af6ab5fSopenharmony_ci .../declarations.d.ts | 4 + 2333af6ab5fSopenharmony_ci .../untypedModuleImport_vsAmbient.ts | 12 + 2343af6ab5fSopenharmony_ci .../allowJs/nodeAllowJsPackageSelfName.ts | 24 + 2353af6ab5fSopenharmony_ci .../node/allowJs/nodeModulesAllowJs1.ts | 324 ++++++++++++ 2363af6ab5fSopenharmony_ci .../allowJs/nodeModulesAllowJsCjsFromJs.ts | 8 + 2373af6ab5fSopenharmony_ci ...ModulesAllowJsConditionalPackageExports.ts | 126 +++++ 2383af6ab5fSopenharmony_ci .../nodeModulesAllowJsDynamicImport.ts | 27 + 2393af6ab5fSopenharmony_ci .../nodeModulesAllowJsExportAssignment.ts | 32 ++ 2403af6ab5fSopenharmony_ci ...deModulesAllowJsGeneratedNameCollisions.ts | 29 ++ 2413af6ab5fSopenharmony_ci .../nodeModulesAllowJsImportAssignment.ts | 34 ++ 2423af6ab5fSopenharmony_ci ...eModulesAllowJsImportHelpersCollisions1.ts | 34 ++ 2433af6ab5fSopenharmony_ci ...eModulesAllowJsImportHelpersCollisions2.ts | 30 ++ 2443af6ab5fSopenharmony_ci ...eModulesAllowJsImportHelpersCollisions3.ts | 32 ++ 2453af6ab5fSopenharmony_ci .../allowJs/nodeModulesAllowJsImportMeta.ts | 23 + 2463af6ab5fSopenharmony_ci .../nodeModulesAllowJsPackageExports.ts | 92 ++++ 2473af6ab5fSopenharmony_ci .../nodeModulesAllowJsPackageImports.ts | 41 ++ 2483af6ab5fSopenharmony_ci ...nodeModulesAllowJsPackagePatternExports.ts | 69 +++ 2493af6ab5fSopenharmony_ci ...lesAllowJsPackagePatternExportsTrailers.ts | 69 +++ 2503af6ab5fSopenharmony_ci ...nodeModulesAllowJsSynchronousCallErrors.ts | 37 ++ 2513af6ab5fSopenharmony_ci .../nodeModulesAllowJsTopLevelAwait.ts | 25 + 2523af6ab5fSopenharmony_ci ...lesExportsSpecifierGenerationConditions.ts | 33 ++ 2533af6ab5fSopenharmony_ci tests/cases/conformance/node/nodeModules1.ts | 321 ++++++++++++ 2543af6ab5fSopenharmony_ci ...odeModulesCjsFormatFileAlwaysHasDefault.ts | 19 + 2553af6ab5fSopenharmony_ci .../nodeModulesConditionalPackageExports.ts | 124 +++++ 2563af6ab5fSopenharmony_ci ...tionEmitDynamicImportWithPackageExports.ts | 71 +++ 2573af6ab5fSopenharmony_ci ...odulesDeclarationEmitWithPackageExports.ts | 93 ++++ 2583af6ab5fSopenharmony_ci .../node/nodeModulesDynamicImport.ts | 24 + 2593af6ab5fSopenharmony_ci .../node/nodeModulesExportAssignments.ts | 20 + 2603af6ab5fSopenharmony_ci ...ModulesExportsBlocksSpecifierResolution.ts | 27 + 2613af6ab5fSopenharmony_ci ...lesExportsSpecifierGenerationConditions.ts | 34 ++ 2623af6ab5fSopenharmony_ci ...ulesExportsSpecifierGenerationDirectory.ts | 29 ++ 2633af6ab5fSopenharmony_ci ...odulesExportsSpecifierGenerationPattern.ts | 29 ++ 2643af6ab5fSopenharmony_ci .../node/nodeModulesForbidenSyntax.ts | 67 +++ 2653af6ab5fSopenharmony_ci .../nodeModulesGeneratedNameCollisions.ts | 26 + 2663af6ab5fSopenharmony_ci .../node/nodeModulesImportAssertions.ts | 13 + 2673af6ab5fSopenharmony_ci .../node/nodeModulesImportAssignments.ts | 31 ++ 2683af6ab5fSopenharmony_ci .../nodeModulesImportHelpersCollisions.ts | 31 ++ 2693af6ab5fSopenharmony_ci .../nodeModulesImportHelpersCollisions2.ts | 27 + 2703af6ab5fSopenharmony_ci .../nodeModulesImportHelpersCollisions3.ts | 25 + 2713af6ab5fSopenharmony_ci .../conformance/node/nodeModulesImportMeta.ts | 20 + 2723af6ab5fSopenharmony_ci .../nodeModulesImportResolutionIntoExport.ts | 24 + 2733af6ab5fSopenharmony_ci .../nodeModulesImportResolutionNoCycle.ts | 24 + 2743af6ab5fSopenharmony_ci .../node/nodeModulesPackageExports.ts | 90 ++++ 2753af6ab5fSopenharmony_ci .../node/nodeModulesPackageImports.ts | 38 ++ 2763af6ab5fSopenharmony_ci .../node/nodeModulesPackagePatternExports.ts | 67 +++ 2773af6ab5fSopenharmony_ci ...odeModulesPackagePatternExportsTrailers.ts | 67 +++ 2783af6ab5fSopenharmony_ci .../node/nodeModulesResolveJsonModule.ts | 29 ++ 2793af6ab5fSopenharmony_ci .../node/nodeModulesSynchronousCallErrors.ts | 34 ++ 2803af6ab5fSopenharmony_ci .../node/nodeModulesTopLevelAwait.ts | 22 + 2813af6ab5fSopenharmony_ci .../nodeModulesTypesVersionPackageExports.ts | 53 ++ 2823af6ab5fSopenharmony_ci .../conformance/node/nodePackageSelfName.ts | 21 + 2833af6ab5fSopenharmony_ci .../node/nodePackageSelfNameScoped.ts | 21 + 2843af6ab5fSopenharmony_ci .../cases/conformance/override/override10.ts | 3 +- 2853af6ab5fSopenharmony_ci .../cases/conformance/override/override12.ts | 1 + 2863af6ab5fSopenharmony_ci .../cases/conformance/override/override15.ts | 9 + 2873af6ab5fSopenharmony_ci .../cases/conformance/override/override16.ts | 1 + 2883af6ab5fSopenharmony_ci .../cases/conformance/override/override17.ts | 1 + 2893af6ab5fSopenharmony_ci .../cases/conformance/override/override18.ts | 1 + 2903af6ab5fSopenharmony_ci .../cases/conformance/override/override19.ts | 20 + 2913af6ab5fSopenharmony_ci .../cases/conformance/override/override20.ts | 34 ++ 2923af6ab5fSopenharmony_ci .../conformance/override/override_js1.ts | 4 +- 2933af6ab5fSopenharmony_ci .../conformance/override/override_js4.ts | 14 + 2943af6ab5fSopenharmony_ci .../parserClassDeclaration16.ts | 3 +- 2953af6ab5fSopenharmony_ci .../parserClassDeclaration17.ts | 1 + 2963af6ab5fSopenharmony_ci .../parserClassDeclaration19.ts | 3 +- 2973af6ab5fSopenharmony_ci .../parserClassDeclaration20.ts | 3 +- 2983af6ab5fSopenharmony_ci .../parserClassDeclaration23.ts | 3 +- 2993af6ab5fSopenharmony_ci .../parserClassDeclaration26.ts | 3 +- 3003af6ab5fSopenharmony_ci .../parserClassDeclarationIndexSignature1.ts | 3 +- 3013af6ab5fSopenharmony_ci .../parserConstructorDeclaration1.ts | 3 +- 3023af6ab5fSopenharmony_ci .../parserConstructorDeclaration5.ts | 3 +- 3033af6ab5fSopenharmony_ci .../parserAccessibilityAfterStatic11.ts | 1 + 3043af6ab5fSopenharmony_ci .../parserAccessibilityAfterStatic14.ts | 1 + 3053af6ab5fSopenharmony_ci .../parserAccessibilityAfterStatic2.ts | 1 + 3063af6ab5fSopenharmony_ci .../parserAccessibilityAfterStatic3.ts | 1 + 3073af6ab5fSopenharmony_ci .../parserAccessibilityAfterStatic4.ts | 1 + 3083af6ab5fSopenharmony_ci .../parserAccessibilityAfterStatic5.ts | 1 + 3093af6ab5fSopenharmony_ci .../Generics/parserGenericClass1.ts | 3 +- 3103af6ab5fSopenharmony_ci .../Generics/parserGenericClass2.ts | 3 +- 3113af6ab5fSopenharmony_ci .../Generics/parserGenericConstraint1.ts | 3 +- 3123af6ab5fSopenharmony_ci .../parserIndexMemberDeclaration1.ts | 3 +- 3133af6ab5fSopenharmony_ci .../parserIndexMemberDeclaration2.ts | 3 +- 3143af6ab5fSopenharmony_ci .../parserIndexMemberDeclaration3.ts | 3 +- 3153af6ab5fSopenharmony_ci .../parserIndexMemberDeclaration4.ts | 3 +- 3163af6ab5fSopenharmony_ci .../parserIndexMemberDeclaration6.ts | 3 +- 3173af6ab5fSopenharmony_ci .../parserMemberVariableDeclaration5.ts | 3 +- 3183af6ab5fSopenharmony_ci .../ecmascript5/Protected/Protected3.ts | 3 +- 3193af6ab5fSopenharmony_ci .../ecmascript5/Protected/Protected5.ts | 3 +- 3203af6ab5fSopenharmony_ci .../ecmascript5/Protected/Protected9.ts | 3 +- 3213af6ab5fSopenharmony_ci .../RegressionTests/parser509546.ts | 1 + 3223af6ab5fSopenharmony_ci .../RegressionTests/parser509546_1.ts | 1 + 3233af6ab5fSopenharmony_ci .../RegressionTests/parser509546_2.ts | 1 + 3243af6ab5fSopenharmony_ci .../parser/ecmascript5/parserUnicode3.ts | 3 +- 3253af6ab5fSopenharmony_ci .../Iterators/parserForOfStatement22.ts | 4 + 3263af6ab5fSopenharmony_ci .../Iterators/parserForOfStatement23.ts | 6 + 3273af6ab5fSopenharmony_ci .../Iterators/parserForOfStatement24.ts | 4 + 3283af6ab5fSopenharmony_ci .../inferringClassMembersFromAssignments3.ts | 1 + 3293af6ab5fSopenharmony_ci .../conformance/salsa/plainJSBinderErrors.ts | 44 ++ 3303af6ab5fSopenharmony_ci .../conformance/salsa/plainJSRedeclare.ts | 6 + 3313af6ab5fSopenharmony_ci .../conformance/salsa/plainJSRedeclare2.ts | 7 + 3323af6ab5fSopenharmony_ci .../conformance/salsa/plainJSRedeclare3.ts | 7 + 3333af6ab5fSopenharmony_ci .../salsa/plainJSReservedStrict.ts | 7 + 3343af6ab5fSopenharmony_ci .../conformance/salsa/spellingUncheckedJS.ts | 51 ++ 3353af6ab5fSopenharmony_ci .../salsa/typeFromJSInitializer2.ts | 18 + 3363af6ab5fSopenharmony_ci .../salsa/typeFromJSInitializer3.ts | 18 + 3373af6ab5fSopenharmony_ci .../salsa/typeFromJSInitializer4.ts | 29 ++ 3383af6ab5fSopenharmony_ci .../salsa/typeFromPropertyAssignment23.ts | 3 + 3393af6ab5fSopenharmony_ci .../for-inStatementsAsyncIdentifier.ts | 4 + 3403af6ab5fSopenharmony_ci .../returnStatements/returnStatements.ts | 1 + 3413af6ab5fSopenharmony_ci .../throwInEnclosingStatements.ts | 1 + 3423af6ab5fSopenharmony_ci .../types/any/anyAsGenericFunctionCall.ts | 4 +- 3433af6ab5fSopenharmony_ci .../types/any/assignAnyToEveryType.ts | 4 +- 3443af6ab5fSopenharmony_ci .../types/any/assignEveryTypeToAny.ts | 4 +- 3453af6ab5fSopenharmony_ci .../conformance/types/conditional/variance.ts | 2 + 3463af6ab5fSopenharmony_ci ...tatedFunctionInferenceWithTypeParameter.ts | 3 + 3473af6ab5fSopenharmony_ci .../types/import/importTypeAmbient.ts | 5 +- 3483af6ab5fSopenharmony_ci .../types/import/importTypeGenericTypes.ts | 5 +- 3493af6ab5fSopenharmony_ci .../types/import/importTypeLocal.ts | 5 + 3503af6ab5fSopenharmony_ci .../intersectionOfUnionNarrowing.ts | 16 + 3513af6ab5fSopenharmony_ci .../types/keyof/keyofAndIndexedAccess.ts | 20 + 3523af6ab5fSopenharmony_ci .../types/literal/literalTypes2.ts | 3 + 3533af6ab5fSopenharmony_ci .../types/localTypes/localTypes2.ts | 3 + 3543af6ab5fSopenharmony_ci .../types/localTypes/localTypes3.ts | 3 + 3553af6ab5fSopenharmony_ci .../mapped/mappedTypeAsClauseRelationships.ts | 27 + 3563af6ab5fSopenharmony_ci .../types/mapped/mappedTypeProperties.ts | 42 ++ 3573af6ab5fSopenharmony_ci .../conformance/types/mapped/mappedTypes3.ts | 4 +- 3583af6ab5fSopenharmony_ci .../types/mapped/mappedTypesAndObjects.ts | 2 + 3593af6ab5fSopenharmony_ci .../members/classWithProtectedProperty.ts | 4 +- 3603af6ab5fSopenharmony_ci .../types/members/indexSignatures1.ts | 325 ++++++++++++ 3613af6ab5fSopenharmony_ci .../objectTypeHidingMembersOfObject.ts | 4 +- 3623af6ab5fSopenharmony_ci .../types/members/objectTypePropertyAccess.ts | 2 + 3633af6ab5fSopenharmony_ci .../members/objectTypeWithNumericProperty.ts | 4 +- 3643af6ab5fSopenharmony_ci ...hStringNamedPropertyOfIllegalCharacters.ts | 2 + 3653af6ab5fSopenharmony_ci .../typesWithSpecializedCallSignatures.ts | 5 +- 3663af6ab5fSopenharmony_ci ...typesWithSpecializedConstructSignatures.ts | 5 +- 3673af6ab5fSopenharmony_ci .../namedTypes/classWithOptionalParameter.ts | 5 +- 3683af6ab5fSopenharmony_ci .../types/namedTypes/optionalMethods.ts | 3 + 3693af6ab5fSopenharmony_ci .../conformance/types/never/neverType.ts | 2 + 3703af6ab5fSopenharmony_ci ...ureWithoutReturnTypeAnnotationInference.ts | 6 +- 3713af6ab5fSopenharmony_ci .../callSignaturesWithDuplicateParameters.ts | 4 +- 3723af6ab5fSopenharmony_ci .../callSignaturesWithOptionalParameters.ts | 2 + 3733af6ab5fSopenharmony_ci .../callSignaturesWithOptionalParameters2.ts | 4 +- 3743af6ab5fSopenharmony_ci .../parametersWithNoAnnotationAreAny.ts | 4 +- 3753af6ab5fSopenharmony_ci ...reIsNotSubtypeOfNonSpecializedSignature.ts | 3 + 3763af6ab5fSopenharmony_ci ...atureIsSubtypeOfNonSpecializedSignature.ts | 3 + 3773af6ab5fSopenharmony_ci ...gLiteralTypesInImplementationSignatures.ts | 2 + 3783af6ab5fSopenharmony_ci .../typeParameterAsTypeArgument.ts | 4 +- 3793af6ab5fSopenharmony_ci ...WithOverloadsThatDifferOnlyByReturnType.ts | 5 +- 3803af6ab5fSopenharmony_ci .../indexSignatures/numericIndexingResults.ts | 4 +- 3813af6ab5fSopenharmony_ci .../indexSignatures/stringIndexingResults.ts | 2 + 3823af6ab5fSopenharmony_ci .../propertyNameWithoutTypeAnnotation.ts | 4 +- 3833af6ab5fSopenharmony_ci .../propertyNamesOfReservedWords.ts | 4 +- 3843af6ab5fSopenharmony_ci .../stringNamedPropertyAccess.ts | 4 +- 3853af6ab5fSopenharmony_ci .../number/extendNumberInterface.ts | 2 +- 3863af6ab5fSopenharmony_ci .../undefined/invalidUndefinedValues.ts | 4 +- 3873af6ab5fSopenharmony_ci .../undefined/validUndefinedAssignments.ts | 4 +- 3883af6ab5fSopenharmony_ci .../types/rest/objectRestParameter.ts | 1 + 3893af6ab5fSopenharmony_ci .../typeLiterals/arrayOfFunctionTypes3.ts | 4 +- 3903af6ab5fSopenharmony_ci .../functionLiteralForOverloads2.ts | 5 +- 3913af6ab5fSopenharmony_ci .../typeQueries/typeQueryOnClass.ts | 5 +- 3923af6ab5fSopenharmony_ci .../typeQueries/typeQueryWithReservedWords.ts | 1 + 3933af6ab5fSopenharmony_ci .../typeQueries/typeofClass2.ts | 5 +- 3943af6ab5fSopenharmony_ci .../typeQueries/typeofModuleWithoutExports.ts | 3 +- 3953af6ab5fSopenharmony_ci .../specifyingTypes/typeQueries/typeofThis.ts | 146 ++++++ 3963af6ab5fSopenharmony_ci .../typeQueries/typeofThisWithImplicitThis.ts | 5 + 3973af6ab5fSopenharmony_ci .../types/spread/spreadDuplicate.ts | 21 + 3983af6ab5fSopenharmony_ci .../types/spread/spreadDuplicateExact.ts | 22 + 3993af6ab5fSopenharmony_ci .../conformance/types/spread/spreadUnion4.ts | 4 + 4003af6ab5fSopenharmony_ci .../types/thisType/fluentClasses.ts | 2 + 4013af6ab5fSopenharmony_ci .../types/thisType/thisTypeAndConstraints.ts | 3 + 4023af6ab5fSopenharmony_ci .../types/thisType/thisTypeInClasses.ts | 6 + 4033af6ab5fSopenharmony_ci .../types/thisType/thisTypeInFunctions3.ts | 3 + 4043af6ab5fSopenharmony_ci .../thisType/thisTypeInTaggedTemplateCall.ts | 10 + 4053af6ab5fSopenharmony_ci .../types/tuple/readonlyArraysAndTuples2.ts | 2 + 4063af6ab5fSopenharmony_ci .../circularTypeAliasForUnionWithClass.ts | 4 + 4073af6ab5fSopenharmony_ci .../classDoesNotDependOnBaseTypes.ts | 4 +- 4083af6ab5fSopenharmony_ci .../types/typeAliases/typeAliases.ts | 4 +- 4093af6ab5fSopenharmony_ci ...allGenericFunctionWithZeroTypeArguments.ts | 5 +- 4103af6ab5fSopenharmony_ci .../functionConstraintSatisfaction.ts | 5 +- 4113af6ab5fSopenharmony_ci .../functionConstraintSatisfaction3.ts | 5 +- 4123af6ab5fSopenharmony_ci .../innerTypeParameterShadowingOuterOne2.ts | 4 +- 4133af6ab5fSopenharmony_ci ...rtyAccessOnTypeParameterWithConstraints.ts | 3 +- 4143af6ab5fSopenharmony_ci ...tyAccessOnTypeParameterWithConstraints2.ts | 7 +- 4153af6ab5fSopenharmony_ci ...tyAccessOnTypeParameterWithConstraints3.ts | 4 +- 4163af6ab5fSopenharmony_ci ...AccessOnTypeParameterWithoutConstraints.ts | 4 +- 4173af6ab5fSopenharmony_ci .../typeParameterUsedAsConstraint.ts | 7 + 4183af6ab5fSopenharmony_ci .../anyAssignabilityInInheritance.ts | 6 +- 4193af6ab5fSopenharmony_ci .../anyAssignableToEveryType.ts | 1 + 4203af6ab5fSopenharmony_ci .../anyAssignableToEveryType2.ts | 3 + 4213af6ab5fSopenharmony_ci .../assignmentCompatWithObjectMembers.ts | 5 +- 4223af6ab5fSopenharmony_ci .../assignmentCompatWithObjectMembers2.ts | 2 + 4233af6ab5fSopenharmony_ci .../assignmentCompatWithObjectMembers3.ts | 2 + 4243af6ab5fSopenharmony_ci ...mentCompatWithObjectMembersNumericNames.ts | 2 + 4253af6ab5fSopenharmony_ci ...allSignatureAssignabilityInInheritance2.ts | 6 +- 4263af6ab5fSopenharmony_ci ...allSignatureAssignabilityInInheritance4.ts | 6 +- 4273af6ab5fSopenharmony_ci ...allSignatureAssignabilityInInheritance5.ts | 5 +- 4283af6ab5fSopenharmony_ci ...uctSignatureAssignabilityInInheritance2.ts | 6 +- 4293af6ab5fSopenharmony_ci ...uctSignatureAssignabilityInInheritance4.ts | 5 +- 4303af6ab5fSopenharmony_ci ...uctSignatureAssignabilityInInheritance5.ts | 5 +- 4313af6ab5fSopenharmony_ci .../everyTypeAssignableToAny.ts | 2 + 4323af6ab5fSopenharmony_ci .../nullAssignableToEveryType.ts | 2 +- 4333af6ab5fSopenharmony_ci .../undefinedAssignableToEveryType.ts | 1 + 4343af6ab5fSopenharmony_ci .../bestCommonTypeOfConditionalExpressions.ts | 5 +- 4353af6ab5fSopenharmony_ci ...bestCommonTypeOfConditionalExpressions2.ts | 4 +- 4363af6ab5fSopenharmony_ci .../heterogeneousArrayLiterals.ts | 2 + 4373af6ab5fSopenharmony_ci .../narrowingConstrainedTypeVariable.ts | 3 + 4383af6ab5fSopenharmony_ci .../arrayLiteralsWithRecursiveGenerics.ts | 6 +- 4393af6ab5fSopenharmony_ci .../recursiveTypeInGenericConstraint.ts | 5 +- 4403af6ab5fSopenharmony_ci .../recursiveTypesUsedAsFunctionParameters.ts | 5 +- 4413af6ab5fSopenharmony_ci .../nullIsSubtypeOfEverythingButUndefined.ts | 4 + 4423af6ab5fSopenharmony_ci .../stringLiteralTypeIsSubtypeOfString.ts | 4 +- 4433af6ab5fSopenharmony_ci .../subtypesAndSuperTypes/subtypesOfAny.ts | 5 +- 4443af6ab5fSopenharmony_ci ...subtypesOfTypeParameterWithConstraints2.ts | 5 +- 4453af6ab5fSopenharmony_ci .../subtypingWithCallSignatures2.ts | 6 + 4463af6ab5fSopenharmony_ci .../subtypingWithCallSignatures3.ts | 4 + 4473af6ab5fSopenharmony_ci .../subtypingWithCallSignatures4.ts | 6 +- 4483af6ab5fSopenharmony_ci .../subtypingWithConstructSignatures2.ts | 5 + 4493af6ab5fSopenharmony_ci .../subtypingWithConstructSignatures3.ts | 4 + 4503af6ab5fSopenharmony_ci .../subtypingWithConstructSignatures4.ts | 6 +- 4513af6ab5fSopenharmony_ci .../subtypingWithConstructSignatures5.ts | 6 +- 4523af6ab5fSopenharmony_ci .../subtypingWithObjectMembers4.ts | 6 +- 4533af6ab5fSopenharmony_ci .../undefinedIsSubtypeOfEverything.ts | 25 + 4543af6ab5fSopenharmony_ci .../objectTypesIdentity.ts | 6 +- 4553af6ab5fSopenharmony_ci .../objectTypesIdentity2.ts | 5 +- 4563af6ab5fSopenharmony_ci .../objectTypesIdentityWithCallSignatures.ts | 5 +- 4573af6ab5fSopenharmony_ci .../objectTypesIdentityWithCallSignatures2.ts | 5 +- 4583af6ab5fSopenharmony_ci ...yWithCallSignaturesDifferingParamCounts.ts | 5 +- 4593af6ab5fSopenharmony_ci ...IdentityWithCallSignaturesWithOverloads.ts | 6 +- 4603af6ab5fSopenharmony_ci ...ectTypesIdentityWithConstructSignatures.ts | 6 +- 4613af6ab5fSopenharmony_ci ...ctTypesIdentityWithConstructSignatures2.ts | 4 +- 4623af6ab5fSopenharmony_ci ...ConstructSignaturesDifferingParamCounts.ts | 4 +- 4633af6ab5fSopenharmony_ci ...tTypesIdentityWithGenericCallSignatures.ts | 6 +- 4643af6ab5fSopenharmony_ci ...TypesIdentityWithGenericCallSignatures2.ts | 6 +- 4653af6ab5fSopenharmony_ci ...ricCallSignaturesDifferingByConstraints.ts | 6 +- 4663af6ab5fSopenharmony_ci ...icCallSignaturesDifferingByConstraints2.ts | 6 +- 4673af6ab5fSopenharmony_ci ...icCallSignaturesDifferingByConstraints3.ts | 9 +- 4683af6ab5fSopenharmony_ci ...ericCallSignaturesDifferingByReturnType.ts | 5 +- 4693af6ab5fSopenharmony_ci ...ricCallSignaturesDifferingByReturnType2.ts | 6 +- 4703af6ab5fSopenharmony_ci ...lSignaturesDifferingTypeParameterCounts.ts | 6 +- 4713af6ab5fSopenharmony_ci ...llSignaturesDifferingTypeParameterNames.ts | 5 +- 4723af6ab5fSopenharmony_ci ...WithGenericCallSignaturesOptionalParams.ts | 5 +- 4733af6ab5fSopenharmony_ci ...ithGenericCallSignaturesOptionalParams2.ts | 5 +- 4743af6ab5fSopenharmony_ci ...ithGenericCallSignaturesOptionalParams3.ts | 6 +- 4753af6ab5fSopenharmony_ci ...nstructSignaturesDifferingByConstraints.ts | 2 + 4763af6ab5fSopenharmony_ci ...structSignaturesDifferingByConstraints2.ts | 7 +- 4773af6ab5fSopenharmony_ci ...structSignaturesDifferingByConstraints3.ts | 7 +- 4783af6ab5fSopenharmony_ci ...onstructSignaturesDifferingByReturnType.ts | 4 +- 4793af6ab5fSopenharmony_ci ...nstructSignaturesDifferingByReturnType2.ts | 6 +- 4803af6ab5fSopenharmony_ci ...tSignaturesDifferingTypeParameterCounts.ts | 4 +- 4813af6ab5fSopenharmony_ci ...ctSignaturesDifferingTypeParameterNames.ts | 6 +- 4823af6ab5fSopenharmony_ci ...enericConstructSignaturesOptionalParams.ts | 5 +- 4833af6ab5fSopenharmony_ci ...nericConstructSignaturesOptionalParams2.ts | 5 +- 4843af6ab5fSopenharmony_ci ...nericConstructSignaturesOptionalParams3.ts | 4 +- 4853af6ab5fSopenharmony_ci ...objectTypesIdentityWithNumericIndexers1.ts | 3 + 4863af6ab5fSopenharmony_ci ...objectTypesIdentityWithNumericIndexers2.ts | 5 + 4873af6ab5fSopenharmony_ci ...objectTypesIdentityWithNumericIndexers3.ts | 3 + 4883af6ab5fSopenharmony_ci .../objectTypesIdentityWithOptionality.ts | 6 +- 4893af6ab5fSopenharmony_ci .../objectTypesIdentityWithPrivates.ts | 4 +- 4903af6ab5fSopenharmony_ci .../objectTypesIdentityWithPrivates2.ts | 1 + 4913af6ab5fSopenharmony_ci .../objectTypesIdentityWithPublics.ts | 5 +- 4923af6ab5fSopenharmony_ci .../objectTypesIdentityWithStringIndexers.ts | 3 + 4933af6ab5fSopenharmony_ci .../objectTypesIdentityWithStringIndexers2.ts | 5 + 4943af6ab5fSopenharmony_ci .../typeParametersAreIdenticalToThemselves.ts | 4 +- 4953af6ab5fSopenharmony_ci ...allWithConstraintsTypeArgumentInference.ts | 3 + 4963af6ab5fSopenharmony_ci .../genericCallWithFunctionTypedArguments4.ts | 4 +- 4973af6ab5fSopenharmony_ci .../genericCallWithObjectTypeArgs2.ts | 4 +- 4983af6ab5fSopenharmony_ci ...ricCallWithObjectTypeArgsAndConstraints.ts | 10 +- 4993af6ab5fSopenharmony_ci ...icCallWithObjectTypeArgsAndConstraints2.ts | 1 + 5003af6ab5fSopenharmony_ci ...icClassWithObjectTypeArgsAndConstraints.ts | 7 +- 5013af6ab5fSopenharmony_ci .../keyofInferenceLowerPriorityThanReturn.ts | 4 + 5023af6ab5fSopenharmony_ci .../types/union/discriminatedUnionTypes3.ts | 19 + 5033af6ab5fSopenharmony_ci 497 files changed, 8097 insertions(+), 197 deletions(-) 5043af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/ambient/ambientDeclarationsPatterns/ambientDeclarationsPatterns.ts 5053af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/ambient/ambientDeclarationsPatterns/declarations.d.ts 5063af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/ambient/ambientShorthand_merging/ambientShorthand_merging.ts 5073af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/ambient/ambientShorthand_merging/declarations1.d.ts 5083af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/ambient/ambientShorthand_merging/declarations2.d.ts 5093af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/ambient/ambientShorthand_reExport/ambientShorthand_reExport.ts 5103af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/ambient/ambientShorthand_reExport/declarations.d.ts 5113af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/ambient/ambientShorthand_reExport/jquery.d.ts 5123af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/ambient/ambientShorthand_reExport/reExportAll.ts 5133af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/ambient/ambientShorthand_reExport/reExportX.ts 5143af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/async/es6/functionDeclarations/asyncOrYieldAsBindingIdentifier1.ts 5153af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock1.ts 5163af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock10.ts 5173af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock11.ts 5183af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock12.ts 5193af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock13.ts 5203af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock14.ts 5213af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock15.ts 5223af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock16.ts 5233af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock17.ts 5243af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock18.ts 5253af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock19.ts 5263af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock2.ts 5273af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock20.ts 5283af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock21.ts 5293af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock22.ts 5303af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock23.ts 5313af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock24.ts 5323af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock25.ts 5333af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock26.ts 5343af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock27.ts 5353af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock3.ts 5363af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock4.ts 5373af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock5.ts 5383af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock6.ts 5393af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock7.ts 5403af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock8.ts 5413af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlock9.ts 5423af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlockUseBeforeDef1.ts 5433af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/classStaticBlock/classStaticBlockUseBeforeDef2.ts 5443af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/superInStaticMembers1.ts 5453af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers1.ts 5463af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers2.ts 5473af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers3.ts 5483af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers4.ts 5493af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers10.ts 5503af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers11.ts 5513af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers12.ts 5523af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers13.ts 5533af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers3.ts 5543af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers4.ts 5553af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers5.ts 5563af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers6.ts 5573af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers7.ts 5583af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers8.ts 5593af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers9.ts 5603af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/privateNames/privateNameHashCharName.ts 5613af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/privateNames/privateNameInInExpression.ts 5623af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/privateNames/privateNameInInExpressionTransform.ts 5633af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/privateNames/privateNameInInExpressionUnused.ts 5643af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/members/privateNames/privateNamesIncompatibleModifiersJs.ts 5653af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/classes/propertyMemberDeclarations/abstractPropertyInitializer.ts 5663af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/controlFlow/assertionTypePredicates2.ts 5673af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/controlFlow/controlFlowAliasing.ts 5683af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/controlFlow/controlFlowAliasingCatchVariables.ts 5693af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/controlFlow/controlFlowForInStatement2.ts 5703af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/controlFlow/controlFlowInOperator.ts 5713af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/controlFlow/controlFlowTypeofObject.ts 5723af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/controlFlow/dependentDestructuredVariables.ts 5733af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/fs.d.ts 5743af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/main.ts 5753af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/package.json 5763af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/typeReferenceRelatedFiles.ts 5773af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/decorators/class/constructor/parameter/decoratorOnClassConstructorParameter5.ts 5783af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/decorators/class/decoratedBlockScopedClass1.ts 5793af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/decorators/class/decoratedBlockScopedClass2.ts 5803af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/decorators/class/decoratedBlockScopedClass3.ts 5813af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/decorators/class/method/decoratorOnClassMethod14.ts 5823af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/decorators/class/method/decoratorOnClassMethod15.ts 5833af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/decorators/class/method/decoratorOnClassMethod16.ts 5843af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/decorators/class/method/decoratorOnClassMethod17.ts 5853af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/decorators/class/method/decoratorOnClassMethod18.ts 5863af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/decorators/decoratorMetadataWithTypeOnlyImport2.ts 5873af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/es2018/es2018IntlAPIs.ts 5883af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/es2020/es2020IntlAPIs.ts 5893af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/es6/spread/arraySpreadImportHelpers.ts 5903af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/es6/templates/templateStringWithCommentsInArrowFunction.ts 5913af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithIntersectionType.ts 5923af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/expressions/thisKeyword/typeOfThisGeneral.ts 5933af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/moduleResolutionWithoutExtension1.ts 5943af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/moduleResolutionWithoutExtension2.ts 5953af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/moduleResolutionWithoutExtension3.ts 5963af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/moduleResolutionWithoutExtension4.ts 5973af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/moduleResolutionWithoutExtension5.ts 5983af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/moduleResolutionWithoutExtension6.ts 5993af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/moduleResolutionWithoutExtension7.ts 6003af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/moduleResolutionWithoutExtension8.ts 6013af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/typeOnly/exportSpecifiers.ts 6023af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType/a.ts 6033af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType/importDefaultNamedType.ts 6043af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/typeOnly/importSpecifiers1.ts 6053af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/typeOnly/preserveValueImports.ts 6063af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/typeOnly/preserveValueImports_errors.ts 6073af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/typeOnly/preserveValueImports_importsNotUsedAsValues.ts 6083af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/typeOnly/preserveValueImports_mixedImports.ts 6093af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/externalModules/typeOnly/preserveValueImports_module.ts 6103af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/importAssertion/importAssertion1.ts 6113af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/importAssertion/importAssertion2.ts 6123af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/importAssertion/importAssertion3.ts 6133af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/importAssertion/importAssertion4.ts 6143af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/importAssertion/importAssertion5.ts 6153af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/jsdoc/enumTagImported/enumTagImported.ts 6163af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/jsdoc/jsdocAugments_qualifiedName/jsdocAugments_qualifiedName.ts 6173af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/jsdoc/jsdocTemplateTagDefault.ts 6183af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/jsdoc/jsdocTemplateTagNameResolution.ts 6193af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/jsdoc/jsdocVariadicType.ts 6203af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/jsdoc/seeTag3.ts 6213af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/jsdoc/thisTag2.ts 6223af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/jsx/jsxParsingError4.tsx 6233af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/jsx/jsxUnclosedParserRecovery.ts 6243af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/jsx/tsxReactEmitSpreadAttribute.ts 6253af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/moduleResolution/declarationNotFoundPackageBundlesTypes.ts 6263af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/moduleResolution/scopedPackages/index.d.ts 6273af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/moduleResolution/scopedPackages/scopedPackages.ts 6283af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/moduleResolution/scopedPackages/z.d.ts 6293af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/moduleResolution/scopedPackagesClassic/index.d.ts 6303af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/moduleResolution/scopedPackagesClassic/scopedPackagesClassic.ts 6313af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/moduleResolution/untypedModuleImport_allowJs/untypedModuleImport_allowJs.ts 6323af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/moduleResolution/untypedModuleImport_vsAmbient/declarations.d.ts 6333af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/moduleResolution/untypedModuleImport_vsAmbient/untypedModuleImport_vsAmbient.ts 6343af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeAllowJsPackageSelfName.ts 6353af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJs1.ts 6363af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsCjsFromJs.ts 6373af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsConditionalPackageExports.ts 6383af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsDynamicImport.ts 6393af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsExportAssignment.ts 6403af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsGeneratedNameCollisions.ts 6413af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportAssignment.ts 6423af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions1.ts 6433af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions2.ts 6443af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions3.ts 6453af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportMeta.ts 6463af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackageExports.ts 6473af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackageImports.ts 6483af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackagePatternExports.ts 6493af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackagePatternExportsTrailers.ts 6503af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsSynchronousCallErrors.ts 6513af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/allowJs/nodeModulesAllowJsTopLevelAwait.ts 6523af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/legacyNodeModulesExportsSpecifierGenerationConditions.ts 6533af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModules1.ts 6543af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesCjsFormatFileAlwaysHasDefault.ts 6553af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesConditionalPackageExports.ts 6563af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesDeclarationEmitDynamicImportWithPackageExports.ts 6573af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesDeclarationEmitWithPackageExports.ts 6583af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesDynamicImport.ts 6593af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesExportAssignments.ts 6603af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesExportsBlocksSpecifierResolution.ts 6613af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationConditions.ts 6623af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationDirectory.ts 6633af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationPattern.ts 6643af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesForbidenSyntax.ts 6653af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesGeneratedNameCollisions.ts 6663af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesImportAssertions.ts 6673af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesImportAssignments.ts 6683af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesImportHelpersCollisions.ts 6693af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesImportHelpersCollisions2.ts 6703af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesImportHelpersCollisions3.ts 6713af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesImportMeta.ts 6723af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesImportResolutionIntoExport.ts 6733af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesImportResolutionNoCycle.ts 6743af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesPackageExports.ts 6753af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesPackageImports.ts 6763af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesPackagePatternExports.ts 6773af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesPackagePatternExportsTrailers.ts 6783af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesResolveJsonModule.ts 6793af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesSynchronousCallErrors.ts 6803af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesTopLevelAwait.ts 6813af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodeModulesTypesVersionPackageExports.ts 6823af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodePackageSelfName.ts 6833af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/node/nodePackageSelfNameScoped.ts 6843af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/override/override15.ts 6853af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/override/override19.ts 6863af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/override/override20.ts 6873af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/override/override_js4.ts 6883af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement22.ts 6893af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement23.ts 6903af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement24.ts 6913af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/salsa/plainJSBinderErrors.ts 6923af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/salsa/plainJSRedeclare.ts 6933af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/salsa/plainJSRedeclare2.ts 6943af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/salsa/plainJSRedeclare3.ts 6953af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/salsa/plainJSReservedStrict.ts 6963af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/salsa/spellingUncheckedJS.ts 6973af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/salsa/typeFromJSInitializer2.ts 6983af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/salsa/typeFromJSInitializer3.ts 6993af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/salsa/typeFromJSInitializer4.ts 7003af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/statements/for-inStatements/for-inStatementsAsyncIdentifier.ts 7013af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/types/intersection/intersectionOfUnionNarrowing.ts 7023af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/types/mapped/mappedTypeAsClauseRelationships.ts 7033af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/types/mapped/mappedTypeProperties.ts 7043af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/types/members/indexSignatures1.ts 7053af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/types/specifyingTypes/typeQueries/typeofThis.ts 7063af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/types/specifyingTypes/typeQueries/typeofThisWithImplicitThis.ts 7073af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/types/spread/spreadDuplicate.ts 7083af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/types/spread/spreadDuplicateExact.ts 7093af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/types/spread/spreadUnion4.ts 7103af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/types/thisType/thisTypeInTaggedTemplateCall.ts 7113af6ab5fSopenharmony_ci create mode 100644 tests/cases/conformance/types/union/discriminatedUnionTypes3.ts 7123af6ab5fSopenharmony_ci 7133af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientDeclarations.ts b/tests/cases/conformance/ambient/ambientDeclarations.ts 7143af6ab5fSopenharmony_ciindex 379f5a5440..156ca565af 100644 7153af6ab5fSopenharmony_ci--- a/tests/cases/conformance/ambient/ambientDeclarations.ts 7163af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientDeclarations.ts 7173af6ab5fSopenharmony_ci@@ -73,3 +73,4 @@ declare module 'external1' { 7183af6ab5fSopenharmony_ci var q; 7193af6ab5fSopenharmony_ci } 7203af6ab5fSopenharmony_ci 7213af6ab5fSopenharmony_ci+let qq2 = new cls(); 7223af6ab5fSopenharmony_ci\ No newline at end of file 7233af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientDeclarationsPatterns/ambientDeclarationsPatterns.ts b/tests/cases/conformance/ambient/ambientDeclarationsPatterns/ambientDeclarationsPatterns.ts 7243af6ab5fSopenharmony_cinew file mode 100644 7253af6ab5fSopenharmony_ciindex 0000000000..8b2be7e0b2 7263af6ab5fSopenharmony_ci--- /dev/null 7273af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientDeclarationsPatterns/ambientDeclarationsPatterns.ts 7283af6ab5fSopenharmony_ci@@ -0,0 +1,11 @@ 7293af6ab5fSopenharmony_ci+// @Filename: user.ts 7303af6ab5fSopenharmony_ci+///<reference path="declarations.d.ts" /> 7313af6ab5fSopenharmony_ci+import {foo, baz} from "foobarbaz"; 7323af6ab5fSopenharmony_ci+foo(baz); 7333af6ab5fSopenharmony_ci+ 7343af6ab5fSopenharmony_ci+import {foos} from "foosball"; 7353af6ab5fSopenharmony_ci+foo(foos); 7363af6ab5fSopenharmony_ci+ 7373af6ab5fSopenharmony_ci+// Works with relative file name 7383af6ab5fSopenharmony_ci+import fileText from "./file!text"; 7393af6ab5fSopenharmony_ci+foo(fileText); 7403af6ab5fSopenharmony_ci\ No newline at end of file 7413af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientDeclarationsPatterns/declarations.d.ts b/tests/cases/conformance/ambient/ambientDeclarationsPatterns/declarations.d.ts 7423af6ab5fSopenharmony_cinew file mode 100644 7433af6ab5fSopenharmony_ciindex 0000000000..725593c54e 7443af6ab5fSopenharmony_ci--- /dev/null 7453af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientDeclarationsPatterns/declarations.d.ts 7463af6ab5fSopenharmony_ci@@ -0,0 +1,18 @@ 7473af6ab5fSopenharmony_ci+// @Filename: declarations.d.ts 7483af6ab5fSopenharmony_ci+declare module "foo*baz" { 7493af6ab5fSopenharmony_ci+ export function foo(s: string): void; 7503af6ab5fSopenharmony_ci+} 7513af6ab5fSopenharmony_ci+// Augmentations still work 7523af6ab5fSopenharmony_ci+declare module "foo*baz" { 7533af6ab5fSopenharmony_ci+ export const baz: string; 7543af6ab5fSopenharmony_ci+} 7553af6ab5fSopenharmony_ci+ 7563af6ab5fSopenharmony_ci+// Longest prefix wins 7573af6ab5fSopenharmony_ci+declare module "foos*" { 7583af6ab5fSopenharmony_ci+ export const foos: string; 7593af6ab5fSopenharmony_ci+} 7603af6ab5fSopenharmony_ci+ 7613af6ab5fSopenharmony_ci+declare module "*!text" { 7623af6ab5fSopenharmony_ci+ const x: string; 7633af6ab5fSopenharmony_ci+ export default x; 7643af6ab5fSopenharmony_ci+} 7653af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientInsideNonAmbient.ts b/tests/cases/conformance/ambient/ambientInsideNonAmbient.ts 7663af6ab5fSopenharmony_ciindex e2f24113c9..d07ac13995 100644 7673af6ab5fSopenharmony_ci--- a/tests/cases/conformance/ambient/ambientInsideNonAmbient.ts 7683af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientInsideNonAmbient.ts 7693af6ab5fSopenharmony_ci@@ -4,6 +4,7 @@ module M { 7703af6ab5fSopenharmony_ci export declare class C { } 7713af6ab5fSopenharmony_ci export declare enum E { } 7723af6ab5fSopenharmony_ci export declare module M { } 7733af6ab5fSopenharmony_ci+ let qq1 = new C(); 7743af6ab5fSopenharmony_ci } 7753af6ab5fSopenharmony_ci 7763af6ab5fSopenharmony_ci module M2 { 7773af6ab5fSopenharmony_ci@@ -12,4 +13,5 @@ module M2 { 7783af6ab5fSopenharmony_ci declare class C { } 7793af6ab5fSopenharmony_ci declare enum E { } 7803af6ab5fSopenharmony_ci declare module M { } 7813af6ab5fSopenharmony_ci+ let qq1 = new C(); 7823af6ab5fSopenharmony_ci } 7833af6ab5fSopenharmony_ci\ No newline at end of file 7843af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientInsideNonAmbientExternalModule.ts b/tests/cases/conformance/ambient/ambientInsideNonAmbientExternalModule.ts 7853af6ab5fSopenharmony_ciindex dbdc315c74..3e1e4bfa35 100644 7863af6ab5fSopenharmony_ci--- a/tests/cases/conformance/ambient/ambientInsideNonAmbientExternalModule.ts 7873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientInsideNonAmbientExternalModule.ts 7883af6ab5fSopenharmony_ci@@ -3,4 +3,6 @@ export declare var x; 7893af6ab5fSopenharmony_ci export declare function f(); 7903af6ab5fSopenharmony_ci export declare class C { } 7913af6ab5fSopenharmony_ci export declare enum E { } 7923af6ab5fSopenharmony_ci-export declare module M { } 7933af6ab5fSopenharmony_ci\ No newline at end of file 7943af6ab5fSopenharmony_ci+export declare module M { } 7953af6ab5fSopenharmony_ci+ 7963af6ab5fSopenharmony_ci+let qq1 = new C(); 7973af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientShorthand_merging/ambientShorthand_merging.ts b/tests/cases/conformance/ambient/ambientShorthand_merging/ambientShorthand_merging.ts 7983af6ab5fSopenharmony_cinew file mode 100644 7993af6ab5fSopenharmony_ciindex 0000000000..a52d4c04bf 8003af6ab5fSopenharmony_ci--- /dev/null 8013af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientShorthand_merging/ambientShorthand_merging.ts 8023af6ab5fSopenharmony_ci@@ -0,0 +1,6 @@ 8033af6ab5fSopenharmony_ci+// @Filename: user.ts 8043af6ab5fSopenharmony_ci+///<reference path="declarations1.d.ts" /> 8053af6ab5fSopenharmony_ci+///<reference path="declarations1.d.ts" /> 8063af6ab5fSopenharmony_ci+import foo, {bar} from "foo"; 8073af6ab5fSopenharmony_ci+foo; 8083af6ab5fSopenharmony_ci+bar; 8093af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientShorthand_merging/declarations1.d.ts b/tests/cases/conformance/ambient/ambientShorthand_merging/declarations1.d.ts 8103af6ab5fSopenharmony_cinew file mode 100644 8113af6ab5fSopenharmony_ciindex 0000000000..66bdaa0fc8 8123af6ab5fSopenharmony_ci--- /dev/null 8133af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientShorthand_merging/declarations1.d.ts 8143af6ab5fSopenharmony_ci@@ -0,0 +1,2 @@ 8153af6ab5fSopenharmony_ci+// @Filename: declarations1.d.ts 8163af6ab5fSopenharmony_ci+declare module "foo"; 8173af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientShorthand_merging/declarations2.d.ts b/tests/cases/conformance/ambient/ambientShorthand_merging/declarations2.d.ts 8183af6ab5fSopenharmony_cinew file mode 100644 8193af6ab5fSopenharmony_ciindex 0000000000..ff7233979a 8203af6ab5fSopenharmony_ci--- /dev/null 8213af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientShorthand_merging/declarations2.d.ts 8223af6ab5fSopenharmony_ci@@ -0,0 +1,4 @@ 8233af6ab5fSopenharmony_ci+// @Filename: declarations2.d.ts 8243af6ab5fSopenharmony_ci+declare module "foo" { 8253af6ab5fSopenharmony_ci+ export const bar: number; 8263af6ab5fSopenharmony_ci+} 8273af6ab5fSopenharmony_ci\ No newline at end of file 8283af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientShorthand_reExport/ambientShorthand_reExport.ts b/tests/cases/conformance/ambient/ambientShorthand_reExport/ambientShorthand_reExport.ts 8293af6ab5fSopenharmony_cinew file mode 100644 8303af6ab5fSopenharmony_ciindex 0000000000..45ba9cd111 8313af6ab5fSopenharmony_ci--- /dev/null 8323af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientShorthand_reExport/ambientShorthand_reExport.ts 8333af6ab5fSopenharmony_ci@@ -0,0 +1,5 @@ 8343af6ab5fSopenharmony_ci+// @Filename: reExportUser.ts 8353af6ab5fSopenharmony_ci+import {x} from "./reExportX"; 8363af6ab5fSopenharmony_ci+import * as $ from "./reExportAll"; 8373af6ab5fSopenharmony_ci+// '$' is not callable, it is an object. 8383af6ab5fSopenharmony_ci+x($); 8393af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientShorthand_reExport/declarations.d.ts b/tests/cases/conformance/ambient/ambientShorthand_reExport/declarations.d.ts 8403af6ab5fSopenharmony_cinew file mode 100644 8413af6ab5fSopenharmony_ciindex 0000000000..58d1d8215b 8423af6ab5fSopenharmony_ci--- /dev/null 8433af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientShorthand_reExport/declarations.d.ts 8443af6ab5fSopenharmony_ci@@ -0,0 +1,2 @@ 8453af6ab5fSopenharmony_ci+// @Filename: declarations.d.ts 8463af6ab5fSopenharmony_ci+declare module "jquery"; 8473af6ab5fSopenharmony_ci\ No newline at end of file 8483af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientShorthand_reExport/jquery.d.ts b/tests/cases/conformance/ambient/ambientShorthand_reExport/jquery.d.ts 8493af6ab5fSopenharmony_cinew file mode 100644 8503af6ab5fSopenharmony_ciindex 0000000000..58d1d8215b 8513af6ab5fSopenharmony_ci--- /dev/null 8523af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientShorthand_reExport/jquery.d.ts 8533af6ab5fSopenharmony_ci@@ -0,0 +1,2 @@ 8543af6ab5fSopenharmony_ci+// @Filename: declarations.d.ts 8553af6ab5fSopenharmony_ci+declare module "jquery"; 8563af6ab5fSopenharmony_ci\ No newline at end of file 8573af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientShorthand_reExport/reExportAll.ts b/tests/cases/conformance/ambient/ambientShorthand_reExport/reExportAll.ts 8583af6ab5fSopenharmony_cinew file mode 100644 8593af6ab5fSopenharmony_ciindex 0000000000..ae6c5d4864 8603af6ab5fSopenharmony_ci--- /dev/null 8613af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientShorthand_reExport/reExportAll.ts 8623af6ab5fSopenharmony_ci@@ -0,0 +1,2 @@ 8633af6ab5fSopenharmony_ci+// @Filename: reExportAll.ts 8643af6ab5fSopenharmony_ci+export * from "jquery"; 8653af6ab5fSopenharmony_ci\ No newline at end of file 8663af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/ambient/ambientShorthand_reExport/reExportX.ts b/tests/cases/conformance/ambient/ambientShorthand_reExport/reExportX.ts 8673af6ab5fSopenharmony_cinew file mode 100644 8683af6ab5fSopenharmony_ciindex 0000000000..07420e1616 8693af6ab5fSopenharmony_ci--- /dev/null 8703af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/ambient/ambientShorthand_reExport/reExportX.ts 8713af6ab5fSopenharmony_ci@@ -0,0 +1,2 @@ 8723af6ab5fSopenharmony_ci+// @Filename: reExportX.ts 8733af6ab5fSopenharmony_ci+export {x} from "jquery"; 8743af6ab5fSopenharmony_ci\ No newline at end of file 8753af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/async/es5/asyncMethodWithSuper_es5.ts b/tests/cases/conformance/async/es5/asyncMethodWithSuper_es5.ts 8763af6ab5fSopenharmony_ciindex c89369d02b..9f7e496b8a 100644 8773af6ab5fSopenharmony_ci--- a/tests/cases/conformance/async/es5/asyncMethodWithSuper_es5.ts 8783af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/async/es5/asyncMethodWithSuper_es5.ts 8793af6ab5fSopenharmony_ci@@ -55,3 +55,4 @@ class B extends A { 8803af6ab5fSopenharmony_ci ({ f: super["x"] } = { f }); 8813af6ab5fSopenharmony_ci } 8823af6ab5fSopenharmony_ci } 8833af6ab5fSopenharmony_ci+let b1 = new B(); 8843af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/async/es6/functionDeclarations/asyncOrYieldAsBindingIdentifier1.ts b/tests/cases/conformance/async/es6/functionDeclarations/asyncOrYieldAsBindingIdentifier1.ts 8853af6ab5fSopenharmony_cinew file mode 100644 8863af6ab5fSopenharmony_ciindex 0000000000..31c1c4055c 8873af6ab5fSopenharmony_ci--- /dev/null 8883af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/async/es6/functionDeclarations/asyncOrYieldAsBindingIdentifier1.ts 8893af6ab5fSopenharmony_ci@@ -0,0 +1,49 @@ 8903af6ab5fSopenharmony_ci+// @target: esnext 8913af6ab5fSopenharmony_ci+ 8923af6ab5fSopenharmony_ci+function f_let () { 8933af6ab5fSopenharmony_ci+ let await = 1 8943af6ab5fSopenharmony_ci+} 8953af6ab5fSopenharmony_ci+ 8963af6ab5fSopenharmony_ci+function f1_var () { 8973af6ab5fSopenharmony_ci+ var await = 1 8983af6ab5fSopenharmony_ci+} 8993af6ab5fSopenharmony_ci+ 9003af6ab5fSopenharmony_ci+function f1_const () { 9013af6ab5fSopenharmony_ci+ const await = 1 9023af6ab5fSopenharmony_ci+} 9033af6ab5fSopenharmony_ci+ 9043af6ab5fSopenharmony_ci+async function f2_let () { 9053af6ab5fSopenharmony_ci+ let await = 1 9063af6ab5fSopenharmony_ci+} 9073af6ab5fSopenharmony_ci+ 9083af6ab5fSopenharmony_ci+async function f2_var () { 9093af6ab5fSopenharmony_ci+ var await = 1 9103af6ab5fSopenharmony_ci+} 9113af6ab5fSopenharmony_ci+ 9123af6ab5fSopenharmony_ci+async function f2_const () { 9133af6ab5fSopenharmony_ci+ const await = 1 9143af6ab5fSopenharmony_ci+} 9153af6ab5fSopenharmony_ci+ 9163af6ab5fSopenharmony_ci+function f3_let () { 9173af6ab5fSopenharmony_ci+ let yield = 2 9183af6ab5fSopenharmony_ci+} 9193af6ab5fSopenharmony_ci+ 9203af6ab5fSopenharmony_ci+function f3_var () { 9213af6ab5fSopenharmony_ci+ var yield = 2 9223af6ab5fSopenharmony_ci+} 9233af6ab5fSopenharmony_ci+ 9243af6ab5fSopenharmony_ci+function f3_const () { 9253af6ab5fSopenharmony_ci+ const yield = 2 9263af6ab5fSopenharmony_ci+} 9273af6ab5fSopenharmony_ci+ 9283af6ab5fSopenharmony_ci+function * f4_let () { 9293af6ab5fSopenharmony_ci+ let yield = 2; 9303af6ab5fSopenharmony_ci+} 9313af6ab5fSopenharmony_ci+ 9323af6ab5fSopenharmony_ci+function * f4_var () { 9333af6ab5fSopenharmony_ci+ var yield = 2; 9343af6ab5fSopenharmony_ci+} 9353af6ab5fSopenharmony_ci+ 9363af6ab5fSopenharmony_ci+function * f4_const () { 9373af6ab5fSopenharmony_ci+ const yield = 2; 9383af6ab5fSopenharmony_ci+} 9393af6ab5fSopenharmony_ci\ No newline at end of file 9403af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAsIdentifier.ts b/tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAsIdentifier.ts 9413af6ab5fSopenharmony_ciindex 4c251a03c3..1a1aeedd41 100644 9423af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAsIdentifier.ts 9433af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAsIdentifier.ts 9443af6ab5fSopenharmony_ci@@ -1,5 +1,5 @@ 9453af6ab5fSopenharmony_ci class abstract { 9463af6ab5fSopenharmony_ci foo() { return 1; } 9473af6ab5fSopenharmony_ci } 9483af6ab5fSopenharmony_ci- 9493af6ab5fSopenharmony_ci+let a = new abstract() 9503af6ab5fSopenharmony_ci new abstract; 9513af6ab5fSopenharmony_ci\ No newline at end of file 9523af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classDeclarations/classBody/classWithEmptyBody.ts b/tests/cases/conformance/classes/classDeclarations/classBody/classWithEmptyBody.ts 9533af6ab5fSopenharmony_ciindex 1a2e456e0f..5437d3a67d 100644 9543af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/classDeclarations/classBody/classWithEmptyBody.ts 9553af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classDeclarations/classBody/classWithEmptyBody.ts 9563af6ab5fSopenharmony_ci@@ -17,4 +17,6 @@ var d: D; 9573af6ab5fSopenharmony_ci var o: {} = d; 9583af6ab5fSopenharmony_ci d = 1; 9593af6ab5fSopenharmony_ci d = { foo: '' } 9603af6ab5fSopenharmony_ci-d = () => { } 9613af6ab5fSopenharmony_ci\ No newline at end of file 9623af6ab5fSopenharmony_ci+d = () => { } 9633af6ab5fSopenharmony_ci+let cc = new C(); 9643af6ab5fSopenharmony_ci+let dd = new D(); 9653af6ab5fSopenharmony_ci\ No newline at end of file 9663af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classDeclarations/classInsideBlock.ts b/tests/cases/conformance/classes/classDeclarations/classInsideBlock.ts 9673af6ab5fSopenharmony_ciindex efc3ccff9a..3184fc17d5 100644 9683af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/classDeclarations/classInsideBlock.ts 9693af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classDeclarations/classInsideBlock.ts 9703af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 9713af6ab5fSopenharmony_ci function foo() { 9723af6ab5fSopenharmony_ci class C { } 9733af6ab5fSopenharmony_ci+ let a1 = new C() 9743af6ab5fSopenharmony_ci } 9753af6ab5fSopenharmony_ci\ No newline at end of file 9763af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classDeclarations/classWithPredefinedTypesAsNames.ts b/tests/cases/conformance/classes/classDeclarations/classWithPredefinedTypesAsNames.ts 9773af6ab5fSopenharmony_ciindex 93daf743f8..1d496f4eaf 100644 9783af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/classDeclarations/classWithPredefinedTypesAsNames.ts 9793af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classDeclarations/classWithPredefinedTypesAsNames.ts 9803af6ab5fSopenharmony_ci@@ -3,4 +3,6 @@ 9813af6ab5fSopenharmony_ci class any { } 9823af6ab5fSopenharmony_ci class number { } 9833af6ab5fSopenharmony_ci class boolean { } 9843af6ab5fSopenharmony_ci-class string { } 9853af6ab5fSopenharmony_ci\ No newline at end of file 9863af6ab5fSopenharmony_ci+class string { } 9873af6ab5fSopenharmony_ci+ 9883af6ab5fSopenharmony_ci+let aa = new any(); 9893af6ab5fSopenharmony_ci\ No newline at end of file 9903af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classDeclarations/classWithSemicolonClassElement1.ts b/tests/cases/conformance/classes/classDeclarations/classWithSemicolonClassElement1.ts 9913af6ab5fSopenharmony_ciindex 6571258d9d..5f049c27e3 100644 9923af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/classDeclarations/classWithSemicolonClassElement1.ts 9933af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classDeclarations/classWithSemicolonClassElement1.ts 9943af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 9953af6ab5fSopenharmony_ci class C { 9963af6ab5fSopenharmony_ci ; 9973af6ab5fSopenharmony_ci-} 9983af6ab5fSopenharmony_ci\ No newline at end of file 9993af6ab5fSopenharmony_ci+} 10003af6ab5fSopenharmony_ci+let c9 = new C() 10013af6ab5fSopenharmony_ci\ No newline at end of file 10023af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classDeclarations/classWithSemicolonClassElement2.ts b/tests/cases/conformance/classes/classDeclarations/classWithSemicolonClassElement2.ts 10033af6ab5fSopenharmony_ciindex 716c8b58ae..511baa19f9 100644 10043af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/classDeclarations/classWithSemicolonClassElement2.ts 10053af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classDeclarations/classWithSemicolonClassElement2.ts 10063af6ab5fSopenharmony_ci@@ -1,4 +1,5 @@ 10073af6ab5fSopenharmony_ci class C { 10083af6ab5fSopenharmony_ci ; 10093af6ab5fSopenharmony_ci ; 10103af6ab5fSopenharmony_ci-} 10113af6ab5fSopenharmony_ci\ No newline at end of file 10123af6ab5fSopenharmony_ci+} 10133af6ab5fSopenharmony_ci+let a15 = new C() 10143af6ab5fSopenharmony_ci\ No newline at end of file 10153af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classExpressions/classExpression2.ts b/tests/cases/conformance/classes/classExpressions/classExpression2.ts 10163af6ab5fSopenharmony_ciindex 6365cd07eb..d39896a361 100644 10173af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/classExpressions/classExpression2.ts 10183af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classExpressions/classExpression2.ts 10193af6ab5fSopenharmony_ci@@ -1,2 +1,4 @@ 10203af6ab5fSopenharmony_ci class D { } 10213af6ab5fSopenharmony_ci-var v = class C extends D {}; 10223af6ab5fSopenharmony_ci\ No newline at end of file 10233af6ab5fSopenharmony_ci+var v = class C extends D {}; 10243af6ab5fSopenharmony_ci+let dd = new D() 10253af6ab5fSopenharmony_ci+let vv = new v() 10263af6ab5fSopenharmony_ci\ No newline at end of file 10273af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock1.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock1.ts 10283af6ab5fSopenharmony_cinew file mode 100644 10293af6ab5fSopenharmony_ciindex 0000000000..dd9455ad8c 10303af6ab5fSopenharmony_ci--- /dev/null 10313af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock1.ts 10323af6ab5fSopenharmony_ci@@ -0,0 +1,11 @@ 10333af6ab5fSopenharmony_ci+// @target: esnext, es2015, es5 10343af6ab5fSopenharmony_ci+const a = 2; 10353af6ab5fSopenharmony_ci+ 10363af6ab5fSopenharmony_ci+class C { 10373af6ab5fSopenharmony_ci+ static { 10383af6ab5fSopenharmony_ci+ const a = 1; 10393af6ab5fSopenharmony_ci+ 10403af6ab5fSopenharmony_ci+ a; 10413af6ab5fSopenharmony_ci+ } 10423af6ab5fSopenharmony_ci+} 10433af6ab5fSopenharmony_ci+let a1 = new C() 10443af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock10.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock10.ts 10453af6ab5fSopenharmony_cinew file mode 100644 10463af6ab5fSopenharmony_ciindex 0000000000..aa82e1db13 10473af6ab5fSopenharmony_ci--- /dev/null 10483af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock10.ts 10493af6ab5fSopenharmony_ci@@ -0,0 +1,30 @@ 10503af6ab5fSopenharmony_ci+// @target: esnext, es2015, es5 10513af6ab5fSopenharmony_ci+var a1 = 1; 10523af6ab5fSopenharmony_ci+var a2 = 1; 10533af6ab5fSopenharmony_ci+const b1 = 2; 10543af6ab5fSopenharmony_ci+const b2 = 2; 10553af6ab5fSopenharmony_ci+ 10563af6ab5fSopenharmony_ci+function f () { 10573af6ab5fSopenharmony_ci+ var a1 = 11; 10583af6ab5fSopenharmony_ci+ const b1 = 22; 10593af6ab5fSopenharmony_ci+ 10603af6ab5fSopenharmony_ci+ class C1 { 10613af6ab5fSopenharmony_ci+ static { 10623af6ab5fSopenharmony_ci+ var a1 = 111; 10633af6ab5fSopenharmony_ci+ var a2 = 111; 10643af6ab5fSopenharmony_ci+ const b1 = 222; 10653af6ab5fSopenharmony_ci+ const b2 = 222; 10663af6ab5fSopenharmony_ci+ } 10673af6ab5fSopenharmony_ci+ } 10683af6ab5fSopenharmony_ci+ let c1 = new C1(); 10693af6ab5fSopenharmony_ci+} 10703af6ab5fSopenharmony_ci+ 10713af6ab5fSopenharmony_ci+class C2 { 10723af6ab5fSopenharmony_ci+ static { 10733af6ab5fSopenharmony_ci+ var a1 = 111; 10743af6ab5fSopenharmony_ci+ var a2 = 111; 10753af6ab5fSopenharmony_ci+ const b1 = 222; 10763af6ab5fSopenharmony_ci+ const b2 = 222; 10773af6ab5fSopenharmony_ci+ } 10783af6ab5fSopenharmony_ci+} 10793af6ab5fSopenharmony_ci+let c2 = new C2(); 10803af6ab5fSopenharmony_ci\ No newline at end of file 10813af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock11.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock11.ts 10823af6ab5fSopenharmony_cinew file mode 100644 10833af6ab5fSopenharmony_ciindex 0000000000..00492ae619 10843af6ab5fSopenharmony_ci--- /dev/null 10853af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock11.ts 10863af6ab5fSopenharmony_ci@@ -0,0 +1,15 @@ 10873af6ab5fSopenharmony_ci+// @target: esnext, es2015 10883af6ab5fSopenharmony_ci+ 10893af6ab5fSopenharmony_ci+let getX; 10903af6ab5fSopenharmony_ci+class C { 10913af6ab5fSopenharmony_ci+ #x = 1 10923af6ab5fSopenharmony_ci+ constructor(x: number) { 10933af6ab5fSopenharmony_ci+ this.#x = x; 10943af6ab5fSopenharmony_ci+ } 10953af6ab5fSopenharmony_ci+ 10963af6ab5fSopenharmony_ci+ static { 10973af6ab5fSopenharmony_ci+ // getX has privileged access to #x 10983af6ab5fSopenharmony_ci+ getX = (obj: C) => obj.#x; 10993af6ab5fSopenharmony_ci+ } 11003af6ab5fSopenharmony_ci+} 11013af6ab5fSopenharmony_ci+let cc = new C(1); 11023af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock12.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock12.ts 11033af6ab5fSopenharmony_cinew file mode 100644 11043af6ab5fSopenharmony_ciindex 0000000000..436c690665 11053af6ab5fSopenharmony_ci--- /dev/null 11063af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock12.ts 11073af6ab5fSopenharmony_ci@@ -0,0 +1,10 @@ 11083af6ab5fSopenharmony_ci+// @useDefineForClassFields: false 11093af6ab5fSopenharmony_ci+// @target: es2015 11103af6ab5fSopenharmony_ci+ 11113af6ab5fSopenharmony_ci+class C { 11123af6ab5fSopenharmony_ci+ static #x = 1; 11133af6ab5fSopenharmony_ci+ 11143af6ab5fSopenharmony_ci+ static { 11153af6ab5fSopenharmony_ci+ C.#x; 11163af6ab5fSopenharmony_ci+ } 11173af6ab5fSopenharmony_ci+} 11183af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock13.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock13.ts 11193af6ab5fSopenharmony_cinew file mode 100644 11203af6ab5fSopenharmony_ciindex 0000000000..8120cc3575 11213af6ab5fSopenharmony_ci--- /dev/null 11223af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock13.ts 11233af6ab5fSopenharmony_ci@@ -0,0 +1,14 @@ 11243af6ab5fSopenharmony_ci+// @target: esnext, es2015 11253af6ab5fSopenharmony_ci+// @useDefineForClassFields: true 11263af6ab5fSopenharmony_ci+ 11273af6ab5fSopenharmony_ci+class C { 11283af6ab5fSopenharmony_ci+ static #x = 123; 11293af6ab5fSopenharmony_ci+ 11303af6ab5fSopenharmony_ci+ static { 11313af6ab5fSopenharmony_ci+ console.log(C.#x) 11323af6ab5fSopenharmony_ci+ } 11333af6ab5fSopenharmony_ci+ 11343af6ab5fSopenharmony_ci+ foo () { 11353af6ab5fSopenharmony_ci+ return C.#x; 11363af6ab5fSopenharmony_ci+ } 11373af6ab5fSopenharmony_ci+} 11383af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock14.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock14.ts 11393af6ab5fSopenharmony_cinew file mode 100644 11403af6ab5fSopenharmony_ciindex 0000000000..ff510c8436 11413af6ab5fSopenharmony_ci--- /dev/null 11423af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock14.ts 11433af6ab5fSopenharmony_ci@@ -0,0 +1,15 @@ 11443af6ab5fSopenharmony_ci+// @useDefineForClassFields: false 11453af6ab5fSopenharmony_ci+// @target: es2015 11463af6ab5fSopenharmony_ci+ 11473af6ab5fSopenharmony_ci+class C { 11483af6ab5fSopenharmony_ci+ static #_1 = 1; 11493af6ab5fSopenharmony_ci+ static #_3 = 1; 11503af6ab5fSopenharmony_ci+ static #_5 = 1; 11513af6ab5fSopenharmony_ci+ 11523af6ab5fSopenharmony_ci+ static {} 11533af6ab5fSopenharmony_ci+ static {} 11543af6ab5fSopenharmony_ci+ static {} 11553af6ab5fSopenharmony_ci+ static {} 11563af6ab5fSopenharmony_ci+ static {} 11573af6ab5fSopenharmony_ci+ static {} 11583af6ab5fSopenharmony_ci+} 11593af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock15.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock15.ts 11603af6ab5fSopenharmony_cinew file mode 100644 11613af6ab5fSopenharmony_ciindex 0000000000..ec2727660f 11623af6ab5fSopenharmony_ci--- /dev/null 11633af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock15.ts 11643af6ab5fSopenharmony_ci@@ -0,0 +1,18 @@ 11653af6ab5fSopenharmony_ci+// @target: esnext, es2015 11663af6ab5fSopenharmony_ci+// @useDefineForClassFields: true 11673af6ab5fSopenharmony_ci+var _C__1; 11683af6ab5fSopenharmony_ci+ 11693af6ab5fSopenharmony_ci+class C { 11703af6ab5fSopenharmony_ci+ static #_1 = 1; 11713af6ab5fSopenharmony_ci+ static #_3 = 3; 11723af6ab5fSopenharmony_ci+ static #_5 = 5; 11733af6ab5fSopenharmony_ci+ 11743af6ab5fSopenharmony_ci+ static {} 11753af6ab5fSopenharmony_ci+ static {} 11763af6ab5fSopenharmony_ci+ static {} 11773af6ab5fSopenharmony_ci+ static {} 11783af6ab5fSopenharmony_ci+ static {} 11793af6ab5fSopenharmony_ci+ static {} 11803af6ab5fSopenharmony_ci+} 11813af6ab5fSopenharmony_ci+ 11823af6ab5fSopenharmony_ci+console.log(_C__1) 11833af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock16.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock16.ts 11843af6ab5fSopenharmony_cinew file mode 100644 11853af6ab5fSopenharmony_ciindex 0000000000..bc15e5f1ab 11863af6ab5fSopenharmony_ci--- /dev/null 11873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock16.ts 11883af6ab5fSopenharmony_ci@@ -0,0 +1,26 @@ 11893af6ab5fSopenharmony_ci+// @target: es2015 11903af6ab5fSopenharmony_ci+ 11913af6ab5fSopenharmony_ci+let getX: (c: C) => number; 11923af6ab5fSopenharmony_ci+class C { 11933af6ab5fSopenharmony_ci+ #x = 1 11943af6ab5fSopenharmony_ci+ constructor(x: number) { 11953af6ab5fSopenharmony_ci+ this.#x = x; 11963af6ab5fSopenharmony_ci+ } 11973af6ab5fSopenharmony_ci+ 11983af6ab5fSopenharmony_ci+ static { 11993af6ab5fSopenharmony_ci+ // getX has privileged access to #x 12003af6ab5fSopenharmony_ci+ getX = (obj: C) => obj.#x; 12013af6ab5fSopenharmony_ci+ getY = (obj: D) => obj.#y; 12023af6ab5fSopenharmony_ci+ } 12033af6ab5fSopenharmony_ci+} 12043af6ab5fSopenharmony_ci+ 12053af6ab5fSopenharmony_ci+let getY: (c: D) => number; 12063af6ab5fSopenharmony_ci+class D { 12073af6ab5fSopenharmony_ci+ #y = 1 12083af6ab5fSopenharmony_ci+ 12093af6ab5fSopenharmony_ci+ static { 12103af6ab5fSopenharmony_ci+ // getY has privileged access to y 12113af6ab5fSopenharmony_ci+ getX = (obj: C) => obj.#x; 12123af6ab5fSopenharmony_ci+ getY = (obj: D) => obj.#y; 12133af6ab5fSopenharmony_ci+ } 12143af6ab5fSopenharmony_ci+} 12153af6ab5fSopenharmony_ci\ No newline at end of file 12163af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock17.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock17.ts 12173af6ab5fSopenharmony_cinew file mode 100644 12183af6ab5fSopenharmony_ciindex 0000000000..8d26cb4a08 12193af6ab5fSopenharmony_ci--- /dev/null 12203af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock17.ts 12213af6ab5fSopenharmony_ci@@ -0,0 +1,33 @@ 12223af6ab5fSopenharmony_ci+// @target: es2015 12233af6ab5fSopenharmony_ci+ 12243af6ab5fSopenharmony_ci+let friendA: { getX(o: A): number, setX(o: A, v: number): void }; 12253af6ab5fSopenharmony_ci+ 12263af6ab5fSopenharmony_ci+class A { 12273af6ab5fSopenharmony_ci+ #x: number; 12283af6ab5fSopenharmony_ci+ 12293af6ab5fSopenharmony_ci+ constructor (v: number) { 12303af6ab5fSopenharmony_ci+ this.#x = v; 12313af6ab5fSopenharmony_ci+ } 12323af6ab5fSopenharmony_ci+ 12333af6ab5fSopenharmony_ci+ getX () { 12343af6ab5fSopenharmony_ci+ return this.#x; 12353af6ab5fSopenharmony_ci+ } 12363af6ab5fSopenharmony_ci+ 12373af6ab5fSopenharmony_ci+ static { 12383af6ab5fSopenharmony_ci+ friendA = { 12393af6ab5fSopenharmony_ci+ getX(obj) { return obj.#x }, 12403af6ab5fSopenharmony_ci+ setX(obj, value) { obj.#x = value } 12413af6ab5fSopenharmony_ci+ }; 12423af6ab5fSopenharmony_ci+ } 12433af6ab5fSopenharmony_ci+}; 12443af6ab5fSopenharmony_ci+ 12453af6ab5fSopenharmony_ci+class B { 12463af6ab5fSopenharmony_ci+ constructor(a: A) { 12473af6ab5fSopenharmony_ci+ const x = friendA.getX(a); // ok 12483af6ab5fSopenharmony_ci+ friendA.setX(a, x + 1); // ok 12493af6ab5fSopenharmony_ci+ } 12503af6ab5fSopenharmony_ci+}; 12513af6ab5fSopenharmony_ci+ 12523af6ab5fSopenharmony_ci+const a = new A(41); 12533af6ab5fSopenharmony_ci+const b = new B(a); 12543af6ab5fSopenharmony_ci+a.getX(); 12553af6ab5fSopenharmony_ci\ No newline at end of file 12563af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock18.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock18.ts 12573af6ab5fSopenharmony_cinew file mode 100644 12583af6ab5fSopenharmony_ciindex 0000000000..a36bd50917 12593af6ab5fSopenharmony_ci--- /dev/null 12603af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock18.ts 12613af6ab5fSopenharmony_ci@@ -0,0 +1,15 @@ 12623af6ab5fSopenharmony_ci+// @target: esnext, es2015, es5 12633af6ab5fSopenharmony_ci+ 12643af6ab5fSopenharmony_ci+function foo () { 12653af6ab5fSopenharmony_ci+ return class { 12663af6ab5fSopenharmony_ci+ static foo = 1; 12673af6ab5fSopenharmony_ci+ static { 12683af6ab5fSopenharmony_ci+ const c = class { 12693af6ab5fSopenharmony_ci+ static bar = 2; 12703af6ab5fSopenharmony_ci+ static { 12713af6ab5fSopenharmony_ci+ // do 12723af6ab5fSopenharmony_ci+ } 12733af6ab5fSopenharmony_ci+ } 12743af6ab5fSopenharmony_ci+ } 12753af6ab5fSopenharmony_ci+ } 12763af6ab5fSopenharmony_ci+} 12773af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock19.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock19.ts 12783af6ab5fSopenharmony_cinew file mode 100644 12793af6ab5fSopenharmony_ciindex 0000000000..33bb993be6 12803af6ab5fSopenharmony_ci--- /dev/null 12813af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock19.ts 12823af6ab5fSopenharmony_ci@@ -0,0 +1,6 @@ 12833af6ab5fSopenharmony_ci+class C { 12843af6ab5fSopenharmony_ci+ @decorator 12853af6ab5fSopenharmony_ci+ static { 12863af6ab5fSopenharmony_ci+ // something 12873af6ab5fSopenharmony_ci+ } 12883af6ab5fSopenharmony_ci+} 12893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock2.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock2.ts 12903af6ab5fSopenharmony_cinew file mode 100644 12913af6ab5fSopenharmony_ciindex 0000000000..292d7181bb 12923af6ab5fSopenharmony_ci--- /dev/null 12933af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock2.ts 12943af6ab5fSopenharmony_ci@@ -0,0 +1,20 @@ 12953af6ab5fSopenharmony_ci+// @target: esnext, es2015, es5 12963af6ab5fSopenharmony_ci+ 12973af6ab5fSopenharmony_ci+const a = 1; 12983af6ab5fSopenharmony_ci+const b = 2; 12993af6ab5fSopenharmony_ci+ 13003af6ab5fSopenharmony_ci+class C { 13013af6ab5fSopenharmony_ci+ static { 13023af6ab5fSopenharmony_ci+ const a = 11; 13033af6ab5fSopenharmony_ci+ 13043af6ab5fSopenharmony_ci+ a; 13053af6ab5fSopenharmony_ci+ b; 13063af6ab5fSopenharmony_ci+ } 13073af6ab5fSopenharmony_ci+ 13083af6ab5fSopenharmony_ci+ static { 13093af6ab5fSopenharmony_ci+ const a = 11; 13103af6ab5fSopenharmony_ci+ 13113af6ab5fSopenharmony_ci+ a; 13123af6ab5fSopenharmony_ci+ b; 13133af6ab5fSopenharmony_ci+ } 13143af6ab5fSopenharmony_ci+} 13153af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock20.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock20.ts 13163af6ab5fSopenharmony_cinew file mode 100644 13173af6ab5fSopenharmony_ciindex 0000000000..72a9d09161 13183af6ab5fSopenharmony_ci--- /dev/null 13193af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock20.ts 13203af6ab5fSopenharmony_ci@@ -0,0 +1,13 @@ 13213af6ab5fSopenharmony_ci+class C { 13223af6ab5fSopenharmony_ci+ async static { 13233af6ab5fSopenharmony_ci+ // something 13243af6ab5fSopenharmony_ci+ } 13253af6ab5fSopenharmony_ci+ 13263af6ab5fSopenharmony_ci+ public static { 13273af6ab5fSopenharmony_ci+ // something 13283af6ab5fSopenharmony_ci+ } 13293af6ab5fSopenharmony_ci+ 13303af6ab5fSopenharmony_ci+ readonly private static { 13313af6ab5fSopenharmony_ci+ // something 13323af6ab5fSopenharmony_ci+ } 13333af6ab5fSopenharmony_ci+} 13343af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock21.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock21.ts 13353af6ab5fSopenharmony_cinew file mode 100644 13363af6ab5fSopenharmony_ciindex 0000000000..65422df9cd 13373af6ab5fSopenharmony_ci--- /dev/null 13383af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock21.ts 13393af6ab5fSopenharmony_ci@@ -0,0 +1,7 @@ 13403af6ab5fSopenharmony_ci+class C { 13413af6ab5fSopenharmony_ci+ /* jsdocs */ 13423af6ab5fSopenharmony_ci+ static { 13433af6ab5fSopenharmony_ci+ // something 13443af6ab5fSopenharmony_ci+ } 13453af6ab5fSopenharmony_ci+} 13463af6ab5fSopenharmony_ci+let cc = new C(); 13473af6ab5fSopenharmony_ci\ No newline at end of file 13483af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock22.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock22.ts 13493af6ab5fSopenharmony_cinew file mode 100644 13503af6ab5fSopenharmony_ciindex 0000000000..8d3be9861a 13513af6ab5fSopenharmony_ci--- /dev/null 13523af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock22.ts 13533af6ab5fSopenharmony_ci@@ -0,0 +1,72 @@ 13543af6ab5fSopenharmony_ci+// @target: esnext 13553af6ab5fSopenharmony_ci+ 13563af6ab5fSopenharmony_ci+let await: "any"; 13573af6ab5fSopenharmony_ci+class C { 13583af6ab5fSopenharmony_ci+ static { 13593af6ab5fSopenharmony_ci+ let await: any; // illegal, cannot declare a new binding for await 13603af6ab5fSopenharmony_ci+ } 13613af6ab5fSopenharmony_ci+ static { 13623af6ab5fSopenharmony_ci+ let { await } = {} as any; // illegal, cannot declare a new binding for await 13633af6ab5fSopenharmony_ci+ } 13643af6ab5fSopenharmony_ci+ static { 13653af6ab5fSopenharmony_ci+ let { await: other } = {} as any; // legal 13663af6ab5fSopenharmony_ci+ } 13673af6ab5fSopenharmony_ci+ static { 13683af6ab5fSopenharmony_ci+ let await; // illegal, cannot declare a new binding for await 13693af6ab5fSopenharmony_ci+ } 13703af6ab5fSopenharmony_ci+ static { 13713af6ab5fSopenharmony_ci+ function await() { }; // illegal 13723af6ab5fSopenharmony_ci+ } 13733af6ab5fSopenharmony_ci+ static { 13743af6ab5fSopenharmony_ci+ class await { }; // illegal 13753af6ab5fSopenharmony_ci+ } 13763af6ab5fSopenharmony_ci+ 13773af6ab5fSopenharmony_ci+ static { 13783af6ab5fSopenharmony_ci+ class D { 13793af6ab5fSopenharmony_ci+ await = 1; // legal 13803af6ab5fSopenharmony_ci+ x = await; // legal (initializers have an implicit function boundary) 13813af6ab5fSopenharmony_ci+ }; 13823af6ab5fSopenharmony_ci+ } 13833af6ab5fSopenharmony_ci+ static { 13843af6ab5fSopenharmony_ci+ (function await() { }); // legal, 'await' in function expression name not bound inside of static block 13853af6ab5fSopenharmony_ci+ } 13863af6ab5fSopenharmony_ci+ static { 13873af6ab5fSopenharmony_ci+ (class await { }); // legal, 'await' in class expression name not bound inside of static block 13883af6ab5fSopenharmony_ci+ } 13893af6ab5fSopenharmony_ci+ static { 13903af6ab5fSopenharmony_ci+ (function () { return await; }); // legal, 'await' is inside of a new function boundary 13913af6ab5fSopenharmony_ci+ } 13923af6ab5fSopenharmony_ci+ static { 13933af6ab5fSopenharmony_ci+ (() => await); // legal, 'await' is inside of a new function boundary 13943af6ab5fSopenharmony_ci+ } 13953af6ab5fSopenharmony_ci+ 13963af6ab5fSopenharmony_ci+ static { 13973af6ab5fSopenharmony_ci+ class E { 13983af6ab5fSopenharmony_ci+ constructor() { await; } 13993af6ab5fSopenharmony_ci+ method() { await; } 14003af6ab5fSopenharmony_ci+ get accessor() { 14013af6ab5fSopenharmony_ci+ await; 14023af6ab5fSopenharmony_ci+ return 1; 14033af6ab5fSopenharmony_ci+ } 14043af6ab5fSopenharmony_ci+ set accessor(v: any) { 14053af6ab5fSopenharmony_ci+ await; 14063af6ab5fSopenharmony_ci+ } 14073af6ab5fSopenharmony_ci+ propLambda = () => { await; } 14083af6ab5fSopenharmony_ci+ propFunc = function () { await; } 14093af6ab5fSopenharmony_ci+ } 14103af6ab5fSopenharmony_ci+ } 14113af6ab5fSopenharmony_ci+ static { 14123af6ab5fSopenharmony_ci+ class S { 14133af6ab5fSopenharmony_ci+ static method() { await; } 14143af6ab5fSopenharmony_ci+ static get accessor() { 14153af6ab5fSopenharmony_ci+ await; 14163af6ab5fSopenharmony_ci+ return 1; 14173af6ab5fSopenharmony_ci+ } 14183af6ab5fSopenharmony_ci+ static set accessor(v: any) { 14193af6ab5fSopenharmony_ci+ await; 14203af6ab5fSopenharmony_ci+ } 14213af6ab5fSopenharmony_ci+ static propLambda = () => { await; } 14223af6ab5fSopenharmony_ci+ static propFunc = function () { await; } 14233af6ab5fSopenharmony_ci+ } 14243af6ab5fSopenharmony_ci+ } 14253af6ab5fSopenharmony_ci+} 14263af6ab5fSopenharmony_ci\ No newline at end of file 14273af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock23.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock23.ts 14283af6ab5fSopenharmony_cinew file mode 100644 14293af6ab5fSopenharmony_ciindex 0000000000..bb83b27dca 14303af6ab5fSopenharmony_ci--- /dev/null 14313af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock23.ts 14323af6ab5fSopenharmony_ci@@ -0,0 +1,21 @@ 14333af6ab5fSopenharmony_ci+// @target: esnext 14343af6ab5fSopenharmony_ci+ 14353af6ab5fSopenharmony_ci+const nums = [1, 2, 3].map(n => Promise.resolve(n)) 14363af6ab5fSopenharmony_ci+ 14373af6ab5fSopenharmony_ci+class C { 14383af6ab5fSopenharmony_ci+ static { 14393af6ab5fSopenharmony_ci+ for await (const nn of nums) { 14403af6ab5fSopenharmony_ci+ console.log(nn) 14413af6ab5fSopenharmony_ci+ } 14423af6ab5fSopenharmony_ci+ } 14433af6ab5fSopenharmony_ci+} 14443af6ab5fSopenharmony_ci+ 14453af6ab5fSopenharmony_ci+async function foo () { 14463af6ab5fSopenharmony_ci+ class C { 14473af6ab5fSopenharmony_ci+ static { 14483af6ab5fSopenharmony_ci+ for await (const nn of nums) { 14493af6ab5fSopenharmony_ci+ console.log(nn) 14503af6ab5fSopenharmony_ci+ } 14513af6ab5fSopenharmony_ci+ } 14523af6ab5fSopenharmony_ci+ } 14533af6ab5fSopenharmony_ci+} 14543af6ab5fSopenharmony_ci\ No newline at end of file 14553af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock24.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock24.ts 14563af6ab5fSopenharmony_cinew file mode 100644 14573af6ab5fSopenharmony_ciindex 0000000000..8132238772 14583af6ab5fSopenharmony_ci--- /dev/null 14593af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock24.ts 14603af6ab5fSopenharmony_ci@@ -0,0 +1,8 @@ 14613af6ab5fSopenharmony_ci+// @module: commonjs, es2015, es2020, UMD, AMD, System, esnext 14623af6ab5fSopenharmony_ci+ 14633af6ab5fSopenharmony_ci+export class C { 14643af6ab5fSopenharmony_ci+ static x: number; 14653af6ab5fSopenharmony_ci+ static { 14663af6ab5fSopenharmony_ci+ C.x = 1; 14673af6ab5fSopenharmony_ci+ } 14683af6ab5fSopenharmony_ci+} 14693af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock25.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock25.ts 14703af6ab5fSopenharmony_cinew file mode 100644 14713af6ab5fSopenharmony_ciindex 0000000000..56f99a6122 14723af6ab5fSopenharmony_ci--- /dev/null 14733af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock25.ts 14743af6ab5fSopenharmony_ci@@ -0,0 +1,23 @@ 14753af6ab5fSopenharmony_ci+// @target: esnext 14763af6ab5fSopenharmony_ci+// @declaration: true 14773af6ab5fSopenharmony_ci+// @declarationMap: true 14783af6ab5fSopenharmony_ci+// @sourceMap: true 14793af6ab5fSopenharmony_ci+ 14803af6ab5fSopenharmony_ci+const a = 1; 14813af6ab5fSopenharmony_ci+const b = 2; 14823af6ab5fSopenharmony_ci+ 14833af6ab5fSopenharmony_ci+class C { 14843af6ab5fSopenharmony_ci+ static { 14853af6ab5fSopenharmony_ci+ const a = 11; 14863af6ab5fSopenharmony_ci+ 14873af6ab5fSopenharmony_ci+ a; 14883af6ab5fSopenharmony_ci+ b; 14893af6ab5fSopenharmony_ci+ } 14903af6ab5fSopenharmony_ci+ 14913af6ab5fSopenharmony_ci+ static { 14923af6ab5fSopenharmony_ci+ const a = 11; 14933af6ab5fSopenharmony_ci+ 14943af6ab5fSopenharmony_ci+ a; 14953af6ab5fSopenharmony_ci+ b; 14963af6ab5fSopenharmony_ci+ } 14973af6ab5fSopenharmony_ci+} 14983af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock26.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock26.ts 14993af6ab5fSopenharmony_cinew file mode 100644 15003af6ab5fSopenharmony_ciindex 0000000000..1081729acd 15013af6ab5fSopenharmony_ci--- /dev/null 15023af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock26.ts 15033af6ab5fSopenharmony_ci@@ -0,0 +1,30 @@ 15043af6ab5fSopenharmony_ci+// @target: esnext 15053af6ab5fSopenharmony_ci+ 15063af6ab5fSopenharmony_ci+class C { 15073af6ab5fSopenharmony_ci+ static { 15083af6ab5fSopenharmony_ci+ await; // illegal 15093af6ab5fSopenharmony_ci+ } 15103af6ab5fSopenharmony_ci+ static { 15113af6ab5fSopenharmony_ci+ await (1); // illegal 15123af6ab5fSopenharmony_ci+ } 15133af6ab5fSopenharmony_ci+ static { 15143af6ab5fSopenharmony_ci+ ({ [await]: 1 }); // illegal 15153af6ab5fSopenharmony_ci+ } 15163af6ab5fSopenharmony_ci+ static { 15173af6ab5fSopenharmony_ci+ class D { 15183af6ab5fSopenharmony_ci+ [await] = 1; // illegal (computed property names are evaluated outside of a class body 15193af6ab5fSopenharmony_ci+ }; 15203af6ab5fSopenharmony_ci+ } 15213af6ab5fSopenharmony_ci+ static { 15223af6ab5fSopenharmony_ci+ ({ await }); // illegal short-hand property reference 15233af6ab5fSopenharmony_ci+ } 15243af6ab5fSopenharmony_ci+ static { 15253af6ab5fSopenharmony_ci+ await: // illegal, 'await' cannot be used as a label 15263af6ab5fSopenharmony_ci+ break await; // illegal, 'await' cannot be used as a label 15273af6ab5fSopenharmony_ci+ } 15283af6ab5fSopenharmony_ci+ static { 15293af6ab5fSopenharmony_ci+ function f(await) { } 15303af6ab5fSopenharmony_ci+ const ff = (await) => { } 15313af6ab5fSopenharmony_ci+ const fff = await => { } 15323af6ab5fSopenharmony_ci+ } 15333af6ab5fSopenharmony_ci+} 15343af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock27.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock27.ts 15353af6ab5fSopenharmony_cinew file mode 100644 15363af6ab5fSopenharmony_ciindex 0000000000..a0429bbb54 15373af6ab5fSopenharmony_ci--- /dev/null 15383af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock27.ts 15393af6ab5fSopenharmony_ci@@ -0,0 +1,17 @@ 15403af6ab5fSopenharmony_ci+// https://github.com/microsoft/TypeScript/issues/44872 15413af6ab5fSopenharmony_ci+ 15423af6ab5fSopenharmony_ci+void class Foo { 15433af6ab5fSopenharmony_ci+ static prop = 1 15443af6ab5fSopenharmony_ci+ static { 15453af6ab5fSopenharmony_ci+ console.log(Foo.prop); 15463af6ab5fSopenharmony_ci+ Foo.prop++; 15473af6ab5fSopenharmony_ci+ } 15483af6ab5fSopenharmony_ci+ static { 15493af6ab5fSopenharmony_ci+ console.log(Foo.prop); 15503af6ab5fSopenharmony_ci+ Foo.prop++; 15513af6ab5fSopenharmony_ci+ } 15523af6ab5fSopenharmony_ci+ static { 15533af6ab5fSopenharmony_ci+ console.log(Foo.prop); 15543af6ab5fSopenharmony_ci+ Foo.prop++; 15553af6ab5fSopenharmony_ci+ } 15563af6ab5fSopenharmony_ci+} 15573af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock3.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock3.ts 15583af6ab5fSopenharmony_cinew file mode 100644 15593af6ab5fSopenharmony_ciindex 0000000000..84125fdbed 15603af6ab5fSopenharmony_ci--- /dev/null 15613af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock3.ts 15623af6ab5fSopenharmony_ci@@ -0,0 +1,19 @@ 15633af6ab5fSopenharmony_ci+// @target: esnext 15643af6ab5fSopenharmony_ci+ 15653af6ab5fSopenharmony_ci+const a = 1; 15663af6ab5fSopenharmony_ci+ 15673af6ab5fSopenharmony_ci+class C { 15683af6ab5fSopenharmony_ci+ static f1 = 1; 15693af6ab5fSopenharmony_ci+ 15703af6ab5fSopenharmony_ci+ static { 15713af6ab5fSopenharmony_ci+ console.log(C.f1, C.f2, C.f3) 15723af6ab5fSopenharmony_ci+ } 15733af6ab5fSopenharmony_ci+ 15743af6ab5fSopenharmony_ci+ static f2 = 2; 15753af6ab5fSopenharmony_ci+ 15763af6ab5fSopenharmony_ci+ static { 15773af6ab5fSopenharmony_ci+ console.log(C.f1, C.f2, C.f3) 15783af6ab5fSopenharmony_ci+ } 15793af6ab5fSopenharmony_ci+ 15803af6ab5fSopenharmony_ci+ static f3 = 3; 15813af6ab5fSopenharmony_ci+} 15823af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock4.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock4.ts 15833af6ab5fSopenharmony_cinew file mode 100644 15843af6ab5fSopenharmony_ciindex 0000000000..7a944a4969 15853af6ab5fSopenharmony_ci--- /dev/null 15863af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock4.ts 15873af6ab5fSopenharmony_ci@@ -0,0 +1,16 @@ 15883af6ab5fSopenharmony_ci+// @target: esnext 15893af6ab5fSopenharmony_ci+ 15903af6ab5fSopenharmony_ci+class C { 15913af6ab5fSopenharmony_ci+ static s1 = 1; 15923af6ab5fSopenharmony_ci+ 15933af6ab5fSopenharmony_ci+ static { 15943af6ab5fSopenharmony_ci+ this.s1; 15953af6ab5fSopenharmony_ci+ C.s1; 15963af6ab5fSopenharmony_ci+ 15973af6ab5fSopenharmony_ci+ this.s2; 15983af6ab5fSopenharmony_ci+ C.s2; 15993af6ab5fSopenharmony_ci+ } 16003af6ab5fSopenharmony_ci+ 16013af6ab5fSopenharmony_ci+ static s2 = 2; 16023af6ab5fSopenharmony_ci+ static ss2 = this.s1; 16033af6ab5fSopenharmony_ci+} 16043af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock5.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock5.ts 16053af6ab5fSopenharmony_cinew file mode 100644 16063af6ab5fSopenharmony_ciindex 0000000000..2410b532ab 16073af6ab5fSopenharmony_ci--- /dev/null 16083af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock5.ts 16093af6ab5fSopenharmony_ci@@ -0,0 +1,19 @@ 16103af6ab5fSopenharmony_ci+// @target: esnext, es2015, es5 16113af6ab5fSopenharmony_ci+ 16123af6ab5fSopenharmony_ci+class B { 16133af6ab5fSopenharmony_ci+ static a = 1; 16143af6ab5fSopenharmony_ci+ static b = 2; 16153af6ab5fSopenharmony_ci+} 16163af6ab5fSopenharmony_ci+ 16173af6ab5fSopenharmony_ci+class C extends B { 16183af6ab5fSopenharmony_ci+ static b = 3; 16193af6ab5fSopenharmony_ci+ static c = super.a 16203af6ab5fSopenharmony_ci+ 16213af6ab5fSopenharmony_ci+ static { 16223af6ab5fSopenharmony_ci+ this.b; 16233af6ab5fSopenharmony_ci+ super.b; 16243af6ab5fSopenharmony_ci+ super.a; 16253af6ab5fSopenharmony_ci+ } 16263af6ab5fSopenharmony_ci+} 16273af6ab5fSopenharmony_ci+ 16283af6ab5fSopenharmony_ci+let cc = new C(); 16293af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock6.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock6.ts 16303af6ab5fSopenharmony_cinew file mode 100644 16313af6ab5fSopenharmony_ciindex 0000000000..cdd0cda2fe 16323af6ab5fSopenharmony_ci--- /dev/null 16333af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock6.ts 16343af6ab5fSopenharmony_ci@@ -0,0 +1,62 @@ 16353af6ab5fSopenharmony_ci+class B { 16363af6ab5fSopenharmony_ci+ static a = 1; 16373af6ab5fSopenharmony_ci+} 16383af6ab5fSopenharmony_ci+ 16393af6ab5fSopenharmony_ci+class C extends B { 16403af6ab5fSopenharmony_ci+ static { 16413af6ab5fSopenharmony_ci+ let await = 1; 16423af6ab5fSopenharmony_ci+ let arguments = 1; 16433af6ab5fSopenharmony_ci+ let eval = 1; 16443af6ab5fSopenharmony_ci+ } 16453af6ab5fSopenharmony_ci+ 16463af6ab5fSopenharmony_ci+ static { 16473af6ab5fSopenharmony_ci+ await: if (true) { 16483af6ab5fSopenharmony_ci+ 16493af6ab5fSopenharmony_ci+ } 16503af6ab5fSopenharmony_ci+ 16513af6ab5fSopenharmony_ci+ arguments; 16523af6ab5fSopenharmony_ci+ await; 16533af6ab5fSopenharmony_ci+ super(); 16543af6ab5fSopenharmony_ci+ } 16553af6ab5fSopenharmony_ci+} 16563af6ab5fSopenharmony_ci+ 16573af6ab5fSopenharmony_ci+class CC { 16583af6ab5fSopenharmony_ci+ constructor () { 16593af6ab5fSopenharmony_ci+ class C extends B { 16603af6ab5fSopenharmony_ci+ static { 16613af6ab5fSopenharmony_ci+ class CC extends B { 16623af6ab5fSopenharmony_ci+ constructor () { 16633af6ab5fSopenharmony_ci+ super(); 16643af6ab5fSopenharmony_ci+ } 16653af6ab5fSopenharmony_ci+ } 16663af6ab5fSopenharmony_ci+ super(); 16673af6ab5fSopenharmony_ci+ } 16683af6ab5fSopenharmony_ci+ } 16693af6ab5fSopenharmony_ci+ } 16703af6ab5fSopenharmony_ci+} 16713af6ab5fSopenharmony_ci+ 16723af6ab5fSopenharmony_ci+async function foo () { 16733af6ab5fSopenharmony_ci+ class C extends B { 16743af6ab5fSopenharmony_ci+ static { 16753af6ab5fSopenharmony_ci+ arguments; 16763af6ab5fSopenharmony_ci+ await; 16773af6ab5fSopenharmony_ci+ 16783af6ab5fSopenharmony_ci+ async function ff () { 16793af6ab5fSopenharmony_ci+ arguments; 16803af6ab5fSopenharmony_ci+ await; 16813af6ab5fSopenharmony_ci+ } 16823af6ab5fSopenharmony_ci+ } 16833af6ab5fSopenharmony_ci+ } 16843af6ab5fSopenharmony_ci+} 16853af6ab5fSopenharmony_ci+ 16863af6ab5fSopenharmony_ci+function foo1 () { 16873af6ab5fSopenharmony_ci+ class C extends B { 16883af6ab5fSopenharmony_ci+ static { 16893af6ab5fSopenharmony_ci+ arguments; 16903af6ab5fSopenharmony_ci+ 16913af6ab5fSopenharmony_ci+ function ff () { 16923af6ab5fSopenharmony_ci+ arguments; 16933af6ab5fSopenharmony_ci+ } 16943af6ab5fSopenharmony_ci+ } 16953af6ab5fSopenharmony_ci+ } 16963af6ab5fSopenharmony_ci+} 16973af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock7.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock7.ts 16983af6ab5fSopenharmony_cinew file mode 100644 16993af6ab5fSopenharmony_ciindex 0000000000..727ada0342 17003af6ab5fSopenharmony_ci--- /dev/null 17013af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock7.ts 17023af6ab5fSopenharmony_ci@@ -0,0 +1,43 @@ 17033af6ab5fSopenharmony_ci+class C { 17043af6ab5fSopenharmony_ci+ static { 17053af6ab5fSopenharmony_ci+ await 1; 17063af6ab5fSopenharmony_ci+ yield 1; 17073af6ab5fSopenharmony_ci+ return 1; 17083af6ab5fSopenharmony_ci+ } 17093af6ab5fSopenharmony_ci+} 17103af6ab5fSopenharmony_ci+ 17113af6ab5fSopenharmony_ci+async function f1 () { 17123af6ab5fSopenharmony_ci+ class C { 17133af6ab5fSopenharmony_ci+ static { 17143af6ab5fSopenharmony_ci+ await 1; 17153af6ab5fSopenharmony_ci+ 17163af6ab5fSopenharmony_ci+ async function ff () { 17173af6ab5fSopenharmony_ci+ await 1; 17183af6ab5fSopenharmony_ci+ } 17193af6ab5fSopenharmony_ci+ } 17203af6ab5fSopenharmony_ci+ } 17213af6ab5fSopenharmony_ci+} 17223af6ab5fSopenharmony_ci+ 17233af6ab5fSopenharmony_ci+function * f2 () { 17243af6ab5fSopenharmony_ci+ class C { 17253af6ab5fSopenharmony_ci+ static { 17263af6ab5fSopenharmony_ci+ yield 1; 17273af6ab5fSopenharmony_ci+ 17283af6ab5fSopenharmony_ci+ function * ff () { 17293af6ab5fSopenharmony_ci+ yield 1; 17303af6ab5fSopenharmony_ci+ } 17313af6ab5fSopenharmony_ci+ } 17323af6ab5fSopenharmony_ci+ } 17333af6ab5fSopenharmony_ci+} 17343af6ab5fSopenharmony_ci+ 17353af6ab5fSopenharmony_ci+function f3 () { 17363af6ab5fSopenharmony_ci+ class C { 17373af6ab5fSopenharmony_ci+ static { 17383af6ab5fSopenharmony_ci+ return 1; 17393af6ab5fSopenharmony_ci+ 17403af6ab5fSopenharmony_ci+ function ff () { 17413af6ab5fSopenharmony_ci+ return 1 17423af6ab5fSopenharmony_ci+ } 17433af6ab5fSopenharmony_ci+ } 17443af6ab5fSopenharmony_ci+ } 17453af6ab5fSopenharmony_ci+} 17463af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock8.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock8.ts 17473af6ab5fSopenharmony_cinew file mode 100644 17483af6ab5fSopenharmony_ciindex 0000000000..d2e5220b83 17493af6ab5fSopenharmony_ci--- /dev/null 17503af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock8.ts 17513af6ab5fSopenharmony_ci@@ -0,0 +1,48 @@ 17523af6ab5fSopenharmony_ci+function foo (v: number) { 17533af6ab5fSopenharmony_ci+ label: while (v) { 17543af6ab5fSopenharmony_ci+ class C { 17553af6ab5fSopenharmony_ci+ static { 17563af6ab5fSopenharmony_ci+ if (v === 1) { 17573af6ab5fSopenharmony_ci+ break label; 17583af6ab5fSopenharmony_ci+ } 17593af6ab5fSopenharmony_ci+ if (v === 2) { 17603af6ab5fSopenharmony_ci+ continue label; 17613af6ab5fSopenharmony_ci+ } 17623af6ab5fSopenharmony_ci+ if (v === 3) { 17633af6ab5fSopenharmony_ci+ break 17643af6ab5fSopenharmony_ci+ } 17653af6ab5fSopenharmony_ci+ if (v === 4) { 17663af6ab5fSopenharmony_ci+ continue 17673af6ab5fSopenharmony_ci+ } 17683af6ab5fSopenharmony_ci+ } 17693af6ab5fSopenharmony_ci+ } 17703af6ab5fSopenharmony_ci+ 17713af6ab5fSopenharmony_ci+ if (v === 5) { 17723af6ab5fSopenharmony_ci+ break label; 17733af6ab5fSopenharmony_ci+ } 17743af6ab5fSopenharmony_ci+ if (v === 6) { 17753af6ab5fSopenharmony_ci+ continue label; 17763af6ab5fSopenharmony_ci+ } 17773af6ab5fSopenharmony_ci+ if (v === 7) { 17783af6ab5fSopenharmony_ci+ break; 17793af6ab5fSopenharmony_ci+ } 17803af6ab5fSopenharmony_ci+ if (v === 8) { 17813af6ab5fSopenharmony_ci+ continue; 17823af6ab5fSopenharmony_ci+ } 17833af6ab5fSopenharmony_ci+ } 17843af6ab5fSopenharmony_ci+ 17853af6ab5fSopenharmony_ci+ class C { 17863af6ab5fSopenharmony_ci+ static { 17873af6ab5fSopenharmony_ci+ outer: break outer; // valid 17883af6ab5fSopenharmony_ci+ loop: while (v) { 17893af6ab5fSopenharmony_ci+ if (v === 1) break loop; // valid 17903af6ab5fSopenharmony_ci+ if (v === 2) continue loop; // valid 17913af6ab5fSopenharmony_ci+ if (v === 3) break; // valid 17923af6ab5fSopenharmony_ci+ if (v === 4) continue; // valid 17933af6ab5fSopenharmony_ci+ } 17943af6ab5fSopenharmony_ci+ switch (v) { 17953af6ab5fSopenharmony_ci+ default: break; // valid 17963af6ab5fSopenharmony_ci+ } 17973af6ab5fSopenharmony_ci+ } 17983af6ab5fSopenharmony_ci+ } 17993af6ab5fSopenharmony_ci+} 18003af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlock9.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock9.ts 18013af6ab5fSopenharmony_cinew file mode 100644 18023af6ab5fSopenharmony_ciindex 0000000000..d99157b190 18033af6ab5fSopenharmony_ci--- /dev/null 18043af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlock9.ts 18053af6ab5fSopenharmony_ci@@ -0,0 +1,8 @@ 18063af6ab5fSopenharmony_ci+// @target: esnext, es2015, es5 18073af6ab5fSopenharmony_ci+class A { 18083af6ab5fSopenharmony_ci+ static bar = A.foo + 1 18093af6ab5fSopenharmony_ci+ static { 18103af6ab5fSopenharmony_ci+ A.foo + 2; 18113af6ab5fSopenharmony_ci+ } 18123af6ab5fSopenharmony_ci+ static foo = 1; 18133af6ab5fSopenharmony_ci+} 18143af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlockUseBeforeDef1.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlockUseBeforeDef1.ts 18153af6ab5fSopenharmony_cinew file mode 100644 18163af6ab5fSopenharmony_ciindex 0000000000..11f8b7f554 18173af6ab5fSopenharmony_ci--- /dev/null 18183af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlockUseBeforeDef1.ts 18193af6ab5fSopenharmony_ci@@ -0,0 +1,15 @@ 18203af6ab5fSopenharmony_ci+// @target: esnext 18213af6ab5fSopenharmony_ci+// @noEmit: true 18223af6ab5fSopenharmony_ci+// @strict: true 18233af6ab5fSopenharmony_ci+ 18243af6ab5fSopenharmony_ci+class C { 18253af6ab5fSopenharmony_ci+ static x; 18263af6ab5fSopenharmony_ci+ static { 18273af6ab5fSopenharmony_ci+ this.x = 1; 18283af6ab5fSopenharmony_ci+ } 18293af6ab5fSopenharmony_ci+ static y = this.x; 18303af6ab5fSopenharmony_ci+ static z; 18313af6ab5fSopenharmony_ci+ static { 18323af6ab5fSopenharmony_ci+ this.z = this.y; 18333af6ab5fSopenharmony_ci+ } 18343af6ab5fSopenharmony_ci+} 18353af6ab5fSopenharmony_ci\ No newline at end of file 18363af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/classStaticBlock/classStaticBlockUseBeforeDef2.ts b/tests/cases/conformance/classes/classStaticBlock/classStaticBlockUseBeforeDef2.ts 18373af6ab5fSopenharmony_cinew file mode 100644 18383af6ab5fSopenharmony_ciindex 0000000000..89658a6ebe 18393af6ab5fSopenharmony_ci--- /dev/null 18403af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/classStaticBlock/classStaticBlockUseBeforeDef2.ts 18413af6ab5fSopenharmony_ci@@ -0,0 +1,10 @@ 18423af6ab5fSopenharmony_ci+// @target: esnext 18433af6ab5fSopenharmony_ci+// @noEmit: true 18443af6ab5fSopenharmony_ci+// @strict: true 18453af6ab5fSopenharmony_ci+ 18463af6ab5fSopenharmony_ci+class C { 18473af6ab5fSopenharmony_ci+ static { 18483af6ab5fSopenharmony_ci+ this.x = 1; 18493af6ab5fSopenharmony_ci+ } 18503af6ab5fSopenharmony_ci+ static x; 18513af6ab5fSopenharmony_ci+} 18523af6ab5fSopenharmony_ci\ No newline at end of file 18533af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/constructorDeclarations/classConstructorAccessibility4.ts b/tests/cases/conformance/classes/constructorDeclarations/classConstructorAccessibility4.ts 18543af6ab5fSopenharmony_ciindex 3760f2176a..83c7d721b0 100644 18553af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/constructorDeclarations/classConstructorAccessibility4.ts 18563af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/constructorDeclarations/classConstructorAccessibility4.ts 18573af6ab5fSopenharmony_ci@@ -14,6 +14,7 @@ class A { 18583af6ab5fSopenharmony_ci } 18593af6ab5fSopenharmony_ci } 18603af6ab5fSopenharmony_ci } 18613af6ab5fSopenharmony_ci+let aa = new A(); 18623af6ab5fSopenharmony_ci 18633af6ab5fSopenharmony_ci class D { 18643af6ab5fSopenharmony_ci protected constructor() { } 18653af6ab5fSopenharmony_ci@@ -28,4 +29,5 @@ class D { 18663af6ab5fSopenharmony_ci class F extends D { // OK 18673af6ab5fSopenharmony_ci } 18683af6ab5fSopenharmony_ci } 18693af6ab5fSopenharmony_ci-} 18703af6ab5fSopenharmony_ci\ No newline at end of file 18713af6ab5fSopenharmony_ci+} 18723af6ab5fSopenharmony_ci+let dd = new D(); 18733af6ab5fSopenharmony_ci\ No newline at end of file 18743af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/constructorImplementationWithDefaultValues.ts b/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/constructorImplementationWithDefaultValues.ts 18753af6ab5fSopenharmony_ciindex bdbcd7f959..c75a4f196b 100644 18763af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/constructorImplementationWithDefaultValues.ts 18773af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/constructorImplementationWithDefaultValues.ts 18783af6ab5fSopenharmony_ci@@ -17,4 +17,8 @@ class E<T extends Date> { 18793af6ab5fSopenharmony_ci constructor(x: T = null) { 18803af6ab5fSopenharmony_ci var y = x; 18813af6ab5fSopenharmony_ci } 18823af6ab5fSopenharmony_ci-} 18833af6ab5fSopenharmony_ci\ No newline at end of file 18843af6ab5fSopenharmony_ci+} 18853af6ab5fSopenharmony_ci+ 18863af6ab5fSopenharmony_ci+let cc = new C(null); 18873af6ab5fSopenharmony_ci+let dd = new D(null); 18883af6ab5fSopenharmony_ci+let ee = new E(null); 18893af6ab5fSopenharmony_ci\ No newline at end of file 18903af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/declarationEmitReadonly.ts b/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/declarationEmitReadonly.ts 18913af6ab5fSopenharmony_ciindex 76b41eabba..ffd568ede1 100644 18923af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/declarationEmitReadonly.ts 18933af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/declarationEmitReadonly.ts 18943af6ab5fSopenharmony_ci@@ -2,4 +2,5 @@ 18953af6ab5fSopenharmony_ci 18963af6ab5fSopenharmony_ci class C { 18973af6ab5fSopenharmony_ci constructor(readonly x: number) {} 18983af6ab5fSopenharmony_ci-} 18993af6ab5fSopenharmony_ci\ No newline at end of file 19003af6ab5fSopenharmony_ci+} 19013af6ab5fSopenharmony_ci+let c7 = new C(1) 19023af6ab5fSopenharmony_ci\ No newline at end of file 19033af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/constructorDeclarations/quotedConstructors.ts b/tests/cases/conformance/classes/constructorDeclarations/quotedConstructors.ts 19043af6ab5fSopenharmony_ciindex c03ce26cc2..e22bf5d126 100644 19053af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/constructorDeclarations/quotedConstructors.ts 19063af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/constructorDeclarations/quotedConstructors.ts 19073af6ab5fSopenharmony_ci@@ -29,3 +29,7 @@ class F { 19083af6ab5fSopenharmony_ci console.log(this); 19093af6ab5fSopenharmony_ci } 19103af6ab5fSopenharmony_ci } 19113af6ab5fSopenharmony_ci+let c3 =new C() 19123af6ab5fSopenharmony_ci+let c4 =new D() 19133af6ab5fSopenharmony_ci+let c5 =new E() 19143af6ab5fSopenharmony_ci+let c6 =new F() 19153af6ab5fSopenharmony_ci\ No newline at end of file 19163af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassOverridesIndexersWithAssignmentCompatibility.ts b/tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassOverridesIndexersWithAssignmentCompatibility.ts 19173af6ab5fSopenharmony_ciindex 20243d55be..7806d4f33e 100644 19183af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassOverridesIndexersWithAssignmentCompatibility.ts 19193af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassOverridesIndexersWithAssignmentCompatibility.ts 19203af6ab5fSopenharmony_ci@@ -14,4 +14,6 @@ class Base2 { 19213af6ab5fSopenharmony_ci // ok, use assignment compatibility 19223af6ab5fSopenharmony_ci class Derived2 extends Base2 { 19233af6ab5fSopenharmony_ci [x: number]: any; 19243af6ab5fSopenharmony_ci-} 19253af6ab5fSopenharmony_ci\ No newline at end of file 19263af6ab5fSopenharmony_ci+} 19273af6ab5fSopenharmony_ci+let c1 = new Derived() 19283af6ab5fSopenharmony_ci+let c2 = new Derived2() 19293af6ab5fSopenharmony_ci\ No newline at end of file 19303af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/superInStaticMembers1.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/superInStaticMembers1.ts 19313af6ab5fSopenharmony_cinew file mode 100644 19323af6ab5fSopenharmony_ciindex 0000000000..fd281b1606 19333af6ab5fSopenharmony_ci--- /dev/null 19343af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/superInStaticMembers1.ts 19353af6ab5fSopenharmony_ci@@ -0,0 +1,492 @@ 19363af6ab5fSopenharmony_ci+// @target: es5, es2015, es2021, esnext 19373af6ab5fSopenharmony_ci+// @noTypesAndSymbols: true 19383af6ab5fSopenharmony_ci+ 19393af6ab5fSopenharmony_ci+// @filename: external.ts 19403af6ab5fSopenharmony_ci+export class Reflect {} 19413af6ab5fSopenharmony_ci+export interface Foo {} 19423af6ab5fSopenharmony_ci+export declare namespace Bar { type _ = unknown; } 19433af6ab5fSopenharmony_ci+export const enum Baz {} 19443af6ab5fSopenharmony_ci+export default class {}; 19453af6ab5fSopenharmony_ci+ 19463af6ab5fSopenharmony_ci+// @filename: locals.ts 19473af6ab5fSopenharmony_ci+export {}; 19483af6ab5fSopenharmony_ci+declare class B { static w(): number; } 19493af6ab5fSopenharmony_ci+class C extends B { 19503af6ab5fSopenharmony_ci+ static _ = [ 19513af6ab5fSopenharmony_ci+ (() => { 19523af6ab5fSopenharmony_ci+ var Reflect; // collision (es2015-es2021 only) 19533af6ab5fSopenharmony_ci+ super.w(); 19543af6ab5fSopenharmony_ci+ })(), 19553af6ab5fSopenharmony_ci+ (() => { 19563af6ab5fSopenharmony_ci+ var { Reflect } = { Reflect: null }; // collision (es2015-es2021 only) 19573af6ab5fSopenharmony_ci+ super.w(); 19583af6ab5fSopenharmony_ci+ })(), 19593af6ab5fSopenharmony_ci+ (() => { 19603af6ab5fSopenharmony_ci+ var [Reflect] = [null]; // collision (es2015-es2021 only) 19613af6ab5fSopenharmony_ci+ super.w(); 19623af6ab5fSopenharmony_ci+ })(), 19633af6ab5fSopenharmony_ci+ (() => { 19643af6ab5fSopenharmony_ci+ class Reflect {} // collision (es2015-es2021 only) 19653af6ab5fSopenharmony_ci+ super.w(); 19663af6ab5fSopenharmony_ci+ })(), 19673af6ab5fSopenharmony_ci+ (() => { 19683af6ab5fSopenharmony_ci+ function Reflect() {} // collision (es2015-es2021 only) 19693af6ab5fSopenharmony_ci+ super.w(); 19703af6ab5fSopenharmony_ci+ })(), 19713af6ab5fSopenharmony_ci+ (() => { 19723af6ab5fSopenharmony_ci+ enum Reflect {} // collision (es2015-es2021 only) 19733af6ab5fSopenharmony_ci+ super.w(); 19743af6ab5fSopenharmony_ci+ })(), 19753af6ab5fSopenharmony_ci+ (() => { 19763af6ab5fSopenharmony_ci+ const enum Reflect {} // collision (es2015-es2021 only) 19773af6ab5fSopenharmony_ci+ super.w(); 19783af6ab5fSopenharmony_ci+ })(), 19793af6ab5fSopenharmony_ci+ (() => { 19803af6ab5fSopenharmony_ci+ type Reflect = unknown; // no collision 19813af6ab5fSopenharmony_ci+ super.w(); 19823af6ab5fSopenharmony_ci+ })(), 19833af6ab5fSopenharmony_ci+ (() => { 19843af6ab5fSopenharmony_ci+ interface Reflect {}; // no collision 19853af6ab5fSopenharmony_ci+ super.w(); 19863af6ab5fSopenharmony_ci+ })(), 19873af6ab5fSopenharmony_ci+ (() => { 19883af6ab5fSopenharmony_ci+ (class Reflect {}); // no collision 19893af6ab5fSopenharmony_ci+ super.w(); 19903af6ab5fSopenharmony_ci+ })(), 19913af6ab5fSopenharmony_ci+ (() => { 19923af6ab5fSopenharmony_ci+ (function Reflect() {}); // no collision 19933af6ab5fSopenharmony_ci+ super.w(); 19943af6ab5fSopenharmony_ci+ })(), 19953af6ab5fSopenharmony_ci+ ]; 19963af6ab5fSopenharmony_ci+ 19973af6ab5fSopenharmony_ci+ static { 19983af6ab5fSopenharmony_ci+ var { Reflect } = { Reflect: null }; // collision (es2015-es2021 only) 19993af6ab5fSopenharmony_ci+ super.w(); 20003af6ab5fSopenharmony_ci+ } 20013af6ab5fSopenharmony_ci+ 20023af6ab5fSopenharmony_ci+ static { 20033af6ab5fSopenharmony_ci+ var [Reflect] = [null]; // collision (es2015-es2021 only) 20043af6ab5fSopenharmony_ci+ super.w(); 20053af6ab5fSopenharmony_ci+ } 20063af6ab5fSopenharmony_ci+ 20073af6ab5fSopenharmony_ci+ static { 20083af6ab5fSopenharmony_ci+ var Reflect; // collision (es2015-es2021 only) 20093af6ab5fSopenharmony_ci+ super.w(); 20103af6ab5fSopenharmony_ci+ } 20113af6ab5fSopenharmony_ci+ 20123af6ab5fSopenharmony_ci+ static { 20133af6ab5fSopenharmony_ci+ class Reflect {} // collision (es2015-es2021 only) 20143af6ab5fSopenharmony_ci+ super.w(); 20153af6ab5fSopenharmony_ci+ } 20163af6ab5fSopenharmony_ci+ 20173af6ab5fSopenharmony_ci+ static { 20183af6ab5fSopenharmony_ci+ function Reflect() {} // collision (es2015-es2021 only) 20193af6ab5fSopenharmony_ci+ super.w(); 20203af6ab5fSopenharmony_ci+ } 20213af6ab5fSopenharmony_ci+ 20223af6ab5fSopenharmony_ci+ static { 20233af6ab5fSopenharmony_ci+ enum Reflect {} // collision (es2015-es2021 only) 20243af6ab5fSopenharmony_ci+ super.w(); 20253af6ab5fSopenharmony_ci+ } 20263af6ab5fSopenharmony_ci+ 20273af6ab5fSopenharmony_ci+ static { 20283af6ab5fSopenharmony_ci+ const enum Reflect {} // collision (es2015-es2021 only) 20293af6ab5fSopenharmony_ci+ super.w(); 20303af6ab5fSopenharmony_ci+ } 20313af6ab5fSopenharmony_ci+ 20323af6ab5fSopenharmony_ci+ static { 20333af6ab5fSopenharmony_ci+ type Reflect = unknown; // no collision 20343af6ab5fSopenharmony_ci+ super.w(); 20353af6ab5fSopenharmony_ci+ } 20363af6ab5fSopenharmony_ci+ 20373af6ab5fSopenharmony_ci+ static { 20383af6ab5fSopenharmony_ci+ interface Reflect {} // no collision 20393af6ab5fSopenharmony_ci+ super.w(); 20403af6ab5fSopenharmony_ci+ } 20413af6ab5fSopenharmony_ci+ 20423af6ab5fSopenharmony_ci+ static { 20433af6ab5fSopenharmony_ci+ (class Reflect {}) // no collision 20443af6ab5fSopenharmony_ci+ super.w(); 20453af6ab5fSopenharmony_ci+ } 20463af6ab5fSopenharmony_ci+ 20473af6ab5fSopenharmony_ci+ static { 20483af6ab5fSopenharmony_ci+ (function Reflect() {}) // no collision 20493af6ab5fSopenharmony_ci+ super.w(); 20503af6ab5fSopenharmony_ci+ } 20513af6ab5fSopenharmony_ci+} 20523af6ab5fSopenharmony_ci+ 20533af6ab5fSopenharmony_ci+// @filename: varInContainingScopeStaticField1.ts 20543af6ab5fSopenharmony_ci+export {}; 20553af6ab5fSopenharmony_ci+declare class B { static w(): number; } 20563af6ab5fSopenharmony_ci+var Reflect = null; // collision (es2015-es2021 only) 20573af6ab5fSopenharmony_ci+class C extends B { 20583af6ab5fSopenharmony_ci+ static _ = super.w(); 20593af6ab5fSopenharmony_ci+} 20603af6ab5fSopenharmony_ci+ 20613af6ab5fSopenharmony_ci+// @filename: varInContainingScopeStaticField2.ts 20623af6ab5fSopenharmony_ci+export {}; 20633af6ab5fSopenharmony_ci+declare class B { static w(): number; } 20643af6ab5fSopenharmony_ci+var { Reflect } = { Reflect: null }; // collision (es2015-es2021 only) 20653af6ab5fSopenharmony_ci+class C extends B { 20663af6ab5fSopenharmony_ci+ static _ = super.w(); 20673af6ab5fSopenharmony_ci+} 20683af6ab5fSopenharmony_ci+ 20693af6ab5fSopenharmony_ci+// @filename: varInContainingScopeStaticField3.ts 20703af6ab5fSopenharmony_ci+export {}; 20713af6ab5fSopenharmony_ci+declare class B { static w(): number; } 20723af6ab5fSopenharmony_ci+var [Reflect] = [null]; // collision (es2015-es2021 only) 20733af6ab5fSopenharmony_ci+class C extends B { 20743af6ab5fSopenharmony_ci+ static _ = super.w(); 20753af6ab5fSopenharmony_ci+} 20763af6ab5fSopenharmony_ci+ 20773af6ab5fSopenharmony_ci+// @filename: varInContainingScopeStaticBlock1.ts 20783af6ab5fSopenharmony_ci+export {}; 20793af6ab5fSopenharmony_ci+declare class B { static w(): number; } 20803af6ab5fSopenharmony_ci+var Reflect = null; // collision (es2015-es2021 only) 20813af6ab5fSopenharmony_ci+class C extends B { 20823af6ab5fSopenharmony_ci+ static { super.w(); } 20833af6ab5fSopenharmony_ci+} 20843af6ab5fSopenharmony_ci+ 20853af6ab5fSopenharmony_ci+// @filename: varInContainingScopeStaticBlock2.ts 20863af6ab5fSopenharmony_ci+export {}; 20873af6ab5fSopenharmony_ci+declare class B { static w(): number; } 20883af6ab5fSopenharmony_ci+var { Reflect } = { Reflect: null }; // collision (es2015-es2021 only) 20893af6ab5fSopenharmony_ci+class C extends B { 20903af6ab5fSopenharmony_ci+ static { super.w(); } 20913af6ab5fSopenharmony_ci+} 20923af6ab5fSopenharmony_ci+ 20933af6ab5fSopenharmony_ci+// @filename: varInContainingScopeStaticBlock3.ts 20943af6ab5fSopenharmony_ci+export {}; 20953af6ab5fSopenharmony_ci+declare class B { static w(): number; } 20963af6ab5fSopenharmony_ci+var [Reflect] = [null]; // collision (es2015-es2021 only) 20973af6ab5fSopenharmony_ci+class C extends B { 20983af6ab5fSopenharmony_ci+ static { super.w(); } 20993af6ab5fSopenharmony_ci+} 21003af6ab5fSopenharmony_ci+ 21013af6ab5fSopenharmony_ci+// @filename: classDeclInContainingScopeStaticField.ts 21023af6ab5fSopenharmony_ci+export {}; 21033af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21043af6ab5fSopenharmony_ci+class Reflect {} // collision (es2015-es2021 only) 21053af6ab5fSopenharmony_ci+class C extends B { 21063af6ab5fSopenharmony_ci+ static _ = super.w(); 21073af6ab5fSopenharmony_ci+} 21083af6ab5fSopenharmony_ci+ 21093af6ab5fSopenharmony_ci+// @filename: classDeclInContainingScopeStaticBlock.ts 21103af6ab5fSopenharmony_ci+export {}; 21113af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21123af6ab5fSopenharmony_ci+class Reflect {} // collision (es2015-es2021 only) 21133af6ab5fSopenharmony_ci+class C extends B { 21143af6ab5fSopenharmony_ci+ static { super.w(); } 21153af6ab5fSopenharmony_ci+} 21163af6ab5fSopenharmony_ci+ 21173af6ab5fSopenharmony_ci+// @filename: funcDeclInContainingScopeStaticField.ts 21183af6ab5fSopenharmony_ci+export {}; 21193af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21203af6ab5fSopenharmony_ci+function Reflect() {} // collision (es2015-es2021 only) 21213af6ab5fSopenharmony_ci+class C extends B { 21223af6ab5fSopenharmony_ci+ static _ = super.w(); 21233af6ab5fSopenharmony_ci+} 21243af6ab5fSopenharmony_ci+ 21253af6ab5fSopenharmony_ci+// @filename: funcDeclInContainingScopeStaticBlock.ts 21263af6ab5fSopenharmony_ci+export {}; 21273af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21283af6ab5fSopenharmony_ci+function Reflect() {} // collision (es2015-es2021 only) 21293af6ab5fSopenharmony_ci+class C extends B { 21303af6ab5fSopenharmony_ci+ static { super.w(); } 21313af6ab5fSopenharmony_ci+} 21323af6ab5fSopenharmony_ci+ 21333af6ab5fSopenharmony_ci+// @filename: valueNamespaceInContainingScopeStaticField.ts 21343af6ab5fSopenharmony_ci+export {}; 21353af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21363af6ab5fSopenharmony_ci+namespace Reflect {} // collision (es2015-es2021 only) 21373af6ab5fSopenharmony_ci+class C extends B { 21383af6ab5fSopenharmony_ci+ static _ = super.w(); 21393af6ab5fSopenharmony_ci+} 21403af6ab5fSopenharmony_ci+ 21413af6ab5fSopenharmony_ci+// @filename: valueNamespaceInContainingScopeStaticBlock.ts 21423af6ab5fSopenharmony_ci+export {}; 21433af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21443af6ab5fSopenharmony_ci+namespace Reflect {} // collision (es2015-es2021 only) 21453af6ab5fSopenharmony_ci+class C extends B { 21463af6ab5fSopenharmony_ci+ static { super.w(); } 21473af6ab5fSopenharmony_ci+} 21483af6ab5fSopenharmony_ci+ 21493af6ab5fSopenharmony_ci+// @filename: enumInContainingScopeStaticField.ts 21503af6ab5fSopenharmony_ci+export {}; 21513af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21523af6ab5fSopenharmony_ci+enum Reflect {} // collision (es2015-es2021 only) 21533af6ab5fSopenharmony_ci+class C extends B { 21543af6ab5fSopenharmony_ci+ static _ = super.w(); 21553af6ab5fSopenharmony_ci+} 21563af6ab5fSopenharmony_ci+ 21573af6ab5fSopenharmony_ci+// @filename: enumInContainingScopeStaticBlock.ts 21583af6ab5fSopenharmony_ci+export {}; 21593af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21603af6ab5fSopenharmony_ci+enum Reflect {} // collision (es2015-es2021 only) 21613af6ab5fSopenharmony_ci+class C extends B { 21623af6ab5fSopenharmony_ci+ static { super.w(); } 21633af6ab5fSopenharmony_ci+} 21643af6ab5fSopenharmony_ci+ 21653af6ab5fSopenharmony_ci+// @filename: constEnumInContainingScopeStaticField.ts 21663af6ab5fSopenharmony_ci+export {}; 21673af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21683af6ab5fSopenharmony_ci+const enum Reflect {} // collision (es2015-es2021 only) 21693af6ab5fSopenharmony_ci+class C extends B { 21703af6ab5fSopenharmony_ci+ static _ = super.w(); 21713af6ab5fSopenharmony_ci+} 21723af6ab5fSopenharmony_ci+ 21733af6ab5fSopenharmony_ci+// @filename: constEnumInContainingScopeStaticBlock.ts 21743af6ab5fSopenharmony_ci+export {}; 21753af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21763af6ab5fSopenharmony_ci+const enum Reflect {} // collision (es2015-es2021 only) 21773af6ab5fSopenharmony_ci+class C extends B { 21783af6ab5fSopenharmony_ci+ static { super.w(); } 21793af6ab5fSopenharmony_ci+} 21803af6ab5fSopenharmony_ci+ 21813af6ab5fSopenharmony_ci+// @filename: namespaceImportInContainingScopeStaticField.ts 21823af6ab5fSopenharmony_ci+export {}; 21833af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21843af6ab5fSopenharmony_ci+import * as Reflect from "./external"; // collision (es2015-es2021 only) 21853af6ab5fSopenharmony_ci+class C extends B { 21863af6ab5fSopenharmony_ci+ static _ = super.w(); 21873af6ab5fSopenharmony_ci+} 21883af6ab5fSopenharmony_ci+ 21893af6ab5fSopenharmony_ci+// @filename: namespaceImportInContainingScopeStaticBlock.ts 21903af6ab5fSopenharmony_ci+export {}; 21913af6ab5fSopenharmony_ci+declare class B { static w(): number; } 21923af6ab5fSopenharmony_ci+import * as Reflect from "./external"; // collision (es2015-es2021 only) 21933af6ab5fSopenharmony_ci+class C extends B { 21943af6ab5fSopenharmony_ci+ static { super.w(); } 21953af6ab5fSopenharmony_ci+} 21963af6ab5fSopenharmony_ci+ 21973af6ab5fSopenharmony_ci+// @filename: namedImportInContainingScopeStaticField.ts 21983af6ab5fSopenharmony_ci+export {}; 21993af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22003af6ab5fSopenharmony_ci+import { Reflect } from "./external"; // collision (es2015-es2021 only) 22013af6ab5fSopenharmony_ci+class C extends B { 22023af6ab5fSopenharmony_ci+ static _ = super.w(); 22033af6ab5fSopenharmony_ci+} 22043af6ab5fSopenharmony_ci+ 22053af6ab5fSopenharmony_ci+// @filename: namedImportInContainingScopeStaticBlock.ts 22063af6ab5fSopenharmony_ci+export {}; 22073af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22083af6ab5fSopenharmony_ci+import { Reflect } from "./external"; // collision (es2015-es2021 only) 22093af6ab5fSopenharmony_ci+class C extends B { 22103af6ab5fSopenharmony_ci+ static { super.w(); } 22113af6ab5fSopenharmony_ci+} 22123af6ab5fSopenharmony_ci+ 22133af6ab5fSopenharmony_ci+// @filename: namedImportOfInterfaceInContainingScopeStaticField.ts 22143af6ab5fSopenharmony_ci+export {}; 22153af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22163af6ab5fSopenharmony_ci+import { Foo as Reflect } from "./external"; // collision (es2015-es2021 only, not a type-only import) 22173af6ab5fSopenharmony_ci+class C extends B { 22183af6ab5fSopenharmony_ci+ static _ = super.w(); 22193af6ab5fSopenharmony_ci+} 22203af6ab5fSopenharmony_ci+ 22213af6ab5fSopenharmony_ci+// @filename: namedImportOfInterfaceInContainingScopeStaticBlock.ts 22223af6ab5fSopenharmony_ci+export {}; 22233af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22243af6ab5fSopenharmony_ci+import { Foo as Reflect } from "./external"; // collision (es2015-es2021 only, not a type-only import) 22253af6ab5fSopenharmony_ci+class C extends B { 22263af6ab5fSopenharmony_ci+ static { super.w(); } 22273af6ab5fSopenharmony_ci+} 22283af6ab5fSopenharmony_ci+ 22293af6ab5fSopenharmony_ci+// @filename: namedImportOfUninstantiatedNamespaceInContainingScopeStaticField.ts 22303af6ab5fSopenharmony_ci+export {}; 22313af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22323af6ab5fSopenharmony_ci+import { Bar as Reflect } from "./external"; // collision (es2015-es2021 only, not a type-only import) 22333af6ab5fSopenharmony_ci+class C extends B { 22343af6ab5fSopenharmony_ci+ static _ = super.w(); 22353af6ab5fSopenharmony_ci+} 22363af6ab5fSopenharmony_ci+ 22373af6ab5fSopenharmony_ci+// @filename: namedImportOfUninstantiatedNamespaceInContainingScopeStaticBlock.ts 22383af6ab5fSopenharmony_ci+export {}; 22393af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22403af6ab5fSopenharmony_ci+import { Bar as Reflect } from "./external"; // collision (es2015-es2021 only, not a type-only import) 22413af6ab5fSopenharmony_ci+class C extends B { 22423af6ab5fSopenharmony_ci+ static { super.w(); } 22433af6ab5fSopenharmony_ci+} 22443af6ab5fSopenharmony_ci+ 22453af6ab5fSopenharmony_ci+// @filename: namedImportOfConstEnumInContainingScopeStaticField.ts 22463af6ab5fSopenharmony_ci+export {}; 22473af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22483af6ab5fSopenharmony_ci+import { Baz as Reflect } from "./external"; // collision (es2015-es2021 only) 22493af6ab5fSopenharmony_ci+class C extends B { 22503af6ab5fSopenharmony_ci+ static _ = super.w(); 22513af6ab5fSopenharmony_ci+} 22523af6ab5fSopenharmony_ci+ 22533af6ab5fSopenharmony_ci+// @filename: namedImportOfConstEnumInContainingScopeStaticBlock.ts 22543af6ab5fSopenharmony_ci+export {}; 22553af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22563af6ab5fSopenharmony_ci+import { Baz as Reflect } from "./external"; // collision (es2015-es2021 only) 22573af6ab5fSopenharmony_ci+class C extends B { 22583af6ab5fSopenharmony_ci+ static { super.w(); } 22593af6ab5fSopenharmony_ci+} 22603af6ab5fSopenharmony_ci+ 22613af6ab5fSopenharmony_ci+// @filename: typeOnlyNamedImportInContainingScopeStaticField.ts 22623af6ab5fSopenharmony_ci+export {}; 22633af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22643af6ab5fSopenharmony_ci+import type { Reflect } from "./external"; // no collision 22653af6ab5fSopenharmony_ci+class C extends B { 22663af6ab5fSopenharmony_ci+ static _ = super.w(); 22673af6ab5fSopenharmony_ci+} 22683af6ab5fSopenharmony_ci+ 22693af6ab5fSopenharmony_ci+// @filename: typeOnlyNamedImportInContainingScopeStaticBlock.ts 22703af6ab5fSopenharmony_ci+export {}; 22713af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22723af6ab5fSopenharmony_ci+import type { Reflect } from "./external"; // no collision 22733af6ab5fSopenharmony_ci+class C extends B { 22743af6ab5fSopenharmony_ci+ static { super.w(); } 22753af6ab5fSopenharmony_ci+} 22763af6ab5fSopenharmony_ci+ 22773af6ab5fSopenharmony_ci+// @filename: defaultImportInContainingScopeStaticField.ts 22783af6ab5fSopenharmony_ci+export {}; 22793af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22803af6ab5fSopenharmony_ci+import Reflect from "./external"; // collision (es2015-es2021 only) 22813af6ab5fSopenharmony_ci+class C extends B { 22823af6ab5fSopenharmony_ci+ static _ = super.w(); 22833af6ab5fSopenharmony_ci+} 22843af6ab5fSopenharmony_ci+ 22853af6ab5fSopenharmony_ci+// @filename: defaultImportInContainingScopeStaticBlock.ts 22863af6ab5fSopenharmony_ci+export {}; 22873af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22883af6ab5fSopenharmony_ci+import Reflect from "./external"; // collision (es2015-es2021 only) 22893af6ab5fSopenharmony_ci+class C extends B { 22903af6ab5fSopenharmony_ci+ static { super.w(); } 22913af6ab5fSopenharmony_ci+} 22923af6ab5fSopenharmony_ci+ 22933af6ab5fSopenharmony_ci+// @filename: typeOnlyDefaultImportInContainingScopeStaticField.ts 22943af6ab5fSopenharmony_ci+export {}; 22953af6ab5fSopenharmony_ci+declare class B { static w(): number; } 22963af6ab5fSopenharmony_ci+import type Reflect from "./external"; // no collision 22973af6ab5fSopenharmony_ci+class C extends B { 22983af6ab5fSopenharmony_ci+ static _ = super.w(); 22993af6ab5fSopenharmony_ci+} 23003af6ab5fSopenharmony_ci+ 23013af6ab5fSopenharmony_ci+// @filename: typeOnlyDefaultImportInContainingScopeStaticBlock.ts 23023af6ab5fSopenharmony_ci+export {}; 23033af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23043af6ab5fSopenharmony_ci+import type Reflect from "./external"; // no collision 23053af6ab5fSopenharmony_ci+class C extends B { 23063af6ab5fSopenharmony_ci+ static { super.w(); } 23073af6ab5fSopenharmony_ci+} 23083af6ab5fSopenharmony_ci+ 23093af6ab5fSopenharmony_ci+// @filename: typeInContainingScopeStaticField.ts 23103af6ab5fSopenharmony_ci+export {}; 23113af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23123af6ab5fSopenharmony_ci+type Reflect = unknown; // no collision 23133af6ab5fSopenharmony_ci+class C extends B { 23143af6ab5fSopenharmony_ci+ static _ = super.w(); 23153af6ab5fSopenharmony_ci+} 23163af6ab5fSopenharmony_ci+ 23173af6ab5fSopenharmony_ci+// @filename: typeInContainingScopeStaticBlock.ts 23183af6ab5fSopenharmony_ci+export {}; 23193af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23203af6ab5fSopenharmony_ci+type Reflect = unknown; // no collision 23213af6ab5fSopenharmony_ci+class C extends B { 23223af6ab5fSopenharmony_ci+ static { super.w(); } 23233af6ab5fSopenharmony_ci+} 23243af6ab5fSopenharmony_ci+ 23253af6ab5fSopenharmony_ci+// @filename: interfaceInContainingScopeStaticField.ts 23263af6ab5fSopenharmony_ci+export {}; 23273af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23283af6ab5fSopenharmony_ci+interface Reflect {}; // no collision 23293af6ab5fSopenharmony_ci+class C extends B { 23303af6ab5fSopenharmony_ci+ static _ = super.w(); 23313af6ab5fSopenharmony_ci+} 23323af6ab5fSopenharmony_ci+ 23333af6ab5fSopenharmony_ci+// @filename: interfaceInContainingScopeStaticBlock.ts 23343af6ab5fSopenharmony_ci+export {}; 23353af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23363af6ab5fSopenharmony_ci+interface Reflect {}; // no collision 23373af6ab5fSopenharmony_ci+class C extends B { 23383af6ab5fSopenharmony_ci+ static { super.w(); } 23393af6ab5fSopenharmony_ci+} 23403af6ab5fSopenharmony_ci+ 23413af6ab5fSopenharmony_ci+// @filename: uninstantiatedNamespaceInContainingScopeStaticField.ts 23423af6ab5fSopenharmony_ci+export {}; 23433af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23443af6ab5fSopenharmony_ci+declare namespace Reflect { type _ = unknown; }; // no collision 23453af6ab5fSopenharmony_ci+class C extends B { 23463af6ab5fSopenharmony_ci+ static _ = super.w(); 23473af6ab5fSopenharmony_ci+} 23483af6ab5fSopenharmony_ci+ 23493af6ab5fSopenharmony_ci+// @filename: uninstantiatedNamespaceInContainingScopeStaticBlock.ts 23503af6ab5fSopenharmony_ci+export {}; 23513af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23523af6ab5fSopenharmony_ci+declare namespace Reflect { type _ = unknown; }; // no collision 23533af6ab5fSopenharmony_ci+class C extends B { 23543af6ab5fSopenharmony_ci+ static { super.w(); } 23553af6ab5fSopenharmony_ci+} 23563af6ab5fSopenharmony_ci+ 23573af6ab5fSopenharmony_ci+// @filename: classExprInContainingScopeStaticField.ts 23583af6ab5fSopenharmony_ci+export {}; 23593af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23603af6ab5fSopenharmony_ci+(class Reflect {}); // no collision 23613af6ab5fSopenharmony_ci+class C extends B { 23623af6ab5fSopenharmony_ci+ static _ = super.w(); 23633af6ab5fSopenharmony_ci+} 23643af6ab5fSopenharmony_ci+ 23653af6ab5fSopenharmony_ci+// @filename: classExprInContainingScopeStaticBlock.ts 23663af6ab5fSopenharmony_ci+export {}; 23673af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23683af6ab5fSopenharmony_ci+(class Reflect {}); // no collision 23693af6ab5fSopenharmony_ci+class C extends B { 23703af6ab5fSopenharmony_ci+ static { super.w(); } 23713af6ab5fSopenharmony_ci+} 23723af6ab5fSopenharmony_ci+ 23733af6ab5fSopenharmony_ci+// @filename: inContainingClassExprStaticField.ts 23743af6ab5fSopenharmony_ci+export {}; 23753af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23763af6ab5fSopenharmony_ci+(class Reflect { // collision (es2015-es2021 only) 23773af6ab5fSopenharmony_ci+ static { 23783af6ab5fSopenharmony_ci+ class C extends B { 23793af6ab5fSopenharmony_ci+ static _ = super.w(); 23803af6ab5fSopenharmony_ci+ } 23813af6ab5fSopenharmony_ci+ } 23823af6ab5fSopenharmony_ci+}); 23833af6ab5fSopenharmony_ci+ 23843af6ab5fSopenharmony_ci+// @filename: inContainingClassExprStaticBlock.ts 23853af6ab5fSopenharmony_ci+export {}; 23863af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23873af6ab5fSopenharmony_ci+(class Reflect { // collision (es2015-es2021 only) 23883af6ab5fSopenharmony_ci+ static { 23893af6ab5fSopenharmony_ci+ class C extends B { 23903af6ab5fSopenharmony_ci+ static { super.w(); } 23913af6ab5fSopenharmony_ci+ } 23923af6ab5fSopenharmony_ci+ } 23933af6ab5fSopenharmony_ci+}); 23943af6ab5fSopenharmony_ci+ 23953af6ab5fSopenharmony_ci+// @filename: funcExprInContainingScopeStaticField.ts 23963af6ab5fSopenharmony_ci+export {}; 23973af6ab5fSopenharmony_ci+declare class B { static w(): number; } 23983af6ab5fSopenharmony_ci+(function Reflect() {}); // no collision 23993af6ab5fSopenharmony_ci+class C extends B { 24003af6ab5fSopenharmony_ci+ static _ = super.w(); 24013af6ab5fSopenharmony_ci+} 24023af6ab5fSopenharmony_ci+ 24033af6ab5fSopenharmony_ci+// @filename: funcExprInContainingScopeStaticBlock.ts 24043af6ab5fSopenharmony_ci+export {}; 24053af6ab5fSopenharmony_ci+declare class B { static w(): number; } 24063af6ab5fSopenharmony_ci+(function Reflect() {}); // no collision 24073af6ab5fSopenharmony_ci+class C extends B { 24083af6ab5fSopenharmony_ci+ static { super.w(); } 24093af6ab5fSopenharmony_ci+} 24103af6ab5fSopenharmony_ci+ 24113af6ab5fSopenharmony_ci+// @filename: inContainingFuncExprStaticField.ts 24123af6ab5fSopenharmony_ci+export {}; 24133af6ab5fSopenharmony_ci+declare class B { static w(): number; } 24143af6ab5fSopenharmony_ci+(function Reflect() { // collision (es2015-es2021 only) 24153af6ab5fSopenharmony_ci+ class C extends B { 24163af6ab5fSopenharmony_ci+ static _ = super.w(); 24173af6ab5fSopenharmony_ci+ } 24183af6ab5fSopenharmony_ci+}); 24193af6ab5fSopenharmony_ci+ 24203af6ab5fSopenharmony_ci+// @filename: inContainingFuncExprStaticBlock.ts 24213af6ab5fSopenharmony_ci+export {}; 24223af6ab5fSopenharmony_ci+declare class B { static w(): number; } 24233af6ab5fSopenharmony_ci+(function Reflect() { // collision (es2015-es2021 only) 24243af6ab5fSopenharmony_ci+ class C extends B { 24253af6ab5fSopenharmony_ci+ static { super.w(); } 24263af6ab5fSopenharmony_ci+ } 24273af6ab5fSopenharmony_ci+}); 24283af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers1.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers1.ts 24293af6ab5fSopenharmony_cinew file mode 100644 24303af6ab5fSopenharmony_ciindex 0000000000..e3bfff9aed 24313af6ab5fSopenharmony_ci--- /dev/null 24323af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers1.ts 24333af6ab5fSopenharmony_ci@@ -0,0 +1,42 @@ 24343af6ab5fSopenharmony_ci+// @target: esnext, es2015 24353af6ab5fSopenharmony_ci+// @useDefineForClassFields: true 24363af6ab5fSopenharmony_ci+// @noTypesAndSymbols: true 24373af6ab5fSopenharmony_ci+ 24383af6ab5fSopenharmony_ci+declare class B { 24393af6ab5fSopenharmony_ci+ static a: any; 24403af6ab5fSopenharmony_ci+ static f(): number; 24413af6ab5fSopenharmony_ci+ a: number; 24423af6ab5fSopenharmony_ci+ f(): number; 24433af6ab5fSopenharmony_ci+} 24443af6ab5fSopenharmony_ci+ 24453af6ab5fSopenharmony_ci+class C extends B { 24463af6ab5fSopenharmony_ci+ static x: any = undefined!; 24473af6ab5fSopenharmony_ci+ static y1 = this.x; 24483af6ab5fSopenharmony_ci+ static y2 = this.x(); 24493af6ab5fSopenharmony_ci+ static y3 = this?.x(); 24503af6ab5fSopenharmony_ci+ static y4 = this[("x")](); 24513af6ab5fSopenharmony_ci+ static y5 = this?.[("x")](); 24523af6ab5fSopenharmony_ci+ static z1 = super.a; 24533af6ab5fSopenharmony_ci+ static z2 = super["a"]; 24543af6ab5fSopenharmony_ci+ static z3 = super.f(); 24553af6ab5fSopenharmony_ci+ static z4 = super["f"](); 24563af6ab5fSopenharmony_ci+ static z5 = super.a = 0; 24573af6ab5fSopenharmony_ci+ static z6 = super.a += 1; 24583af6ab5fSopenharmony_ci+ static z7 = (() => { super.a = 0; })(); 24593af6ab5fSopenharmony_ci+ static z8 = [super.a] = [0]; 24603af6ab5fSopenharmony_ci+ static z9 = [super.a = 0] = [0]; 24613af6ab5fSopenharmony_ci+ static z10 = [...super.a] = [0]; 24623af6ab5fSopenharmony_ci+ static z11 = { x: super.a } = { x: 0 }; 24633af6ab5fSopenharmony_ci+ static z12 = { x: super.a = 0 } = { x: 0 }; 24643af6ab5fSopenharmony_ci+ static z13 = { ...super.a } = { x: 0 }; 24653af6ab5fSopenharmony_ci+ static z14 = ++super.a; 24663af6ab5fSopenharmony_ci+ static z15 = --super.a; 24673af6ab5fSopenharmony_ci+ static z16 = ++super[("a")]; 24683af6ab5fSopenharmony_ci+ static z17 = super.a++; 24693af6ab5fSopenharmony_ci+ static z18 = super.a``; 24703af6ab5fSopenharmony_ci+ 24713af6ab5fSopenharmony_ci+ // these should be unaffected 24723af6ab5fSopenharmony_ci+ x = 1; 24733af6ab5fSopenharmony_ci+ y = this.x; 24743af6ab5fSopenharmony_ci+ z = super.f(); 24753af6ab5fSopenharmony_ci+} 24763af6ab5fSopenharmony_ci\ No newline at end of file 24773af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers2.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers2.ts 24783af6ab5fSopenharmony_cinew file mode 100644 24793af6ab5fSopenharmony_ciindex 0000000000..7e751c3d67 24803af6ab5fSopenharmony_ci--- /dev/null 24813af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers2.ts 24823af6ab5fSopenharmony_ci@@ -0,0 +1,42 @@ 24833af6ab5fSopenharmony_ci+// @target: esnext, es2015 24843af6ab5fSopenharmony_ci+// @useDefineForClassFields: false 24853af6ab5fSopenharmony_ci+// @noTypesAndSymbols: true 24863af6ab5fSopenharmony_ci+ 24873af6ab5fSopenharmony_ci+declare class B { 24883af6ab5fSopenharmony_ci+ static a: any; 24893af6ab5fSopenharmony_ci+ static f(): number; 24903af6ab5fSopenharmony_ci+ a: number; 24913af6ab5fSopenharmony_ci+ f(): number; 24923af6ab5fSopenharmony_ci+} 24933af6ab5fSopenharmony_ci+ 24943af6ab5fSopenharmony_ci+class C extends B { 24953af6ab5fSopenharmony_ci+ static x: any = undefined!; 24963af6ab5fSopenharmony_ci+ static y1 = this.x; 24973af6ab5fSopenharmony_ci+ static y2 = this.x(); 24983af6ab5fSopenharmony_ci+ static y3 = this?.x(); 24993af6ab5fSopenharmony_ci+ static y4 = this[("x")](); 25003af6ab5fSopenharmony_ci+ static y5 = this?.[("x")](); 25013af6ab5fSopenharmony_ci+ static z1 = super.a; 25023af6ab5fSopenharmony_ci+ static z2 = super["a"]; 25033af6ab5fSopenharmony_ci+ static z3 = super.f(); 25043af6ab5fSopenharmony_ci+ static z4 = super["f"](); 25053af6ab5fSopenharmony_ci+ static z5 = super.a = 0; 25063af6ab5fSopenharmony_ci+ static z6 = super.a += 1; 25073af6ab5fSopenharmony_ci+ static z7 = (() => { super.a = 0; })(); 25083af6ab5fSopenharmony_ci+ static z8 = [super.a] = [0]; 25093af6ab5fSopenharmony_ci+ static z9 = [super.a = 0] = [0]; 25103af6ab5fSopenharmony_ci+ static z10 = [...super.a] = [0]; 25113af6ab5fSopenharmony_ci+ static z11 = { x: super.a } = { x: 0 }; 25123af6ab5fSopenharmony_ci+ static z12 = { x: super.a = 0 } = { x: 0 }; 25133af6ab5fSopenharmony_ci+ static z13 = { ...super.a } = { x: 0 }; 25143af6ab5fSopenharmony_ci+ static z14 = ++super.a; 25153af6ab5fSopenharmony_ci+ static z15 = --super.a; 25163af6ab5fSopenharmony_ci+ static z16 = ++super[("a")]; 25173af6ab5fSopenharmony_ci+ static z17 = super.a++; 25183af6ab5fSopenharmony_ci+ static z18 = super.a``; 25193af6ab5fSopenharmony_ci+ 25203af6ab5fSopenharmony_ci+ // these should be unaffected 25213af6ab5fSopenharmony_ci+ x = 1; 25223af6ab5fSopenharmony_ci+ y = this.x; 25233af6ab5fSopenharmony_ci+ z = super.f(); 25243af6ab5fSopenharmony_ci+} 25253af6ab5fSopenharmony_ci\ No newline at end of file 25263af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers3.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers3.ts 25273af6ab5fSopenharmony_cinew file mode 100644 25283af6ab5fSopenharmony_ciindex 0000000000..413c7c54bc 25293af6ab5fSopenharmony_ci--- /dev/null 25303af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers3.ts 25313af6ab5fSopenharmony_ci@@ -0,0 +1,26 @@ 25323af6ab5fSopenharmony_ci+// @target: es5 25333af6ab5fSopenharmony_ci+// @useDefineForClassFields: true 25343af6ab5fSopenharmony_ci+// @noTypesAndSymbols: true 25353af6ab5fSopenharmony_ci+ 25363af6ab5fSopenharmony_ci+declare class B { 25373af6ab5fSopenharmony_ci+ static a: any; 25383af6ab5fSopenharmony_ci+ static f(): number; 25393af6ab5fSopenharmony_ci+ a: number; 25403af6ab5fSopenharmony_ci+ f(): number; 25413af6ab5fSopenharmony_ci+} 25423af6ab5fSopenharmony_ci+ 25433af6ab5fSopenharmony_ci+class C extends B { 25443af6ab5fSopenharmony_ci+ static x: any = undefined!; 25453af6ab5fSopenharmony_ci+ static y1 = this.x; 25463af6ab5fSopenharmony_ci+ static y2 = this.x(); 25473af6ab5fSopenharmony_ci+ static y3 = this?.x(); 25483af6ab5fSopenharmony_ci+ static y4 = this[("x")](); 25493af6ab5fSopenharmony_ci+ static y5 = this?.[("x")](); 25503af6ab5fSopenharmony_ci+ static z3 = super.f(); 25513af6ab5fSopenharmony_ci+ static z4 = super["f"](); 25523af6ab5fSopenharmony_ci+ 25533af6ab5fSopenharmony_ci+ // these should be unaffected 25543af6ab5fSopenharmony_ci+ x = 1; 25553af6ab5fSopenharmony_ci+ y = this.x; 25563af6ab5fSopenharmony_ci+ z = super.f(); 25573af6ab5fSopenharmony_ci+} 25583af6ab5fSopenharmony_ci\ No newline at end of file 25593af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers4.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers4.ts 25603af6ab5fSopenharmony_cinew file mode 100644 25613af6ab5fSopenharmony_ciindex 0000000000..aad82e41dc 25623af6ab5fSopenharmony_ci--- /dev/null 25633af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/thisAndSuperInStaticMembers4.ts 25643af6ab5fSopenharmony_ci@@ -0,0 +1,26 @@ 25653af6ab5fSopenharmony_ci+// @target: es5 25663af6ab5fSopenharmony_ci+// @useDefineForClassFields: false 25673af6ab5fSopenharmony_ci+// @noTypesAndSymbols: true 25683af6ab5fSopenharmony_ci+ 25693af6ab5fSopenharmony_ci+declare class B { 25703af6ab5fSopenharmony_ci+ static a: any; 25713af6ab5fSopenharmony_ci+ static f(): number; 25723af6ab5fSopenharmony_ci+ a: number; 25733af6ab5fSopenharmony_ci+ f(): number; 25743af6ab5fSopenharmony_ci+} 25753af6ab5fSopenharmony_ci+ 25763af6ab5fSopenharmony_ci+class C extends B { 25773af6ab5fSopenharmony_ci+ static x: any = undefined!; 25783af6ab5fSopenharmony_ci+ static y1 = this.x; 25793af6ab5fSopenharmony_ci+ static y2 = this.x(); 25803af6ab5fSopenharmony_ci+ static y3 = this?.x(); 25813af6ab5fSopenharmony_ci+ static y4 = this[("x")](); 25823af6ab5fSopenharmony_ci+ static y5 = this?.[("x")](); 25833af6ab5fSopenharmony_ci+ static z3 = super.f(); 25843af6ab5fSopenharmony_ci+ static z4 = super["f"](); 25853af6ab5fSopenharmony_ci+ 25863af6ab5fSopenharmony_ci+ // these should be unaffected 25873af6ab5fSopenharmony_ci+ x = 1; 25883af6ab5fSopenharmony_ci+ y = this.x; 25893af6ab5fSopenharmony_ci+ z = super.f(); 25903af6ab5fSopenharmony_ci+} 25913af6ab5fSopenharmony_ci\ No newline at end of file 25923af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers.ts 25933af6ab5fSopenharmony_ciindex dcba533725..f05e58dcb5 100644 25943af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers.ts 25953af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers.ts 25963af6ab5fSopenharmony_ci@@ -30,4 +30,5 @@ var t2 = C2.bar(); 25973af6ab5fSopenharmony_ci var r5 = t2.foo + 1; 25983af6ab5fSopenharmony_ci var r6 = t2.bar(); 25993af6ab5fSopenharmony_ci var r7 = new t2(''); 26003af6ab5fSopenharmony_ci- 26013af6ab5fSopenharmony_ci+let b2 = new C(1) 26023af6ab5fSopenharmony_ci+let b3 = new C2('null') 26033af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers10.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers10.ts 26043af6ab5fSopenharmony_cinew file mode 100644 26053af6ab5fSopenharmony_ciindex 0000000000..bb458c87d2 26063af6ab5fSopenharmony_ci--- /dev/null 26073af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers10.ts 26083af6ab5fSopenharmony_ci@@ -0,0 +1,51 @@ 26093af6ab5fSopenharmony_ci+// @target: esnext, es6, es5 26103af6ab5fSopenharmony_ci+// @experimentalDecorators: true 26113af6ab5fSopenharmony_ci+// @useDefineForClassFields: false 26123af6ab5fSopenharmony_ci+ 26133af6ab5fSopenharmony_ci+declare const foo: any; 26143af6ab5fSopenharmony_ci+ 26153af6ab5fSopenharmony_ci+@foo 26163af6ab5fSopenharmony_ci+class C { 26173af6ab5fSopenharmony_ci+ static a = 1; 26183af6ab5fSopenharmony_ci+ static b = this.a + 1; 26193af6ab5fSopenharmony_ci+} 26203af6ab5fSopenharmony_ci+ 26213af6ab5fSopenharmony_ci+@foo 26223af6ab5fSopenharmony_ci+class D extends C { 26233af6ab5fSopenharmony_ci+ static c = 2; 26243af6ab5fSopenharmony_ci+ static d = this.c + 1; 26253af6ab5fSopenharmony_ci+ static e = super.a + this.c + 1; 26263af6ab5fSopenharmony_ci+ static f = () => this.c + 1; 26273af6ab5fSopenharmony_ci+ static ff = function () { this.c + 1 } 26283af6ab5fSopenharmony_ci+ static foo () { 26293af6ab5fSopenharmony_ci+ return this.c + 1; 26303af6ab5fSopenharmony_ci+ } 26313af6ab5fSopenharmony_ci+ static get fa () { 26323af6ab5fSopenharmony_ci+ return this.c + 1; 26333af6ab5fSopenharmony_ci+ } 26343af6ab5fSopenharmony_ci+ static set fa (v: number) { 26353af6ab5fSopenharmony_ci+ this.c = v + 1; 26363af6ab5fSopenharmony_ci+ } 26373af6ab5fSopenharmony_ci+} 26383af6ab5fSopenharmony_ci+ 26393af6ab5fSopenharmony_ci+class CC { 26403af6ab5fSopenharmony_ci+ static a = 1; 26413af6ab5fSopenharmony_ci+ static b = this.a + 1; 26423af6ab5fSopenharmony_ci+} 26433af6ab5fSopenharmony_ci+ 26443af6ab5fSopenharmony_ci+class DD extends CC { 26453af6ab5fSopenharmony_ci+ static c = 2; 26463af6ab5fSopenharmony_ci+ static d = this.c + 1; 26473af6ab5fSopenharmony_ci+ static e = super.a + this.c + 1; 26483af6ab5fSopenharmony_ci+ static f = () => this.c + 1; 26493af6ab5fSopenharmony_ci+ static ff = function () { this.c + 1 } 26503af6ab5fSopenharmony_ci+ static foo () { 26513af6ab5fSopenharmony_ci+ return this.c + 1; 26523af6ab5fSopenharmony_ci+ } 26533af6ab5fSopenharmony_ci+ static get fa () { 26543af6ab5fSopenharmony_ci+ return this.c + 1; 26553af6ab5fSopenharmony_ci+ } 26563af6ab5fSopenharmony_ci+ static set fa (v: number) { 26573af6ab5fSopenharmony_ci+ this.c = v + 1; 26583af6ab5fSopenharmony_ci+ } 26593af6ab5fSopenharmony_ci+} 26603af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers11.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers11.ts 26613af6ab5fSopenharmony_cinew file mode 100644 26623af6ab5fSopenharmony_ciindex 0000000000..6c4025bc47 26633af6ab5fSopenharmony_ci--- /dev/null 26643af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers11.ts 26653af6ab5fSopenharmony_ci@@ -0,0 +1,51 @@ 26663af6ab5fSopenharmony_ci+// @target: esnext, es6, es5 26673af6ab5fSopenharmony_ci+// @experimentalDecorators: true 26683af6ab5fSopenharmony_ci+// @useDefineForClassFields: true 26693af6ab5fSopenharmony_ci+ 26703af6ab5fSopenharmony_ci+declare const foo: any; 26713af6ab5fSopenharmony_ci+ 26723af6ab5fSopenharmony_ci+@foo 26733af6ab5fSopenharmony_ci+class C { 26743af6ab5fSopenharmony_ci+ static a = 1; 26753af6ab5fSopenharmony_ci+ static b = this.a + 1; 26763af6ab5fSopenharmony_ci+} 26773af6ab5fSopenharmony_ci+ 26783af6ab5fSopenharmony_ci+@foo 26793af6ab5fSopenharmony_ci+class D extends C { 26803af6ab5fSopenharmony_ci+ static c = 2; 26813af6ab5fSopenharmony_ci+ static d = this.c + 1; 26823af6ab5fSopenharmony_ci+ static e = super.a + this.c + 1; 26833af6ab5fSopenharmony_ci+ static f = () => this.c + 1; 26843af6ab5fSopenharmony_ci+ static ff = function () { this.c + 1 } 26853af6ab5fSopenharmony_ci+ static foo () { 26863af6ab5fSopenharmony_ci+ return this.c + 1; 26873af6ab5fSopenharmony_ci+ } 26883af6ab5fSopenharmony_ci+ static get fa () { 26893af6ab5fSopenharmony_ci+ return this.c + 1; 26903af6ab5fSopenharmony_ci+ } 26913af6ab5fSopenharmony_ci+ static set fa (v: number) { 26923af6ab5fSopenharmony_ci+ this.c = v + 1; 26933af6ab5fSopenharmony_ci+ } 26943af6ab5fSopenharmony_ci+} 26953af6ab5fSopenharmony_ci+ 26963af6ab5fSopenharmony_ci+class CC { 26973af6ab5fSopenharmony_ci+ static a = 1; 26983af6ab5fSopenharmony_ci+ static b = this.a + 1; 26993af6ab5fSopenharmony_ci+} 27003af6ab5fSopenharmony_ci+ 27013af6ab5fSopenharmony_ci+class DD extends CC { 27023af6ab5fSopenharmony_ci+ static c = 2; 27033af6ab5fSopenharmony_ci+ static d = this.c + 1; 27043af6ab5fSopenharmony_ci+ static e = super.a + this.c + 1; 27053af6ab5fSopenharmony_ci+ static f = () => this.c + 1; 27063af6ab5fSopenharmony_ci+ static ff = function () { this.c + 1 } 27073af6ab5fSopenharmony_ci+ static foo () { 27083af6ab5fSopenharmony_ci+ return this.c + 1; 27093af6ab5fSopenharmony_ci+ } 27103af6ab5fSopenharmony_ci+ static get fa () { 27113af6ab5fSopenharmony_ci+ return this.c + 1; 27123af6ab5fSopenharmony_ci+ } 27133af6ab5fSopenharmony_ci+ static set fa (v: number) { 27143af6ab5fSopenharmony_ci+ this.c = v + 1; 27153af6ab5fSopenharmony_ci+ } 27163af6ab5fSopenharmony_ci+} 27173af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers12.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers12.ts 27183af6ab5fSopenharmony_cinew file mode 100644 27193af6ab5fSopenharmony_ciindex 0000000000..041089512b 27203af6ab5fSopenharmony_ci--- /dev/null 27213af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers12.ts 27223af6ab5fSopenharmony_ci@@ -0,0 +1,10 @@ 27233af6ab5fSopenharmony_ci+// @target: esnext, es6, es5 27243af6ab5fSopenharmony_ci+// @useDefineForClassFields: false 27253af6ab5fSopenharmony_ci+ 27263af6ab5fSopenharmony_ci+class C { 27273af6ab5fSopenharmony_ci+ static readonly c: "foo" = "foo" 27283af6ab5fSopenharmony_ci+ static bar = class Inner { 27293af6ab5fSopenharmony_ci+ static [this.c] = 123; 27303af6ab5fSopenharmony_ci+ [this.c] = 123; 27313af6ab5fSopenharmony_ci+ } 27323af6ab5fSopenharmony_ci+} 27333af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers13.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers13.ts 27343af6ab5fSopenharmony_cinew file mode 100644 27353af6ab5fSopenharmony_ciindex 0000000000..6c965e0e2d 27363af6ab5fSopenharmony_ci--- /dev/null 27373af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers13.ts 27383af6ab5fSopenharmony_ci@@ -0,0 +1,10 @@ 27393af6ab5fSopenharmony_ci+// @target: esnext, es6, es5 27403af6ab5fSopenharmony_ci+// @useDefineForClassFields: true 27413af6ab5fSopenharmony_ci+ 27423af6ab5fSopenharmony_ci+class C { 27433af6ab5fSopenharmony_ci+ static readonly c: "foo" = "foo" 27443af6ab5fSopenharmony_ci+ static bar = class Inner { 27453af6ab5fSopenharmony_ci+ static [this.c] = 123; 27463af6ab5fSopenharmony_ci+ [this.c] = 123; 27473af6ab5fSopenharmony_ci+ } 27483af6ab5fSopenharmony_ci+} 27493af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers3.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers3.ts 27503af6ab5fSopenharmony_cinew file mode 100644 27513af6ab5fSopenharmony_ciindex 0000000000..27541ce361 27523af6ab5fSopenharmony_ci--- /dev/null 27533af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers3.ts 27543af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 27553af6ab5fSopenharmony_ci+// @target: esnext, es6, es5 27563af6ab5fSopenharmony_ci+// @useDefineForClassFields: false 27573af6ab5fSopenharmony_ci+class C { 27583af6ab5fSopenharmony_ci+ static a = 1; 27593af6ab5fSopenharmony_ci+ static b = this.a + 1; 27603af6ab5fSopenharmony_ci+} 27613af6ab5fSopenharmony_ci+ 27623af6ab5fSopenharmony_ci+class D extends C { 27633af6ab5fSopenharmony_ci+ static c = 2; 27643af6ab5fSopenharmony_ci+ static d = this.c + 1; 27653af6ab5fSopenharmony_ci+ static e = super.a + this.c + 1; 27663af6ab5fSopenharmony_ci+} 27673af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers4.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers4.ts 27683af6ab5fSopenharmony_cinew file mode 100644 27693af6ab5fSopenharmony_ciindex 0000000000..0d08423bb9 27703af6ab5fSopenharmony_ci--- /dev/null 27713af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers4.ts 27723af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 27733af6ab5fSopenharmony_ci+// @target: esnext, es6, es5 27743af6ab5fSopenharmony_ci+// @useDefineForClassFields: true 27753af6ab5fSopenharmony_ci+class C { 27763af6ab5fSopenharmony_ci+ static a = 1; 27773af6ab5fSopenharmony_ci+ static b = this.a + 1; 27783af6ab5fSopenharmony_ci+} 27793af6ab5fSopenharmony_ci+ 27803af6ab5fSopenharmony_ci+class D extends C { 27813af6ab5fSopenharmony_ci+ static c = 2; 27823af6ab5fSopenharmony_ci+ static d = this.c + 1; 27833af6ab5fSopenharmony_ci+ static e = super.a + this.c + 1; 27843af6ab5fSopenharmony_ci+} 27853af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers5.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers5.ts 27863af6ab5fSopenharmony_cinew file mode 100644 27873af6ab5fSopenharmony_ciindex 0000000000..db6e8a76c6 27883af6ab5fSopenharmony_ci--- /dev/null 27893af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers5.ts 27903af6ab5fSopenharmony_ci@@ -0,0 +1,9 @@ 27913af6ab5fSopenharmony_ci+// @target: esnext, es6, es5 27923af6ab5fSopenharmony_ci+ 27933af6ab5fSopenharmony_ci+class C { 27943af6ab5fSopenharmony_ci+ static create = () => new this("yep") 27953af6ab5fSopenharmony_ci+ 27963af6ab5fSopenharmony_ci+ constructor (private foo: string) { 27973af6ab5fSopenharmony_ci+ 27983af6ab5fSopenharmony_ci+ } 27993af6ab5fSopenharmony_ci+} 28003af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers6.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers6.ts 28013af6ab5fSopenharmony_cinew file mode 100644 28023af6ab5fSopenharmony_ciindex 0000000000..b27d0855a2 28033af6ab5fSopenharmony_ci--- /dev/null 28043af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers6.ts 28053af6ab5fSopenharmony_ci@@ -0,0 +1,7 @@ 28063af6ab5fSopenharmony_ci+class C { 28073af6ab5fSopenharmony_ci+ static f = 1 28083af6ab5fSopenharmony_ci+} 28093af6ab5fSopenharmony_ci+ 28103af6ab5fSopenharmony_ci+class D extends C { 28113af6ab5fSopenharmony_ci+ static c = super(); 28123af6ab5fSopenharmony_ci+} 28133af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers7.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers7.ts 28143af6ab5fSopenharmony_cinew file mode 100644 28153af6ab5fSopenharmony_ciindex 0000000000..1a2d9cd2e2 28163af6ab5fSopenharmony_ci--- /dev/null 28173af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers7.ts 28183af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 28193af6ab5fSopenharmony_ci+// @target: esnext, es6, es5 28203af6ab5fSopenharmony_ci+ 28213af6ab5fSopenharmony_ci+class C { 28223af6ab5fSopenharmony_ci+ static a = 1; 28233af6ab5fSopenharmony_ci+ static b = this.a + 1; 28243af6ab5fSopenharmony_ci+} 28253af6ab5fSopenharmony_ci+ 28263af6ab5fSopenharmony_ci+class D extends C { 28273af6ab5fSopenharmony_ci+ static c = 2; 28283af6ab5fSopenharmony_ci+ static d = this.c + 1; 28293af6ab5fSopenharmony_ci+ static e = 1 + (super.a) + (this.c + 1) + 1; 28303af6ab5fSopenharmony_ci+} 28313af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers8.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers8.ts 28323af6ab5fSopenharmony_cinew file mode 100644 28333af6ab5fSopenharmony_ciindex 0000000000..8b26476f14 28343af6ab5fSopenharmony_ci--- /dev/null 28353af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers8.ts 28363af6ab5fSopenharmony_ci@@ -0,0 +1,19 @@ 28373af6ab5fSopenharmony_ci+// @target: esnext, es6, es5 28383af6ab5fSopenharmony_ci+ 28393af6ab5fSopenharmony_ci+class C { 28403af6ab5fSopenharmony_ci+ static f = 1; 28413af6ab5fSopenharmony_ci+ static arrowFunctionBoundary = () => this.f + 1; 28423af6ab5fSopenharmony_ci+ static functionExprBoundary = function () { return this.f + 2 }; 28433af6ab5fSopenharmony_ci+ static classExprBoundary = class { a = this.f + 3 }; 28443af6ab5fSopenharmony_ci+ static functionAndClassDeclBoundary = (() => { 28453af6ab5fSopenharmony_ci+ function foo () { 28463af6ab5fSopenharmony_ci+ return this.f + 4 28473af6ab5fSopenharmony_ci+ } 28483af6ab5fSopenharmony_ci+ class CC { 28493af6ab5fSopenharmony_ci+ a = this.f + 5 28503af6ab5fSopenharmony_ci+ method () { 28513af6ab5fSopenharmony_ci+ return this.f + 6 28523af6ab5fSopenharmony_ci+ } 28533af6ab5fSopenharmony_ci+ } 28543af6ab5fSopenharmony_ci+ })(); 28553af6ab5fSopenharmony_ci+} 28563af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers9.ts b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers9.ts 28573af6ab5fSopenharmony_cinew file mode 100644 28583af6ab5fSopenharmony_ciindex 0000000000..0a648d2fa0 28593af6ab5fSopenharmony_ci--- /dev/null 28603af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/instanceAndStaticMembers/typeOfThisInStaticMembers9.ts 28613af6ab5fSopenharmony_ci@@ -0,0 +1,22 @@ 28623af6ab5fSopenharmony_ci+// @target: esnext, es6, es5 28633af6ab5fSopenharmony_ci+ 28643af6ab5fSopenharmony_ci+class C { 28653af6ab5fSopenharmony_ci+ static f = 1 28663af6ab5fSopenharmony_ci+} 28673af6ab5fSopenharmony_ci+ 28683af6ab5fSopenharmony_ci+class D extends C { 28693af6ab5fSopenharmony_ci+ static arrowFunctionBoundary = () => super.f + 1; 28703af6ab5fSopenharmony_ci+ static functionExprBoundary = function () { return super.f + 2 }; 28713af6ab5fSopenharmony_ci+ static classExprBoundary = class { a = super.f + 3 }; 28723af6ab5fSopenharmony_ci+ static functionAndClassDeclBoundary = (() => { 28733af6ab5fSopenharmony_ci+ function foo () { 28743af6ab5fSopenharmony_ci+ return super.f + 4 28753af6ab5fSopenharmony_ci+ } 28763af6ab5fSopenharmony_ci+ class C { 28773af6ab5fSopenharmony_ci+ a = super.f + 5 28783af6ab5fSopenharmony_ci+ method () { 28793af6ab5fSopenharmony_ci+ return super.f +6 28803af6ab5fSopenharmony_ci+ } 28813af6ab5fSopenharmony_ci+ } 28823af6ab5fSopenharmony_ci+ })(); 28833af6ab5fSopenharmony_ci+} 28843af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/privateNames/privateNameComputedPropertyName3.ts b/tests/cases/conformance/classes/members/privateNames/privateNameComputedPropertyName3.ts 28853af6ab5fSopenharmony_ciindex 09573f98c9..f57d3afc8b 100644 28863af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/members/privateNames/privateNameComputedPropertyName3.ts 28873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/privateNames/privateNameComputedPropertyName3.ts 28883af6ab5fSopenharmony_ci@@ -23,3 +23,5 @@ class Foo { 28893af6ab5fSopenharmony_ci } 28903af6ab5fSopenharmony_ci 28913af6ab5fSopenharmony_ci console.log(new Foo("NAME").getValue(100)); 28923af6ab5fSopenharmony_ci+ 28933af6ab5fSopenharmony_ci+let ff = new Foo(null) 28943af6ab5fSopenharmony_ci\ No newline at end of file 28953af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/privateNames/privateNameFieldAccess.ts b/tests/cases/conformance/classes/members/privateNames/privateNameFieldAccess.ts 28963af6ab5fSopenharmony_ciindex 4c02159bfa..af502334e7 100644 28973af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/members/privateNames/privateNameFieldAccess.ts 28983af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/privateNames/privateNameFieldAccess.ts 28993af6ab5fSopenharmony_ci@@ -6,3 +6,4 @@ class A { 29003af6ab5fSopenharmony_ci console.log(this.#myField); 29013af6ab5fSopenharmony_ci } 29023af6ab5fSopenharmony_ci } 29033af6ab5fSopenharmony_ci+let aa = new A(); 29043af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/privateNames/privateNameHashCharName.ts b/tests/cases/conformance/classes/members/privateNames/privateNameHashCharName.ts 29053af6ab5fSopenharmony_cinew file mode 100644 29063af6ab5fSopenharmony_ciindex 0000000000..4a076565bf 29073af6ab5fSopenharmony_ci--- /dev/null 29083af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/privateNames/privateNameHashCharName.ts 29093af6ab5fSopenharmony_ci@@ -0,0 +1,11 @@ 29103af6ab5fSopenharmony_ci+// @target: es6 29113af6ab5fSopenharmony_ci+ 29123af6ab5fSopenharmony_ci+# 29133af6ab5fSopenharmony_ci+ 29143af6ab5fSopenharmony_ci+class C { 29153af6ab5fSopenharmony_ci+ # 29163af6ab5fSopenharmony_ci+ 29173af6ab5fSopenharmony_ci+ m() { 29183af6ab5fSopenharmony_ci+ this.# 29193af6ab5fSopenharmony_ci+ } 29203af6ab5fSopenharmony_ci+} 29213af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/privateNames/privateNameInInExpression.ts b/tests/cases/conformance/classes/members/privateNames/privateNameInInExpression.ts 29223af6ab5fSopenharmony_cinew file mode 100644 29233af6ab5fSopenharmony_ciindex 0000000000..e274378150 29243af6ab5fSopenharmony_ci--- /dev/null 29253af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/privateNames/privateNameInInExpression.ts 29263af6ab5fSopenharmony_ci@@ -0,0 +1,119 @@ 29273af6ab5fSopenharmony_ci+// @strict: true 29283af6ab5fSopenharmony_ci+// @target: esnext 29293af6ab5fSopenharmony_ci+// @useDefineForClassFields: true 29303af6ab5fSopenharmony_ci+ 29313af6ab5fSopenharmony_ci+class Foo { 29323af6ab5fSopenharmony_ci+ #field = 1; 29333af6ab5fSopenharmony_ci+ static #staticField = 2; 29343af6ab5fSopenharmony_ci+ #method() {} 29353af6ab5fSopenharmony_ci+ static #staticMethod() {} 29363af6ab5fSopenharmony_ci+ 29373af6ab5fSopenharmony_ci+ goodRhs(v: any) { 29383af6ab5fSopenharmony_ci+ const a = #field in v; 29393af6ab5fSopenharmony_ci+ 29403af6ab5fSopenharmony_ci+ const b = #field in v.p1.p2; 29413af6ab5fSopenharmony_ci+ 29423af6ab5fSopenharmony_ci+ const c = #field in (v as {}); 29433af6ab5fSopenharmony_ci+ 29443af6ab5fSopenharmony_ci+ const d = #field in (v as Foo); 29453af6ab5fSopenharmony_ci+ 29463af6ab5fSopenharmony_ci+ const e = #field in (v as never); 29473af6ab5fSopenharmony_ci+ 29483af6ab5fSopenharmony_ci+ for (let f in #field in v as any) { /**/ } // unlikely but valid 29493af6ab5fSopenharmony_ci+ } 29503af6ab5fSopenharmony_ci+ badRhs(v: any) { 29513af6ab5fSopenharmony_ci+ const a = #field in (v as unknown); // Bad - RHS of in must be object type or any 29523af6ab5fSopenharmony_ci+ 29533af6ab5fSopenharmony_ci+ const b = #fiel in v; // Bad - typo in privateID 29543af6ab5fSopenharmony_ci+ 29553af6ab5fSopenharmony_ci+ const c = (#field) in v; // Bad - privateID is not an expression on its own 29563af6ab5fSopenharmony_ci+ 29573af6ab5fSopenharmony_ci+ for (#field in v) { /**/ } // Bad - 'in' not allowed 29583af6ab5fSopenharmony_ci+ 29593af6ab5fSopenharmony_ci+ for (let d in #field in v) { /**/ } // Bad - rhs of in should be a object/any 29603af6ab5fSopenharmony_ci+ } 29613af6ab5fSopenharmony_ci+ whitespace(v: any) { 29623af6ab5fSopenharmony_ci+ const a = v && /*0*/#field/*1*/ 29633af6ab5fSopenharmony_ci+ /*2*/in/*3*/ 29643af6ab5fSopenharmony_ci+ /*4*/v/*5*/ 29653af6ab5fSopenharmony_ci+ } 29663af6ab5fSopenharmony_ci+ flow(u: unknown, n: never, fb: Foo | Bar, fs: FooSub, b: Bar, fsb: FooSub | Bar, fsfb: Foo | FooSub | Bar) { 29673af6ab5fSopenharmony_ci+ 29683af6ab5fSopenharmony_ci+ if (typeof u === 'object') { 29693af6ab5fSopenharmony_ci+ if (#field in n) { 29703af6ab5fSopenharmony_ci+ n; // good n is never 29713af6ab5fSopenharmony_ci+ } 29723af6ab5fSopenharmony_ci+ 29733af6ab5fSopenharmony_ci+ if (#field in u) { 29743af6ab5fSopenharmony_ci+ u; // good u is Foo 29753af6ab5fSopenharmony_ci+ } else { 29763af6ab5fSopenharmony_ci+ u; // good u is object | null 29773af6ab5fSopenharmony_ci+ } 29783af6ab5fSopenharmony_ci+ 29793af6ab5fSopenharmony_ci+ if (u !== null) { 29803af6ab5fSopenharmony_ci+ if (#field in u) { 29813af6ab5fSopenharmony_ci+ u; // good u is Foo 29823af6ab5fSopenharmony_ci+ } else { 29833af6ab5fSopenharmony_ci+ u; // good u is object 29843af6ab5fSopenharmony_ci+ } 29853af6ab5fSopenharmony_ci+ 29863af6ab5fSopenharmony_ci+ if (#method in u) { 29873af6ab5fSopenharmony_ci+ u; // good u is Foo 29883af6ab5fSopenharmony_ci+ } 29893af6ab5fSopenharmony_ci+ 29903af6ab5fSopenharmony_ci+ if (#staticField in u) { 29913af6ab5fSopenharmony_ci+ u; // good u is typeof Foo 29923af6ab5fSopenharmony_ci+ } 29933af6ab5fSopenharmony_ci+ 29943af6ab5fSopenharmony_ci+ if (#staticMethod in u) { 29953af6ab5fSopenharmony_ci+ u; // good u is typeof Foo 29963af6ab5fSopenharmony_ci+ } 29973af6ab5fSopenharmony_ci+ } 29983af6ab5fSopenharmony_ci+ } 29993af6ab5fSopenharmony_ci+ 30003af6ab5fSopenharmony_ci+ if (#field in fb) { 30013af6ab5fSopenharmony_ci+ fb; // good fb is Foo 30023af6ab5fSopenharmony_ci+ } else { 30033af6ab5fSopenharmony_ci+ fb; // good fb is Bar 30043af6ab5fSopenharmony_ci+ } 30053af6ab5fSopenharmony_ci+ 30063af6ab5fSopenharmony_ci+ if (#field in fs) { 30073af6ab5fSopenharmony_ci+ fs; // good fs is FooSub 30083af6ab5fSopenharmony_ci+ } else { 30093af6ab5fSopenharmony_ci+ fs; // good fs is never 30103af6ab5fSopenharmony_ci+ } 30113af6ab5fSopenharmony_ci+ 30123af6ab5fSopenharmony_ci+ if (#field in b) { 30133af6ab5fSopenharmony_ci+ b; // good b is 'Bar & Foo' 30143af6ab5fSopenharmony_ci+ } else { 30153af6ab5fSopenharmony_ci+ b; // good b is Bar 30163af6ab5fSopenharmony_ci+ } 30173af6ab5fSopenharmony_ci+ 30183af6ab5fSopenharmony_ci+ if (#field in fsb) { 30193af6ab5fSopenharmony_ci+ fsb; // good fsb is FooSub 30203af6ab5fSopenharmony_ci+ } else { 30213af6ab5fSopenharmony_ci+ fsb; // good fsb is Bar 30223af6ab5fSopenharmony_ci+ } 30233af6ab5fSopenharmony_ci+ 30243af6ab5fSopenharmony_ci+ if (#field in fsfb) { 30253af6ab5fSopenharmony_ci+ fsfb; // good fsfb is 'Foo | FooSub' 30263af6ab5fSopenharmony_ci+ } else { 30273af6ab5fSopenharmony_ci+ fsfb; // good fsfb is Bar 30283af6ab5fSopenharmony_ci+ } 30293af6ab5fSopenharmony_ci+ 30303af6ab5fSopenharmony_ci+ class Nested { 30313af6ab5fSopenharmony_ci+ m(v: any) { 30323af6ab5fSopenharmony_ci+ if (#field in v) { 30333af6ab5fSopenharmony_ci+ v; // good v is Foo 30343af6ab5fSopenharmony_ci+ } 30353af6ab5fSopenharmony_ci+ } 30363af6ab5fSopenharmony_ci+ } 30373af6ab5fSopenharmony_ci+ } 30383af6ab5fSopenharmony_ci+} 30393af6ab5fSopenharmony_ci+ 30403af6ab5fSopenharmony_ci+class FooSub extends Foo { subTypeOfFoo = true } 30413af6ab5fSopenharmony_ci+class Bar { notFoo = true } 30423af6ab5fSopenharmony_ci+ 30433af6ab5fSopenharmony_ci+function badSyntax(v: Foo) { 30443af6ab5fSopenharmony_ci+ return #field in v; // Bad - outside of class 30453af6ab5fSopenharmony_ci+} 30463af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/privateNames/privateNameInInExpressionTransform.ts b/tests/cases/conformance/classes/members/privateNames/privateNameInInExpressionTransform.ts 30473af6ab5fSopenharmony_cinew file mode 100644 30483af6ab5fSopenharmony_ciindex 0000000000..f7be176373 30493af6ab5fSopenharmony_ci--- /dev/null 30503af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/privateNames/privateNameInInExpressionTransform.ts 30513af6ab5fSopenharmony_ci@@ -0,0 +1,47 @@ 30523af6ab5fSopenharmony_ci+// @target: esnext, es2020 30533af6ab5fSopenharmony_ci+ 30543af6ab5fSopenharmony_ci+class Foo { 30553af6ab5fSopenharmony_ci+ #field = 1; 30563af6ab5fSopenharmony_ci+ #method() {} 30573af6ab5fSopenharmony_ci+ static #staticField= 2; 30583af6ab5fSopenharmony_ci+ static #staticMethod() {} 30593af6ab5fSopenharmony_ci+ 30603af6ab5fSopenharmony_ci+ check(v: any) { 30613af6ab5fSopenharmony_ci+ #field in v; // expect Foo's 'field' WeakMap 30623af6ab5fSopenharmony_ci+ #method in v; // expect Foo's 'instances' WeakSet 30633af6ab5fSopenharmony_ci+ #staticField in v; // expect Foo's constructor 30643af6ab5fSopenharmony_ci+ #staticMethod in v; // expect Foo's constructor 30653af6ab5fSopenharmony_ci+ } 30663af6ab5fSopenharmony_ci+ precedence(v: any) { 30673af6ab5fSopenharmony_ci+ // '==' and '||' have lower precedence than 'in' 30683af6ab5fSopenharmony_ci+ // 'in' naturally has same precedence as 'in' 30693af6ab5fSopenharmony_ci+ // '<<' has higher precedence than 'in' 30703af6ab5fSopenharmony_ci+ 30713af6ab5fSopenharmony_ci+ v == #field in v || v; // Good precedence: (v == (#field in v)) || v 30723af6ab5fSopenharmony_ci+ 30733af6ab5fSopenharmony_ci+ v << #field in v << v; // Good precedence (SyntaxError): (v << #field) in (v << v) 30743af6ab5fSopenharmony_ci+ 30753af6ab5fSopenharmony_ci+ v << #field in v == v; // Good precedence (SyntaxError): ((v << #field) in v) == v 30763af6ab5fSopenharmony_ci+ 30773af6ab5fSopenharmony_ci+ v == #field in v in v; // Good precedence: v == ((#field in v) in v) 30783af6ab5fSopenharmony_ci+ 30793af6ab5fSopenharmony_ci+ #field in v && #field in v; // Good precedence: (#field in v) && (#field in v) 30803af6ab5fSopenharmony_ci+ } 30813af6ab5fSopenharmony_ci+ invalidLHS(v: any) { 30823af6ab5fSopenharmony_ci+ 'prop' in v = 10; 30833af6ab5fSopenharmony_ci+ #field in v = 10; 30843af6ab5fSopenharmony_ci+ } 30853af6ab5fSopenharmony_ci+} 30863af6ab5fSopenharmony_ci+ 30873af6ab5fSopenharmony_ci+class Bar { 30883af6ab5fSopenharmony_ci+ #field = 1; 30893af6ab5fSopenharmony_ci+ check(v: any) { 30903af6ab5fSopenharmony_ci+ #field in v; // expect Bar's 'field' WeakMap 30913af6ab5fSopenharmony_ci+ } 30923af6ab5fSopenharmony_ci+} 30933af6ab5fSopenharmony_ci+ 30943af6ab5fSopenharmony_ci+function syntaxError(v: Foo) { 30953af6ab5fSopenharmony_ci+ return #field in v; // expect `return in v` so runtime will have a syntax error 30963af6ab5fSopenharmony_ci+} 30973af6ab5fSopenharmony_ci+ 30983af6ab5fSopenharmony_ci+export { } 30993af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/privateNames/privateNameInInExpressionUnused.ts b/tests/cases/conformance/classes/members/privateNames/privateNameInInExpressionUnused.ts 31003af6ab5fSopenharmony_cinew file mode 100644 31013af6ab5fSopenharmony_ciindex 0000000000..4b214a2b9e 31023af6ab5fSopenharmony_ci--- /dev/null 31033af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/privateNames/privateNameInInExpressionUnused.ts 31043af6ab5fSopenharmony_ci@@ -0,0 +1,13 @@ 31053af6ab5fSopenharmony_ci+// @strict: true 31063af6ab5fSopenharmony_ci+// @noUnusedLocals: true 31073af6ab5fSopenharmony_ci+// @target: esnext 31083af6ab5fSopenharmony_ci+ 31093af6ab5fSopenharmony_ci+class Foo { 31103af6ab5fSopenharmony_ci+ #unused: undefined; // expect unused error 31113af6ab5fSopenharmony_ci+ #brand: undefined; // expect no error 31123af6ab5fSopenharmony_ci+ 31133af6ab5fSopenharmony_ci+ isFoo(v: any): v is Foo { 31143af6ab5fSopenharmony_ci+ // This should count as using/reading '#brand' 31153af6ab5fSopenharmony_ci+ return #brand in v; 31163af6ab5fSopenharmony_ci+ } 31173af6ab5fSopenharmony_ci+} 31183af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/members/privateNames/privateNamesIncompatibleModifiersJs.ts b/tests/cases/conformance/classes/members/privateNames/privateNamesIncompatibleModifiersJs.ts 31193af6ab5fSopenharmony_cinew file mode 100644 31203af6ab5fSopenharmony_ciindex 0000000000..5154b5e439 31213af6ab5fSopenharmony_ci--- /dev/null 31223af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/members/privateNames/privateNamesIncompatibleModifiersJs.ts 31233af6ab5fSopenharmony_ci@@ -0,0 +1,65 @@ 31243af6ab5fSopenharmony_ci+// @allowJs: true 31253af6ab5fSopenharmony_ci+// @checkJs: true 31263af6ab5fSopenharmony_ci+// @strict: true 31273af6ab5fSopenharmony_ci+// @target: es6 31283af6ab5fSopenharmony_ci+// @outDir: ./out 31293af6ab5fSopenharmony_ci+// @filename: privateNamesIncompatibleModifiersJs.js 31303af6ab5fSopenharmony_ci+ 31313af6ab5fSopenharmony_ci+class A { 31323af6ab5fSopenharmony_ci+ /** 31333af6ab5fSopenharmony_ci+ * @public 31343af6ab5fSopenharmony_ci+ */ 31353af6ab5fSopenharmony_ci+ #a = 1; 31363af6ab5fSopenharmony_ci+ 31373af6ab5fSopenharmony_ci+ /** 31383af6ab5fSopenharmony_ci+ * @private 31393af6ab5fSopenharmony_ci+ */ 31403af6ab5fSopenharmony_ci+ #b = 1; 31413af6ab5fSopenharmony_ci+ 31423af6ab5fSopenharmony_ci+ /** 31433af6ab5fSopenharmony_ci+ * @protected 31443af6ab5fSopenharmony_ci+ */ 31453af6ab5fSopenharmony_ci+ #c = 1; 31463af6ab5fSopenharmony_ci+ 31473af6ab5fSopenharmony_ci+ /** 31483af6ab5fSopenharmony_ci+ * @public 31493af6ab5fSopenharmony_ci+ */ 31503af6ab5fSopenharmony_ci+ #aMethod() { return 1; } 31513af6ab5fSopenharmony_ci+ 31523af6ab5fSopenharmony_ci+ /** 31533af6ab5fSopenharmony_ci+ * @private 31543af6ab5fSopenharmony_ci+ */ 31553af6ab5fSopenharmony_ci+ #bMethod() { return 1; } 31563af6ab5fSopenharmony_ci+ 31573af6ab5fSopenharmony_ci+ /** 31583af6ab5fSopenharmony_ci+ * @protected 31593af6ab5fSopenharmony_ci+ */ 31603af6ab5fSopenharmony_ci+ #cMethod() { return 1; } 31613af6ab5fSopenharmony_ci+ 31623af6ab5fSopenharmony_ci+ /** 31633af6ab5fSopenharmony_ci+ * @public 31643af6ab5fSopenharmony_ci+ */ 31653af6ab5fSopenharmony_ci+ get #aProp() { return 1; } 31663af6ab5fSopenharmony_ci+ /** 31673af6ab5fSopenharmony_ci+ * @public 31683af6ab5fSopenharmony_ci+ */ 31693af6ab5fSopenharmony_ci+ set #aProp(value) { } 31703af6ab5fSopenharmony_ci+ 31713af6ab5fSopenharmony_ci+ /** 31723af6ab5fSopenharmony_ci+ * @private 31733af6ab5fSopenharmony_ci+ */ 31743af6ab5fSopenharmony_ci+ get #bProp() { return 1; } 31753af6ab5fSopenharmony_ci+ /** 31763af6ab5fSopenharmony_ci+ * @private 31773af6ab5fSopenharmony_ci+ */ 31783af6ab5fSopenharmony_ci+ set #bProp(value) { } 31793af6ab5fSopenharmony_ci+ 31803af6ab5fSopenharmony_ci+ /** 31813af6ab5fSopenharmony_ci+ * @protected 31823af6ab5fSopenharmony_ci+ */ 31833af6ab5fSopenharmony_ci+ get #cProp() { return 1; } 31843af6ab5fSopenharmony_ci+ /** 31853af6ab5fSopenharmony_ci+ * @protected 31863af6ab5fSopenharmony_ci+ */ 31873af6ab5fSopenharmony_ci+ set #cProp(value) { } 31883af6ab5fSopenharmony_ci+} 31893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/mixinClassesAnnotated.ts b/tests/cases/conformance/classes/mixinClassesAnnotated.ts 31903af6ab5fSopenharmony_ciindex 62f5e30c9a..8bca7d06d1 100644 31913af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/mixinClassesAnnotated.ts 31923af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/mixinClassesAnnotated.ts 31933af6ab5fSopenharmony_ci@@ -36,6 +36,7 @@ function Tagged<T extends Constructor<{}>>(superClass: T): Constructor<Tagged> & 31943af6ab5fSopenharmony_ci this._tag = "hello"; 31953af6ab5fSopenharmony_ci } 31963af6ab5fSopenharmony_ci } 31973af6ab5fSopenharmony_ci+ let c = new C(); 31983af6ab5fSopenharmony_ci return C; 31993af6ab5fSopenharmony_ci } 32003af6ab5fSopenharmony_ci 32013af6ab5fSopenharmony_ci@@ -65,3 +66,5 @@ class Thing3 extends Thing2 { 32023af6ab5fSopenharmony_ci this.print(); 32033af6ab5fSopenharmony_ci } 32043af6ab5fSopenharmony_ci } 32053af6ab5fSopenharmony_ci+let der = new Derived(1,1,1); 32063af6ab5fSopenharmony_ci+let th3 = new Thing3(''); 32073af6ab5fSopenharmony_ci\ No newline at end of file 32083af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/mixinClassesAnonymous.ts b/tests/cases/conformance/classes/mixinClassesAnonymous.ts 32093af6ab5fSopenharmony_ciindex 0e42288808..aa639e71e3 100644 32103af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/mixinClassesAnonymous.ts 32113af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/mixinClassesAnonymous.ts 32123af6ab5fSopenharmony_ci@@ -62,3 +62,5 @@ const Timestamped = <CT extends Constructor<object>>(Base: CT) => { 32133af6ab5fSopenharmony_ci timestamp = new Date(); 32143af6ab5fSopenharmony_ci }; 32153af6ab5fSopenharmony_ci } 32163af6ab5fSopenharmony_ci+let aa = new Derived(1,1,1); 32173af6ab5fSopenharmony_ci+let bb = new Thing3(''); 32183af6ab5fSopenharmony_ci\ No newline at end of file 32193af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/mixinClassesMembers.ts b/tests/cases/conformance/classes/mixinClassesMembers.ts 32203af6ab5fSopenharmony_ciindex 905518c88f..7deb2ac30b 100644 32213af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/mixinClassesMembers.ts 32223af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/mixinClassesMembers.ts 32233af6ab5fSopenharmony_ci@@ -97,3 +97,8 @@ class C3 extends Mixed3 { 32243af6ab5fSopenharmony_ci } 32253af6ab5fSopenharmony_ci f() { return super.f(); } 32263af6ab5fSopenharmony_ci } 32273af6ab5fSopenharmony_ci+let aa = new C1(''); 32283af6ab5fSopenharmony_ci+let bb = new M1(); 32293af6ab5fSopenharmony_ci+let cc = new M2(); 32303af6ab5fSopenharmony_ci+let dd = new C2(); 32313af6ab5fSopenharmony_ci+let ee = new C3(); 32323af6ab5fSopenharmony_ci\ No newline at end of file 32333af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/propertyMemberDeclarations/abstractProperty.ts b/tests/cases/conformance/classes/propertyMemberDeclarations/abstractProperty.ts 32343af6ab5fSopenharmony_ciindex 5f7266c0ea..7870b163db 100644 32353af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/propertyMemberDeclarations/abstractProperty.ts 32363af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/propertyMemberDeclarations/abstractProperty.ts 32373af6ab5fSopenharmony_ci@@ -14,3 +14,6 @@ class B extends A { 32383af6ab5fSopenharmony_ci class C extends A { 32393af6ab5fSopenharmony_ci protected get x() { return 'C.x' }; 32403af6ab5fSopenharmony_ci } 32413af6ab5fSopenharmony_ci+ 32423af6ab5fSopenharmony_ci+let b = new B(); 32433af6ab5fSopenharmony_ci+let c = new C(); 32443af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/propertyMemberDeclarations/abstractPropertyInitializer.ts b/tests/cases/conformance/classes/propertyMemberDeclarations/abstractPropertyInitializer.ts 32453af6ab5fSopenharmony_cinew file mode 100644 32463af6ab5fSopenharmony_ciindex 0000000000..42a0999748 32473af6ab5fSopenharmony_ci--- /dev/null 32483af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/propertyMemberDeclarations/abstractPropertyInitializer.ts 32493af6ab5fSopenharmony_ci@@ -0,0 +1,5 @@ 32503af6ab5fSopenharmony_ci+// @strict: true 32513af6ab5fSopenharmony_ci+// @declaration: true 32523af6ab5fSopenharmony_ci+abstract class C { 32533af6ab5fSopenharmony_ci+ abstract prop = 1 32543af6ab5fSopenharmony_ci+} 32553af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/propertyMemberDeclarations/instanceMemberInitialization.ts b/tests/cases/conformance/classes/propertyMemberDeclarations/instanceMemberInitialization.ts 32563af6ab5fSopenharmony_ciindex 04b44a6835..d7c518964d 100644 32573af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/propertyMemberDeclarations/instanceMemberInitialization.ts 32583af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/propertyMemberDeclarations/instanceMemberInitialization.ts 32593af6ab5fSopenharmony_ci@@ -4,8 +4,8 @@ class C { 32603af6ab5fSopenharmony_ci 32613af6ab5fSopenharmony_ci var c = new C(); 32623af6ab5fSopenharmony_ci c.x = 3; 32633af6ab5fSopenharmony_ci-var c2 = new C(); 32643af6ab5fSopenharmony_ci-var r = c.x === c2.x; 32653af6ab5fSopenharmony_ci+// var c2 = new C(); 32663af6ab5fSopenharmony_ci+// var r = c.x === c2.x; 32673af6ab5fSopenharmony_ci 32683af6ab5fSopenharmony_ci // #31792 32693af6ab5fSopenharmony_ci 32703af6ab5fSopenharmony_ci@@ -14,4 +14,5 @@ var r = c.x === c2.x; 32713af6ab5fSopenharmony_ci class MyMap<K, V> { 32723af6ab5fSopenharmony_ci constructor(private readonly Map_: { new<K, V>(): any }) {} 32733af6ab5fSopenharmony_ci private readonly store = new this.Map_<K, V>(); 32743af6ab5fSopenharmony_ci-} 32753af6ab5fSopenharmony_ci\ No newline at end of file 32763af6ab5fSopenharmony_ci+} 32773af6ab5fSopenharmony_ci+let mm = new MyMap(null) 32783af6ab5fSopenharmony_ci\ No newline at end of file 32793af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/propertyMemberDeclarations/instanceMemberWithComputedPropertyName2.ts b/tests/cases/conformance/classes/propertyMemberDeclarations/instanceMemberWithComputedPropertyName2.ts 32803af6ab5fSopenharmony_ciindex e597b6b9d9..ed03d54763 100644 32813af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/propertyMemberDeclarations/instanceMemberWithComputedPropertyName2.ts 32823af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/propertyMemberDeclarations/instanceMemberWithComputedPropertyName2.ts 32833af6ab5fSopenharmony_ci@@ -6,3 +6,4 @@ const x = 1; 32843af6ab5fSopenharmony_ci class C { 32853af6ab5fSopenharmony_ci [x]: string; 32863af6ab5fSopenharmony_ci } 32873af6ab5fSopenharmony_ci+let cc = new C(); 32883af6ab5fSopenharmony_ci\ No newline at end of file 32893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/staticFactory1.ts b/tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/staticFactory1.ts 32903af6ab5fSopenharmony_ciindex 5d786cd4cf..0277ffa658 100644 32913af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/staticFactory1.ts 32923af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/staticFactory1.ts 32933af6ab5fSopenharmony_ci@@ -10,4 +10,5 @@ class Derived extends Base { 32943af6ab5fSopenharmony_ci } 32953af6ab5fSopenharmony_ci var d = Derived.create(); 32963af6ab5fSopenharmony_ci 32973af6ab5fSopenharmony_ci-d.foo(); 32983af6ab5fSopenharmony_ci\ No newline at end of file 32993af6ab5fSopenharmony_ci+d.foo(); 33003af6ab5fSopenharmony_ci+let b1 =new Derived() 33013af6ab5fSopenharmony_ci\ No newline at end of file 33023af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/propertyMemberDeclarations/staticAndNonStaticPropertiesSameName.ts b/tests/cases/conformance/classes/propertyMemberDeclarations/staticAndNonStaticPropertiesSameName.ts 33033af6ab5fSopenharmony_ciindex 06a784c782..d3b03f9716 100644 33043af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/propertyMemberDeclarations/staticAndNonStaticPropertiesSameName.ts 33053af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/propertyMemberDeclarations/staticAndNonStaticPropertiesSameName.ts 33063af6ab5fSopenharmony_ci@@ -4,4 +4,5 @@ class C { 33073af6ab5fSopenharmony_ci 33083af6ab5fSopenharmony_ci f() { } 33093af6ab5fSopenharmony_ci static f() { } 33103af6ab5fSopenharmony_ci-} 33113af6ab5fSopenharmony_ci\ No newline at end of file 33123af6ab5fSopenharmony_ci+} 33133af6ab5fSopenharmony_ci+let a4 = new C() 33143af6ab5fSopenharmony_ci\ No newline at end of file 33153af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/propertyMemberDeclarations/staticPropertyAndFunctionWithSameName.ts b/tests/cases/conformance/classes/propertyMemberDeclarations/staticPropertyAndFunctionWithSameName.ts 33163af6ab5fSopenharmony_ciindex 4566ce26f0..4a275f4eef 100644 33173af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/propertyMemberDeclarations/staticPropertyAndFunctionWithSameName.ts 33183af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/propertyMemberDeclarations/staticPropertyAndFunctionWithSameName.ts 33193af6ab5fSopenharmony_ci@@ -6,4 +6,6 @@ class C { 33203af6ab5fSopenharmony_ci class D { 33213af6ab5fSopenharmony_ci static f: number; 33223af6ab5fSopenharmony_ci f() { } 33233af6ab5fSopenharmony_ci-} 33243af6ab5fSopenharmony_ci\ No newline at end of file 33253af6ab5fSopenharmony_ci+} 33263af6ab5fSopenharmony_ci+let a2 =new C() 33273af6ab5fSopenharmony_ci+let a3 = new D() 33283af6ab5fSopenharmony_ci\ No newline at end of file 33293af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/classes/propertyMemberDeclarations/staticPropertyNameConflictsInAmbientContext.ts b/tests/cases/conformance/classes/propertyMemberDeclarations/staticPropertyNameConflictsInAmbientContext.ts 33303af6ab5fSopenharmony_ciindex 198c923b0d..d937176b83 100644 33313af6ab5fSopenharmony_ci--- a/tests/cases/conformance/classes/propertyMemberDeclarations/staticPropertyNameConflictsInAmbientContext.ts 33323af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/classes/propertyMemberDeclarations/staticPropertyNameConflictsInAmbientContext.ts 33333af6ab5fSopenharmony_ci@@ -54,3 +54,13 @@ declare class StaticArgumentsFn { 33343af6ab5fSopenharmony_ci static arguments(): any; // ok 33353af6ab5fSopenharmony_ci arguments(): any; // ok 33363af6ab5fSopenharmony_ci } 33373af6ab5fSopenharmony_ci+let a5 =new StaticName() 33383af6ab5fSopenharmony_ci+let a6 =new StaticNameFn() 33393af6ab5fSopenharmony_ci+let a7 =new StaticLength() 33403af6ab5fSopenharmony_ci+let a8 =new StaticLengthFn() 33413af6ab5fSopenharmony_ci+let a9 =new StaticPrototype() 33423af6ab5fSopenharmony_ci+let a10 =new StaticPrototypeFn() 33433af6ab5fSopenharmony_ci+let a11 =new StaticCaller() 33443af6ab5fSopenharmony_ci+let a12 =new StaticCallerFn() 33453af6ab5fSopenharmony_ci+let a13 =new StaticArguments() 33463af6ab5fSopenharmony_ci+let a14 =new StaticArgumentsFn() 33473af6ab5fSopenharmony_ci\ No newline at end of file 33483af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/assertionTypePredicates2.ts b/tests/cases/conformance/controlFlow/assertionTypePredicates2.ts 33493af6ab5fSopenharmony_cinew file mode 100644 33503af6ab5fSopenharmony_ciindex 0000000000..915c9ae94f 33513af6ab5fSopenharmony_ci--- /dev/null 33523af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/assertionTypePredicates2.ts 33533af6ab5fSopenharmony_ci@@ -0,0 +1,27 @@ 33543af6ab5fSopenharmony_ci+// @allowJs: true 33553af6ab5fSopenharmony_ci+// @checkJs: true 33563af6ab5fSopenharmony_ci+// @outDir: ./out 33573af6ab5fSopenharmony_ci+// @filename: assertionTypePredicates2.js 33583af6ab5fSopenharmony_ci+ 33593af6ab5fSopenharmony_ci+/** 33603af6ab5fSopenharmony_ci+ * @typedef {{ x: number }} A 33613af6ab5fSopenharmony_ci+ */ 33623af6ab5fSopenharmony_ci+ 33633af6ab5fSopenharmony_ci+/** 33643af6ab5fSopenharmony_ci+ * @typedef { A & { y: number } } B 33653af6ab5fSopenharmony_ci+ */ 33663af6ab5fSopenharmony_ci+ 33673af6ab5fSopenharmony_ci+/** 33683af6ab5fSopenharmony_ci+ * @param {A} a 33693af6ab5fSopenharmony_ci+ * @returns { asserts a is B } 33703af6ab5fSopenharmony_ci+ */ 33713af6ab5fSopenharmony_ci+const foo = (a) => { 33723af6ab5fSopenharmony_ci+ if (/** @type { B } */ (a).y !== 0) throw TypeError(); 33733af6ab5fSopenharmony_ci+ return undefined; 33743af6ab5fSopenharmony_ci+}; 33753af6ab5fSopenharmony_ci+ 33763af6ab5fSopenharmony_ci+export const main = () => { 33773af6ab5fSopenharmony_ci+ /** @type { A } */ 33783af6ab5fSopenharmony_ci+ const a = { x: 1 }; 33793af6ab5fSopenharmony_ci+ foo(a); 33803af6ab5fSopenharmony_ci+}; 33813af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/controlFlowAliasing.ts b/tests/cases/conformance/controlFlow/controlFlowAliasing.ts 33823af6ab5fSopenharmony_cinew file mode 100644 33833af6ab5fSopenharmony_ciindex 0000000000..03b7530921 33843af6ab5fSopenharmony_ci--- /dev/null 33853af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/controlFlowAliasing.ts 33863af6ab5fSopenharmony_ci@@ -0,0 +1,285 @@ 33873af6ab5fSopenharmony_ci+// @strict: true 33883af6ab5fSopenharmony_ci+// @declaration: true 33893af6ab5fSopenharmony_ci+ 33903af6ab5fSopenharmony_ci+// Narrowing by aliased conditional expressions 33913af6ab5fSopenharmony_ci+ 33923af6ab5fSopenharmony_ci+function f10(x: string | number) { 33933af6ab5fSopenharmony_ci+ const isString = typeof x === "string"; 33943af6ab5fSopenharmony_ci+ if (isString) { 33953af6ab5fSopenharmony_ci+ let t: string = x; 33963af6ab5fSopenharmony_ci+ } 33973af6ab5fSopenharmony_ci+ else { 33983af6ab5fSopenharmony_ci+ let t: number = x; 33993af6ab5fSopenharmony_ci+ } 34003af6ab5fSopenharmony_ci+} 34013af6ab5fSopenharmony_ci+ 34023af6ab5fSopenharmony_ci+function f11(x: unknown) { 34033af6ab5fSopenharmony_ci+ const isString = typeof x === "string"; 34043af6ab5fSopenharmony_ci+ if (isString) { 34053af6ab5fSopenharmony_ci+ let t: string = x; 34063af6ab5fSopenharmony_ci+ } 34073af6ab5fSopenharmony_ci+} 34083af6ab5fSopenharmony_ci+ 34093af6ab5fSopenharmony_ci+function f12(x: string | number | boolean) { 34103af6ab5fSopenharmony_ci+ const isString = typeof x === "string"; 34113af6ab5fSopenharmony_ci+ const isNumber = typeof x === "number"; 34123af6ab5fSopenharmony_ci+ if (isString || isNumber) { 34133af6ab5fSopenharmony_ci+ let t: string | number = x; 34143af6ab5fSopenharmony_ci+ } 34153af6ab5fSopenharmony_ci+ else { 34163af6ab5fSopenharmony_ci+ let t: boolean = x; 34173af6ab5fSopenharmony_ci+ } 34183af6ab5fSopenharmony_ci+} 34193af6ab5fSopenharmony_ci+ 34203af6ab5fSopenharmony_ci+function f13(x: string | number | boolean) { 34213af6ab5fSopenharmony_ci+ const isString = typeof x === "string"; 34223af6ab5fSopenharmony_ci+ const isNumber = typeof x === "number"; 34233af6ab5fSopenharmony_ci+ const isStringOrNumber = isString || isNumber; 34243af6ab5fSopenharmony_ci+ if (isStringOrNumber) { 34253af6ab5fSopenharmony_ci+ let t: string | number = x; 34263af6ab5fSopenharmony_ci+ } 34273af6ab5fSopenharmony_ci+ else { 34283af6ab5fSopenharmony_ci+ let t: boolean = x; 34293af6ab5fSopenharmony_ci+ } 34303af6ab5fSopenharmony_ci+} 34313af6ab5fSopenharmony_ci+ 34323af6ab5fSopenharmony_ci+function f14(x: number | null | undefined): number | null { 34333af6ab5fSopenharmony_ci+ const notUndefined = x !== undefined; 34343af6ab5fSopenharmony_ci+ return notUndefined ? x : 0; 34353af6ab5fSopenharmony_ci+} 34363af6ab5fSopenharmony_ci+ 34373af6ab5fSopenharmony_ci+function f15(obj: { readonly x: string | number }) { 34383af6ab5fSopenharmony_ci+ const isString = typeof obj.x === 'string'; 34393af6ab5fSopenharmony_ci+ if (isString) { 34403af6ab5fSopenharmony_ci+ let s: string = obj.x; 34413af6ab5fSopenharmony_ci+ } 34423af6ab5fSopenharmony_ci+} 34433af6ab5fSopenharmony_ci+ 34443af6ab5fSopenharmony_ci+function f16(obj: { readonly x: string | number }) { 34453af6ab5fSopenharmony_ci+ const isString = typeof obj.x === 'string'; 34463af6ab5fSopenharmony_ci+ obj = { x: 42 }; 34473af6ab5fSopenharmony_ci+ if (isString) { 34483af6ab5fSopenharmony_ci+ let s: string = obj.x; // Not narrowed because of is assigned in function body 34493af6ab5fSopenharmony_ci+ } 34503af6ab5fSopenharmony_ci+} 34513af6ab5fSopenharmony_ci+ 34523af6ab5fSopenharmony_ci+function f17(obj: readonly [string | number]) { 34533af6ab5fSopenharmony_ci+ const isString = typeof obj[0] === 'string'; 34543af6ab5fSopenharmony_ci+ if (isString) { 34553af6ab5fSopenharmony_ci+ let s: string = obj[0]; 34563af6ab5fSopenharmony_ci+ } 34573af6ab5fSopenharmony_ci+} 34583af6ab5fSopenharmony_ci+ 34593af6ab5fSopenharmony_ci+function f18(obj: readonly [string | number]) { 34603af6ab5fSopenharmony_ci+ const isString = typeof obj[0] === 'string'; 34613af6ab5fSopenharmony_ci+ obj = [42]; 34623af6ab5fSopenharmony_ci+ if (isString) { 34633af6ab5fSopenharmony_ci+ let s: string = obj[0]; // Not narrowed because of is assigned in function body 34643af6ab5fSopenharmony_ci+ } 34653af6ab5fSopenharmony_ci+} 34663af6ab5fSopenharmony_ci+ 34673af6ab5fSopenharmony_ci+function f20(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { 34683af6ab5fSopenharmony_ci+ const isFoo = obj.kind === 'foo'; 34693af6ab5fSopenharmony_ci+ if (isFoo) { 34703af6ab5fSopenharmony_ci+ obj.foo; 34713af6ab5fSopenharmony_ci+ } 34723af6ab5fSopenharmony_ci+ else { 34733af6ab5fSopenharmony_ci+ obj.bar; 34743af6ab5fSopenharmony_ci+ } 34753af6ab5fSopenharmony_ci+} 34763af6ab5fSopenharmony_ci+ 34773af6ab5fSopenharmony_ci+function f21(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { 34783af6ab5fSopenharmony_ci+ const isFoo: boolean = obj.kind === 'foo'; 34793af6ab5fSopenharmony_ci+ if (isFoo) { 34803af6ab5fSopenharmony_ci+ obj.foo; // Not narrowed because isFoo has type annotation 34813af6ab5fSopenharmony_ci+ } 34823af6ab5fSopenharmony_ci+ else { 34833af6ab5fSopenharmony_ci+ obj.bar; // Not narrowed because isFoo has type annotation 34843af6ab5fSopenharmony_ci+ } 34853af6ab5fSopenharmony_ci+} 34863af6ab5fSopenharmony_ci+ 34873af6ab5fSopenharmony_ci+function f22(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { 34883af6ab5fSopenharmony_ci+ let isFoo = obj.kind === 'foo'; 34893af6ab5fSopenharmony_ci+ if (isFoo) { 34903af6ab5fSopenharmony_ci+ obj.foo; // Not narrowed because isFoo is mutable 34913af6ab5fSopenharmony_ci+ } 34923af6ab5fSopenharmony_ci+ else { 34933af6ab5fSopenharmony_ci+ obj.bar; // Not narrowed because isFoo is mutable 34943af6ab5fSopenharmony_ci+ } 34953af6ab5fSopenharmony_ci+} 34963af6ab5fSopenharmony_ci+ 34973af6ab5fSopenharmony_ci+function f23(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { 34983af6ab5fSopenharmony_ci+ const isFoo = obj.kind === 'foo'; 34993af6ab5fSopenharmony_ci+ obj = obj; 35003af6ab5fSopenharmony_ci+ if (isFoo) { 35013af6ab5fSopenharmony_ci+ obj.foo; // Not narrowed because obj is assigned in function body 35023af6ab5fSopenharmony_ci+ } 35033af6ab5fSopenharmony_ci+ else { 35043af6ab5fSopenharmony_ci+ obj.bar; // Not narrowed because obj is assigned in function body 35053af6ab5fSopenharmony_ci+ } 35063af6ab5fSopenharmony_ci+} 35073af6ab5fSopenharmony_ci+ 35083af6ab5fSopenharmony_ci+function f24(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { 35093af6ab5fSopenharmony_ci+ const obj = arg; 35103af6ab5fSopenharmony_ci+ const isFoo = obj.kind === 'foo'; 35113af6ab5fSopenharmony_ci+ if (isFoo) { 35123af6ab5fSopenharmony_ci+ obj.foo; 35133af6ab5fSopenharmony_ci+ } 35143af6ab5fSopenharmony_ci+ else { 35153af6ab5fSopenharmony_ci+ obj.bar; 35163af6ab5fSopenharmony_ci+ } 35173af6ab5fSopenharmony_ci+} 35183af6ab5fSopenharmony_ci+ 35193af6ab5fSopenharmony_ci+function f25(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { 35203af6ab5fSopenharmony_ci+ let obj = arg; 35213af6ab5fSopenharmony_ci+ const isFoo = obj.kind === 'foo'; 35223af6ab5fSopenharmony_ci+ if (isFoo) { 35233af6ab5fSopenharmony_ci+ obj.foo; // Not narrowed because obj is mutable 35243af6ab5fSopenharmony_ci+ } 35253af6ab5fSopenharmony_ci+ else { 35263af6ab5fSopenharmony_ci+ obj.bar; // Not narrowed because obj is mutable 35273af6ab5fSopenharmony_ci+ } 35283af6ab5fSopenharmony_ci+} 35293af6ab5fSopenharmony_ci+ 35303af6ab5fSopenharmony_ci+function f26(outer: { readonly obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number } }) { 35313af6ab5fSopenharmony_ci+ const isFoo = outer.obj.kind === 'foo'; 35323af6ab5fSopenharmony_ci+ if (isFoo) { 35333af6ab5fSopenharmony_ci+ outer.obj.foo; 35343af6ab5fSopenharmony_ci+ } 35353af6ab5fSopenharmony_ci+ else { 35363af6ab5fSopenharmony_ci+ outer.obj.bar; 35373af6ab5fSopenharmony_ci+ } 35383af6ab5fSopenharmony_ci+} 35393af6ab5fSopenharmony_ci+ 35403af6ab5fSopenharmony_ci+function f27(outer: { obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number } }) { 35413af6ab5fSopenharmony_ci+ const isFoo = outer.obj.kind === 'foo'; 35423af6ab5fSopenharmony_ci+ if (isFoo) { 35433af6ab5fSopenharmony_ci+ outer.obj.foo; // Not narrowed because obj is mutable 35443af6ab5fSopenharmony_ci+ } 35453af6ab5fSopenharmony_ci+ else { 35463af6ab5fSopenharmony_ci+ outer.obj.bar; // Not narrowed because obj is mutable 35473af6ab5fSopenharmony_ci+ } 35483af6ab5fSopenharmony_ci+} 35493af6ab5fSopenharmony_ci+ 35503af6ab5fSopenharmony_ci+function f28(obj?: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { 35513af6ab5fSopenharmony_ci+ const isFoo = obj && obj.kind === 'foo'; 35523af6ab5fSopenharmony_ci+ const isBar = obj && obj.kind === 'bar'; 35533af6ab5fSopenharmony_ci+ if (isFoo) { 35543af6ab5fSopenharmony_ci+ obj.foo; 35553af6ab5fSopenharmony_ci+ } 35563af6ab5fSopenharmony_ci+ if (isBar) { 35573af6ab5fSopenharmony_ci+ obj.bar; 35583af6ab5fSopenharmony_ci+ } 35593af6ab5fSopenharmony_ci+} 35603af6ab5fSopenharmony_ci+ 35613af6ab5fSopenharmony_ci+// Narrowing by aliased discriminant property access 35623af6ab5fSopenharmony_ci+ 35633af6ab5fSopenharmony_ci+function f30(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { 35643af6ab5fSopenharmony_ci+ const kind = obj.kind; 35653af6ab5fSopenharmony_ci+ if (kind === 'foo') { 35663af6ab5fSopenharmony_ci+ obj.foo; 35673af6ab5fSopenharmony_ci+ } 35683af6ab5fSopenharmony_ci+ else { 35693af6ab5fSopenharmony_ci+ obj.bar; 35703af6ab5fSopenharmony_ci+ } 35713af6ab5fSopenharmony_ci+} 35723af6ab5fSopenharmony_ci+ 35733af6ab5fSopenharmony_ci+function f31(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { 35743af6ab5fSopenharmony_ci+ const { kind } = obj; 35753af6ab5fSopenharmony_ci+ if (kind === 'foo') { 35763af6ab5fSopenharmony_ci+ obj.foo; 35773af6ab5fSopenharmony_ci+ } 35783af6ab5fSopenharmony_ci+ else { 35793af6ab5fSopenharmony_ci+ obj.bar; 35803af6ab5fSopenharmony_ci+ } 35813af6ab5fSopenharmony_ci+} 35823af6ab5fSopenharmony_ci+ 35833af6ab5fSopenharmony_ci+function f32(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { 35843af6ab5fSopenharmony_ci+ const { kind: k } = obj; 35853af6ab5fSopenharmony_ci+ if (k === 'foo') { 35863af6ab5fSopenharmony_ci+ obj.foo; 35873af6ab5fSopenharmony_ci+ } 35883af6ab5fSopenharmony_ci+ else { 35893af6ab5fSopenharmony_ci+ obj.bar; 35903af6ab5fSopenharmony_ci+ } 35913af6ab5fSopenharmony_ci+} 35923af6ab5fSopenharmony_ci+ 35933af6ab5fSopenharmony_ci+function f33(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { 35943af6ab5fSopenharmony_ci+ const { kind } = obj; 35953af6ab5fSopenharmony_ci+ switch (kind) { 35963af6ab5fSopenharmony_ci+ case 'foo': obj.foo; break; 35973af6ab5fSopenharmony_ci+ case 'bar': obj.bar; break; 35983af6ab5fSopenharmony_ci+ } 35993af6ab5fSopenharmony_ci+} 36003af6ab5fSopenharmony_ci+ 36013af6ab5fSopenharmony_ci+ 36023af6ab5fSopenharmony_ci+class C10 { 36033af6ab5fSopenharmony_ci+ constructor(readonly x: string | number) { 36043af6ab5fSopenharmony_ci+ const thisX_isString = typeof this.x === 'string'; 36053af6ab5fSopenharmony_ci+ const xIsString = typeof x === 'string'; 36063af6ab5fSopenharmony_ci+ if (thisX_isString && xIsString) { 36073af6ab5fSopenharmony_ci+ let s: string; 36083af6ab5fSopenharmony_ci+ s = this.x; 36093af6ab5fSopenharmony_ci+ s = x; 36103af6ab5fSopenharmony_ci+ } 36113af6ab5fSopenharmony_ci+ } 36123af6ab5fSopenharmony_ci+} 36133af6ab5fSopenharmony_ci+ 36143af6ab5fSopenharmony_ci+class C11 { 36153af6ab5fSopenharmony_ci+ constructor(readonly x: string | number) { 36163af6ab5fSopenharmony_ci+ const thisX_isString = typeof this.x === 'string'; 36173af6ab5fSopenharmony_ci+ const xIsString = typeof x === 'string'; 36183af6ab5fSopenharmony_ci+ if (thisX_isString && xIsString) { 36193af6ab5fSopenharmony_ci+ // Some narrowings may be invalidated due to later assignments. 36203af6ab5fSopenharmony_ci+ let s: string; 36213af6ab5fSopenharmony_ci+ s = this.x; 36223af6ab5fSopenharmony_ci+ s = x; 36233af6ab5fSopenharmony_ci+ } 36243af6ab5fSopenharmony_ci+ else { 36253af6ab5fSopenharmony_ci+ this.x = 10; 36263af6ab5fSopenharmony_ci+ x = 10; 36273af6ab5fSopenharmony_ci+ } 36283af6ab5fSopenharmony_ci+ } 36293af6ab5fSopenharmony_ci+} 36303af6ab5fSopenharmony_ci+ 36313af6ab5fSopenharmony_ci+// Mixing of aliased discriminants and conditionals 36323af6ab5fSopenharmony_ci+ 36333af6ab5fSopenharmony_ci+function f40(obj: { kind: 'foo', foo?: string } | { kind: 'bar', bar?: number }) { 36343af6ab5fSopenharmony_ci+ const { kind } = obj; 36353af6ab5fSopenharmony_ci+ const isFoo = kind == 'foo'; 36363af6ab5fSopenharmony_ci+ if (isFoo && obj.foo) { 36373af6ab5fSopenharmony_ci+ let t: string = obj.foo; 36383af6ab5fSopenharmony_ci+ } 36393af6ab5fSopenharmony_ci+} 36403af6ab5fSopenharmony_ci+ 36413af6ab5fSopenharmony_ci+// Unsupported narrowing of destructured payload by destructured discriminant 36423af6ab5fSopenharmony_ci+ 36433af6ab5fSopenharmony_ci+type Data = { kind: 'str', payload: string } | { kind: 'num', payload: number }; 36443af6ab5fSopenharmony_ci+ 36453af6ab5fSopenharmony_ci+function gg2(obj: Data) { 36463af6ab5fSopenharmony_ci+ if (obj.kind === 'str') { 36473af6ab5fSopenharmony_ci+ let t: string = obj.payload; 36483af6ab5fSopenharmony_ci+ } 36493af6ab5fSopenharmony_ci+ else { 36503af6ab5fSopenharmony_ci+ let t: number = obj.payload; 36513af6ab5fSopenharmony_ci+ } 36523af6ab5fSopenharmony_ci+} 36533af6ab5fSopenharmony_ci+ 36543af6ab5fSopenharmony_ci+function foo({ kind, payload }: Data) { 36553af6ab5fSopenharmony_ci+ if (kind === 'str') { 36563af6ab5fSopenharmony_ci+ let t: string = payload; 36573af6ab5fSopenharmony_ci+ } 36583af6ab5fSopenharmony_ci+ else { 36593af6ab5fSopenharmony_ci+ let t: number = payload; 36603af6ab5fSopenharmony_ci+ } 36613af6ab5fSopenharmony_ci+} 36623af6ab5fSopenharmony_ci+ 36633af6ab5fSopenharmony_ci+// Repro from #45830 36643af6ab5fSopenharmony_ci+ 36653af6ab5fSopenharmony_ci+const obj = { 36663af6ab5fSopenharmony_ci+ fn: () => true 36673af6ab5fSopenharmony_ci+}; 36683af6ab5fSopenharmony_ci+ 36693af6ab5fSopenharmony_ci+if (a) { } 36703af6ab5fSopenharmony_ci+ 36713af6ab5fSopenharmony_ci+const a = obj.fn(); 36723af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/controlFlowAliasingCatchVariables.ts b/tests/cases/conformance/controlFlow/controlFlowAliasingCatchVariables.ts 36733af6ab5fSopenharmony_cinew file mode 100644 36743af6ab5fSopenharmony_ciindex 0000000000..a746fa1cd0 36753af6ab5fSopenharmony_ci--- /dev/null 36763af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/controlFlowAliasingCatchVariables.ts 36773af6ab5fSopenharmony_ci@@ -0,0 +1,28 @@ 36783af6ab5fSopenharmony_ci+// @useUnknownInCatchVariables: true,false 36793af6ab5fSopenharmony_ci+ 36803af6ab5fSopenharmony_ci+try {} 36813af6ab5fSopenharmony_ci+catch (e) { 36823af6ab5fSopenharmony_ci+ const isString = typeof e === 'string'; 36833af6ab5fSopenharmony_ci+ if (isString) { 36843af6ab5fSopenharmony_ci+ e.toUpperCase(); // e string 36853af6ab5fSopenharmony_ci+ } 36863af6ab5fSopenharmony_ci+ 36873af6ab5fSopenharmony_ci+ if (typeof e === 'string') { 36883af6ab5fSopenharmony_ci+ e.toUpperCase(); // e string 36893af6ab5fSopenharmony_ci+ } 36903af6ab5fSopenharmony_ci+} 36913af6ab5fSopenharmony_ci+ 36923af6ab5fSopenharmony_ci+try {} 36933af6ab5fSopenharmony_ci+catch (e) { 36943af6ab5fSopenharmony_ci+ const isString = typeof e === 'string'; 36953af6ab5fSopenharmony_ci+ 36963af6ab5fSopenharmony_ci+ e = 1; 36973af6ab5fSopenharmony_ci+ 36983af6ab5fSopenharmony_ci+ if (isString) { 36993af6ab5fSopenharmony_ci+ e.toUpperCase(); // e any/unknown 37003af6ab5fSopenharmony_ci+ } 37013af6ab5fSopenharmony_ci+ 37023af6ab5fSopenharmony_ci+ if (typeof e === 'string') { 37033af6ab5fSopenharmony_ci+ e.toUpperCase(); // e string 37043af6ab5fSopenharmony_ci+ } 37053af6ab5fSopenharmony_ci+} 37063af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/controlFlowElementAccess2.ts b/tests/cases/conformance/controlFlow/controlFlowElementAccess2.ts 37073af6ab5fSopenharmony_ciindex fa0592c973..17a2af7895 100644 37083af6ab5fSopenharmony_ci--- a/tests/cases/conformance/controlFlow/controlFlowElementAccess2.ts 37093af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/controlFlowElementAccess2.ts 37103af6ab5fSopenharmony_ci@@ -10,4 +10,4 @@ if (typeof config['works'] !== 'boolean') { 37113af6ab5fSopenharmony_ci if (typeof config.works !== 'boolean') { 37123af6ab5fSopenharmony_ci config['works'].prop = 'test'; // error, config['works']: boolean | { 'prop': string } 37133af6ab5fSopenharmony_ci config.works.prop = 'test'; // ok 37143af6ab5fSopenharmony_ci-} 37153af6ab5fSopenharmony_ci+} 37163af6ab5fSopenharmony_ci\ No newline at end of file 37173af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/controlFlowForInStatement2.ts b/tests/cases/conformance/controlFlow/controlFlowForInStatement2.ts 37183af6ab5fSopenharmony_cinew file mode 100644 37193af6ab5fSopenharmony_ciindex 0000000000..450e50cadc 37203af6ab5fSopenharmony_ci--- /dev/null 37213af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/controlFlowForInStatement2.ts 37223af6ab5fSopenharmony_ci@@ -0,0 +1,25 @@ 37233af6ab5fSopenharmony_ci+const keywordA = 'a'; 37243af6ab5fSopenharmony_ci+const keywordB = 'b'; 37253af6ab5fSopenharmony_ci+ 37263af6ab5fSopenharmony_ci+type A = { [keywordA]: number }; 37273af6ab5fSopenharmony_ci+type B = { [keywordB]: string }; 37283af6ab5fSopenharmony_ci+ 37293af6ab5fSopenharmony_ci+declare const c: A | B; 37303af6ab5fSopenharmony_ci+ 37313af6ab5fSopenharmony_ci+if ('a' in c) { 37323af6ab5fSopenharmony_ci+ c; // narrowed to `A` 37333af6ab5fSopenharmony_ci+} 37343af6ab5fSopenharmony_ci+ 37353af6ab5fSopenharmony_ci+if (keywordA in c) { 37363af6ab5fSopenharmony_ci+ c; // also narrowed to `A` 37373af6ab5fSopenharmony_ci+} 37383af6ab5fSopenharmony_ci+ 37393af6ab5fSopenharmony_ci+let stringB: string = 'b'; 37403af6ab5fSopenharmony_ci+ 37413af6ab5fSopenharmony_ci+if ((stringB as 'b') in c) { 37423af6ab5fSopenharmony_ci+ c; // narrowed to `B` 37433af6ab5fSopenharmony_ci+} 37443af6ab5fSopenharmony_ci+ 37453af6ab5fSopenharmony_ci+if ((stringB as ('a' | 'b')) in c) { 37463af6ab5fSopenharmony_ci+ c; // not narrowed 37473af6ab5fSopenharmony_ci+} 37483af6ab5fSopenharmony_ci\ No newline at end of file 37493af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/controlFlowInOperator.ts b/tests/cases/conformance/controlFlow/controlFlowInOperator.ts 37503af6ab5fSopenharmony_cinew file mode 100644 37513af6ab5fSopenharmony_ciindex 0000000000..5dc27c45e8 37523af6ab5fSopenharmony_ci--- /dev/null 37533af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/controlFlowInOperator.ts 37543af6ab5fSopenharmony_ci@@ -0,0 +1,26 @@ 37553af6ab5fSopenharmony_ci+const a = 'a'; 37563af6ab5fSopenharmony_ci+const b = 'b'; 37573af6ab5fSopenharmony_ci+const d = 'd'; 37583af6ab5fSopenharmony_ci+ 37593af6ab5fSopenharmony_ci+type A = { [a]: number; }; 37603af6ab5fSopenharmony_ci+type B = { [b]: string; }; 37613af6ab5fSopenharmony_ci+ 37623af6ab5fSopenharmony_ci+declare const c: A | B; 37633af6ab5fSopenharmony_ci+ 37643af6ab5fSopenharmony_ci+if ('a' in c) { 37653af6ab5fSopenharmony_ci+ c; // A 37663af6ab5fSopenharmony_ci+ c['a']; // number; 37673af6ab5fSopenharmony_ci+} 37683af6ab5fSopenharmony_ci+ 37693af6ab5fSopenharmony_ci+if ('d' in c) { 37703af6ab5fSopenharmony_ci+ c; // never 37713af6ab5fSopenharmony_ci+} 37723af6ab5fSopenharmony_ci+ 37733af6ab5fSopenharmony_ci+if (a in c) { 37743af6ab5fSopenharmony_ci+ c; // A 37753af6ab5fSopenharmony_ci+ c[a]; // number; 37763af6ab5fSopenharmony_ci+} 37773af6ab5fSopenharmony_ci+ 37783af6ab5fSopenharmony_ci+if (d in c) { 37793af6ab5fSopenharmony_ci+ c; // never 37803af6ab5fSopenharmony_ci+} 37813af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/controlFlowInstanceofExtendsFunction.ts b/tests/cases/conformance/controlFlow/controlFlowInstanceofExtendsFunction.ts 37823af6ab5fSopenharmony_ciindex 4a1ff7ff86..8780db0c12 100644 37833af6ab5fSopenharmony_ci--- a/tests/cases/conformance/controlFlow/controlFlowInstanceofExtendsFunction.ts 37843af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/controlFlowInstanceofExtendsFunction.ts 37853af6ab5fSopenharmony_ci@@ -29,4 +29,6 @@ export const x: X | number = Math.random() > 0.5 ? new X() : 1 37863af6ab5fSopenharmony_ci 37873af6ab5fSopenharmony_ci if (x instanceof X) { 37883af6ab5fSopenharmony_ci x.why() // should compile 37893af6ab5fSopenharmony_ci-} 37903af6ab5fSopenharmony_ci\ No newline at end of file 37913af6ab5fSopenharmony_ci+} 37923af6ab5fSopenharmony_ci+let xx = new X(); 37933af6ab5fSopenharmony_ci+let yy = new Y(); 37943af6ab5fSopenharmony_ci\ No newline at end of file 37953af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/controlFlowSuperPropertyAccess.ts b/tests/cases/conformance/controlFlow/controlFlowSuperPropertyAccess.ts 37963af6ab5fSopenharmony_ciindex b42af687c0..b3710bae0d 100644 37973af6ab5fSopenharmony_ci--- a/tests/cases/conformance/controlFlow/controlFlowSuperPropertyAccess.ts 37983af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/controlFlowSuperPropertyAccess.ts 37993af6ab5fSopenharmony_ci@@ -7,3 +7,4 @@ class C extends B { 38003af6ab5fSopenharmony_ci super.m && super.m(); 38013af6ab5fSopenharmony_ci } 38023af6ab5fSopenharmony_ci } 38033af6ab5fSopenharmony_ci+let qq3 = new C(); 38043af6ab5fSopenharmony_ci\ No newline at end of file 38053af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/controlFlowTypeofObject.ts b/tests/cases/conformance/controlFlow/controlFlowTypeofObject.ts 38063af6ab5fSopenharmony_cinew file mode 100644 38073af6ab5fSopenharmony_ciindex 0000000000..db134447ed 38083af6ab5fSopenharmony_ci--- /dev/null 38093af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/controlFlowTypeofObject.ts 38103af6ab5fSopenharmony_ci@@ -0,0 +1,71 @@ 38113af6ab5fSopenharmony_ci+// @strict: true 38123af6ab5fSopenharmony_ci+// @declaration: true 38133af6ab5fSopenharmony_ci+ 38143af6ab5fSopenharmony_ci+declare function obj(x: object): void; 38153af6ab5fSopenharmony_ci+ 38163af6ab5fSopenharmony_ci+function f1(x: unknown) { 38173af6ab5fSopenharmony_ci+ if (!x) { 38183af6ab5fSopenharmony_ci+ return; 38193af6ab5fSopenharmony_ci+ } 38203af6ab5fSopenharmony_ci+ if (typeof x === 'object') { 38213af6ab5fSopenharmony_ci+ obj(x); 38223af6ab5fSopenharmony_ci+ } 38233af6ab5fSopenharmony_ci+} 38243af6ab5fSopenharmony_ci+ 38253af6ab5fSopenharmony_ci+function f2(x: unknown) { 38263af6ab5fSopenharmony_ci+ if (x === null) { 38273af6ab5fSopenharmony_ci+ return; 38283af6ab5fSopenharmony_ci+ } 38293af6ab5fSopenharmony_ci+ if (typeof x === 'object') { 38303af6ab5fSopenharmony_ci+ obj(x); 38313af6ab5fSopenharmony_ci+ } 38323af6ab5fSopenharmony_ci+} 38333af6ab5fSopenharmony_ci+ 38343af6ab5fSopenharmony_ci+function f3(x: unknown) { 38353af6ab5fSopenharmony_ci+ if (x == null) { 38363af6ab5fSopenharmony_ci+ return; 38373af6ab5fSopenharmony_ci+ } 38383af6ab5fSopenharmony_ci+ if (typeof x === 'object') { 38393af6ab5fSopenharmony_ci+ obj(x); 38403af6ab5fSopenharmony_ci+ } 38413af6ab5fSopenharmony_ci+} 38423af6ab5fSopenharmony_ci+ 38433af6ab5fSopenharmony_ci+function f4(x: unknown) { 38443af6ab5fSopenharmony_ci+ if (x == undefined) { 38453af6ab5fSopenharmony_ci+ return; 38463af6ab5fSopenharmony_ci+ } 38473af6ab5fSopenharmony_ci+ if (typeof x === 'object') { 38483af6ab5fSopenharmony_ci+ obj(x); 38493af6ab5fSopenharmony_ci+ } 38503af6ab5fSopenharmony_ci+} 38513af6ab5fSopenharmony_ci+ 38523af6ab5fSopenharmony_ci+function f5(x: unknown) { 38533af6ab5fSopenharmony_ci+ if (!!true) { 38543af6ab5fSopenharmony_ci+ if (!x) { 38553af6ab5fSopenharmony_ci+ return; 38563af6ab5fSopenharmony_ci+ } 38573af6ab5fSopenharmony_ci+ } 38583af6ab5fSopenharmony_ci+ else { 38593af6ab5fSopenharmony_ci+ if (x === null) { 38603af6ab5fSopenharmony_ci+ return; 38613af6ab5fSopenharmony_ci+ } 38623af6ab5fSopenharmony_ci+ } 38633af6ab5fSopenharmony_ci+ if (typeof x === 'object') { 38643af6ab5fSopenharmony_ci+ obj(x); 38653af6ab5fSopenharmony_ci+ } 38663af6ab5fSopenharmony_ci+} 38673af6ab5fSopenharmony_ci+ 38683af6ab5fSopenharmony_ci+function f6(x: unknown) { 38693af6ab5fSopenharmony_ci+ if (x === null) { 38703af6ab5fSopenharmony_ci+ x; 38713af6ab5fSopenharmony_ci+ } 38723af6ab5fSopenharmony_ci+ else { 38733af6ab5fSopenharmony_ci+ x; 38743af6ab5fSopenharmony_ci+ if (typeof x === 'object') { 38753af6ab5fSopenharmony_ci+ obj(x); 38763af6ab5fSopenharmony_ci+ } 38773af6ab5fSopenharmony_ci+ } 38783af6ab5fSopenharmony_ci+ if (typeof x === 'object') { 38793af6ab5fSopenharmony_ci+ obj(x); // Error 38803af6ab5fSopenharmony_ci+ } 38813af6ab5fSopenharmony_ci+} 38823af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/dependentDestructuredVariables.ts b/tests/cases/conformance/controlFlow/dependentDestructuredVariables.ts 38833af6ab5fSopenharmony_cinew file mode 100644 38843af6ab5fSopenharmony_ciindex 0000000000..55e95ddf09 38853af6ab5fSopenharmony_ci--- /dev/null 38863af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/dependentDestructuredVariables.ts 38873af6ab5fSopenharmony_ci@@ -0,0 +1,161 @@ 38883af6ab5fSopenharmony_ci+// @strict: true 38893af6ab5fSopenharmony_ci+// @declaration: true 38903af6ab5fSopenharmony_ci+// @target: es2015 38913af6ab5fSopenharmony_ci+ 38923af6ab5fSopenharmony_ci+type Action = 38933af6ab5fSopenharmony_ci+ | { kind: 'A', payload: number } 38943af6ab5fSopenharmony_ci+ | { kind: 'B', payload: string }; 38953af6ab5fSopenharmony_ci+ 38963af6ab5fSopenharmony_ci+function f10({ kind, payload }: Action) { 38973af6ab5fSopenharmony_ci+ if (kind === 'A') { 38983af6ab5fSopenharmony_ci+ payload.toFixed(); 38993af6ab5fSopenharmony_ci+ } 39003af6ab5fSopenharmony_ci+ if (kind === 'B') { 39013af6ab5fSopenharmony_ci+ payload.toUpperCase(); 39023af6ab5fSopenharmony_ci+ } 39033af6ab5fSopenharmony_ci+} 39043af6ab5fSopenharmony_ci+ 39053af6ab5fSopenharmony_ci+function f11(action: Action) { 39063af6ab5fSopenharmony_ci+ const { kind, payload } = action; 39073af6ab5fSopenharmony_ci+ if (kind === 'A') { 39083af6ab5fSopenharmony_ci+ payload.toFixed(); 39093af6ab5fSopenharmony_ci+ } 39103af6ab5fSopenharmony_ci+ if (kind === 'B') { 39113af6ab5fSopenharmony_ci+ payload.toUpperCase(); 39123af6ab5fSopenharmony_ci+ } 39133af6ab5fSopenharmony_ci+} 39143af6ab5fSopenharmony_ci+ 39153af6ab5fSopenharmony_ci+function f12({ kind, payload }: Action) { 39163af6ab5fSopenharmony_ci+ switch (kind) { 39173af6ab5fSopenharmony_ci+ case 'A': 39183af6ab5fSopenharmony_ci+ payload.toFixed(); 39193af6ab5fSopenharmony_ci+ break; 39203af6ab5fSopenharmony_ci+ case 'B': 39213af6ab5fSopenharmony_ci+ payload.toUpperCase(); 39223af6ab5fSopenharmony_ci+ break; 39233af6ab5fSopenharmony_ci+ default: 39243af6ab5fSopenharmony_ci+ payload; // never 39253af6ab5fSopenharmony_ci+ } 39263af6ab5fSopenharmony_ci+} 39273af6ab5fSopenharmony_ci+ 39283af6ab5fSopenharmony_ci+type Action2 = 39293af6ab5fSopenharmony_ci+ | { kind: 'A', payload: number | undefined } 39303af6ab5fSopenharmony_ci+ | { kind: 'B', payload: string | undefined }; 39313af6ab5fSopenharmony_ci+ 39323af6ab5fSopenharmony_ci+function f20({ kind, payload }: Action2) { 39333af6ab5fSopenharmony_ci+ if (payload) { 39343af6ab5fSopenharmony_ci+ if (kind === 'A') { 39353af6ab5fSopenharmony_ci+ payload.toFixed(); 39363af6ab5fSopenharmony_ci+ } 39373af6ab5fSopenharmony_ci+ if (kind === 'B') { 39383af6ab5fSopenharmony_ci+ payload.toUpperCase(); 39393af6ab5fSopenharmony_ci+ } 39403af6ab5fSopenharmony_ci+ } 39413af6ab5fSopenharmony_ci+} 39423af6ab5fSopenharmony_ci+ 39433af6ab5fSopenharmony_ci+function f21(action: Action2) { 39443af6ab5fSopenharmony_ci+ const { kind, payload } = action; 39453af6ab5fSopenharmony_ci+ if (payload) { 39463af6ab5fSopenharmony_ci+ if (kind === 'A') { 39473af6ab5fSopenharmony_ci+ payload.toFixed(); 39483af6ab5fSopenharmony_ci+ } 39493af6ab5fSopenharmony_ci+ if (kind === 'B') { 39503af6ab5fSopenharmony_ci+ payload.toUpperCase(); 39513af6ab5fSopenharmony_ci+ } 39523af6ab5fSopenharmony_ci+ } 39533af6ab5fSopenharmony_ci+} 39543af6ab5fSopenharmony_ci+ 39553af6ab5fSopenharmony_ci+function f22(action: Action2) { 39563af6ab5fSopenharmony_ci+ if (action.payload) { 39573af6ab5fSopenharmony_ci+ const { kind, payload } = action; 39583af6ab5fSopenharmony_ci+ if (kind === 'A') { 39593af6ab5fSopenharmony_ci+ payload.toFixed(); 39603af6ab5fSopenharmony_ci+ } 39613af6ab5fSopenharmony_ci+ if (kind === 'B') { 39623af6ab5fSopenharmony_ci+ payload.toUpperCase(); 39633af6ab5fSopenharmony_ci+ } 39643af6ab5fSopenharmony_ci+ } 39653af6ab5fSopenharmony_ci+} 39663af6ab5fSopenharmony_ci+ 39673af6ab5fSopenharmony_ci+function f23({ kind, payload }: Action2) { 39683af6ab5fSopenharmony_ci+ if (payload) { 39693af6ab5fSopenharmony_ci+ switch (kind) { 39703af6ab5fSopenharmony_ci+ case 'A': 39713af6ab5fSopenharmony_ci+ payload.toFixed(); 39723af6ab5fSopenharmony_ci+ break; 39733af6ab5fSopenharmony_ci+ case 'B': 39743af6ab5fSopenharmony_ci+ payload.toUpperCase(); 39753af6ab5fSopenharmony_ci+ break; 39763af6ab5fSopenharmony_ci+ default: 39773af6ab5fSopenharmony_ci+ payload; // never 39783af6ab5fSopenharmony_ci+ } 39793af6ab5fSopenharmony_ci+ } 39803af6ab5fSopenharmony_ci+} 39813af6ab5fSopenharmony_ci+ 39823af6ab5fSopenharmony_ci+type Foo = 39833af6ab5fSopenharmony_ci+ | { kind: 'A', isA: true } 39843af6ab5fSopenharmony_ci+ | { kind: 'B', isA: false } 39853af6ab5fSopenharmony_ci+ | { kind: 'C', isA: false }; 39863af6ab5fSopenharmony_ci+ 39873af6ab5fSopenharmony_ci+function f30({ kind, isA }: Foo) { 39883af6ab5fSopenharmony_ci+ if (kind === 'A') { 39893af6ab5fSopenharmony_ci+ isA; // true 39903af6ab5fSopenharmony_ci+ } 39913af6ab5fSopenharmony_ci+ if (kind === 'B') { 39923af6ab5fSopenharmony_ci+ isA; // false 39933af6ab5fSopenharmony_ci+ } 39943af6ab5fSopenharmony_ci+ if (kind === 'C') { 39953af6ab5fSopenharmony_ci+ isA; // false 39963af6ab5fSopenharmony_ci+ } 39973af6ab5fSopenharmony_ci+ if (isA) { 39983af6ab5fSopenharmony_ci+ kind; // 'A' 39993af6ab5fSopenharmony_ci+ } 40003af6ab5fSopenharmony_ci+ else { 40013af6ab5fSopenharmony_ci+ kind; // 'B' | 'C' 40023af6ab5fSopenharmony_ci+ } 40033af6ab5fSopenharmony_ci+} 40043af6ab5fSopenharmony_ci+ 40053af6ab5fSopenharmony_ci+// Repro from #35283 40063af6ab5fSopenharmony_ci+ 40073af6ab5fSopenharmony_ci+interface A<T> { variant: 'a', value: T } 40083af6ab5fSopenharmony_ci+ 40093af6ab5fSopenharmony_ci+interface B<T> { variant: 'b', value: Array<T> } 40103af6ab5fSopenharmony_ci+ 40113af6ab5fSopenharmony_ci+type AB<T> = A<T> | B<T>; 40123af6ab5fSopenharmony_ci+ 40133af6ab5fSopenharmony_ci+declare function printValue<T>(t: T): void; 40143af6ab5fSopenharmony_ci+ 40153af6ab5fSopenharmony_ci+declare function printValueList<T>(t: Array<T>): void; 40163af6ab5fSopenharmony_ci+ 40173af6ab5fSopenharmony_ci+function unrefined1<T>(ab: AB<T>): void { 40183af6ab5fSopenharmony_ci+ const { variant, value } = ab; 40193af6ab5fSopenharmony_ci+ if (variant === 'a') { 40203af6ab5fSopenharmony_ci+ printValue<T>(value); 40213af6ab5fSopenharmony_ci+ } 40223af6ab5fSopenharmony_ci+ else { 40233af6ab5fSopenharmony_ci+ printValueList<T>(value); 40243af6ab5fSopenharmony_ci+ } 40253af6ab5fSopenharmony_ci+} 40263af6ab5fSopenharmony_ci+ 40273af6ab5fSopenharmony_ci+// Repro from #38020 40283af6ab5fSopenharmony_ci+ 40293af6ab5fSopenharmony_ci+type Action3 = 40303af6ab5fSopenharmony_ci+ | {type: 'add', payload: { toAdd: number } } 40313af6ab5fSopenharmony_ci+ | {type: 'remove', payload: { toRemove: number } }; 40323af6ab5fSopenharmony_ci+ 40333af6ab5fSopenharmony_ci+const reducerBroken = (state: number, { type, payload }: Action3) => { 40343af6ab5fSopenharmony_ci+ switch (type) { 40353af6ab5fSopenharmony_ci+ case 'add': 40363af6ab5fSopenharmony_ci+ return state + payload.toAdd; 40373af6ab5fSopenharmony_ci+ case 'remove': 40383af6ab5fSopenharmony_ci+ return state - payload.toRemove; 40393af6ab5fSopenharmony_ci+ } 40403af6ab5fSopenharmony_ci+} 40413af6ab5fSopenharmony_ci+ 40423af6ab5fSopenharmony_ci+// Repro from #46143 40433af6ab5fSopenharmony_ci+ 40443af6ab5fSopenharmony_ci+declare var it: Iterator<number>; 40453af6ab5fSopenharmony_ci+const { value, done } = it.next(); 40463af6ab5fSopenharmony_ci+if (!done) { 40473af6ab5fSopenharmony_ci+ value; // number 40483af6ab5fSopenharmony_ci+} 40493af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/typeGuardsNestedAssignments.ts b/tests/cases/conformance/controlFlow/typeGuardsNestedAssignments.ts 40503af6ab5fSopenharmony_ciindex 41e3ffe572..1a42e77ae0 100644 40513af6ab5fSopenharmony_ci--- a/tests/cases/conformance/controlFlow/typeGuardsNestedAssignments.ts 40523af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/typeGuardsNestedAssignments.ts 40533af6ab5fSopenharmony_ci@@ -44,4 +44,5 @@ let match: RegExpExecArray | null 40543af6ab5fSopenharmony_ci 40553af6ab5fSopenharmony_ci while ((match = re.exec("xxx")) != null) { 40563af6ab5fSopenharmony_ci const length = match[1].length + match[2].length 40573af6ab5fSopenharmony_ci-} 40583af6ab5fSopenharmony_ci\ No newline at end of file 40593af6ab5fSopenharmony_ci+} 40603af6ab5fSopenharmony_ci+let qq4 = new Foo(); 40613af6ab5fSopenharmony_ci\ No newline at end of file 40623af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/controlFlow/typeGuardsTypeParameters.ts b/tests/cases/conformance/controlFlow/typeGuardsTypeParameters.ts 40633af6ab5fSopenharmony_ciindex 169dbc7a7c..708fcceab8 100644 40643af6ab5fSopenharmony_ci--- a/tests/cases/conformance/controlFlow/typeGuardsTypeParameters.ts 40653af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/controlFlow/typeGuardsTypeParameters.ts 40663af6ab5fSopenharmony_ci@@ -33,3 +33,4 @@ function fun<T>(item: { [P in keyof T]: T[P] }) { 40673af6ab5fSopenharmony_ci } 40683af6ab5fSopenharmony_ci } 40693af6ab5fSopenharmony_ci } 40703af6ab5fSopenharmony_ci+let qq6 = new C(); 40713af6ab5fSopenharmony_ci\ No newline at end of file 40723af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/declarationEmit/declarationEmitWorkWithInlineComments.ts b/tests/cases/conformance/declarationEmit/declarationEmitWorkWithInlineComments.ts 40733af6ab5fSopenharmony_ciindex a5b3074a5c..20e4ef968e 100644 40743af6ab5fSopenharmony_ci--- a/tests/cases/conformance/declarationEmit/declarationEmitWorkWithInlineComments.ts 40753af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/declarationEmit/declarationEmitWorkWithInlineComments.ts 40763af6ab5fSopenharmony_ci@@ -34,4 +34,7 @@ export class Baz { 40773af6ab5fSopenharmony_ci constructor(/* @internal */ 40783af6ab5fSopenharmony_ci public isInternal: string 40793af6ab5fSopenharmony_ci ) {} 40803af6ab5fSopenharmony_ci-} 40813af6ab5fSopenharmony_ci\ No newline at end of file 40823af6ab5fSopenharmony_ci+} 40833af6ab5fSopenharmony_ci+// let ff = new Foo('','','','','','','','','','') 40843af6ab5fSopenharmony_ci+// let bar = new Bar(''); 40853af6ab5fSopenharmony_ci+// let baz = new Baz(''); 40863af6ab5fSopenharmony_ci\ No newline at end of file 40873af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/declarationEmit/typePredicates/declarationEmitThisPredicates01.ts b/tests/cases/conformance/declarationEmit/typePredicates/declarationEmitThisPredicates01.ts 40883af6ab5fSopenharmony_ciindex 69af9c5b07..1b88b5d2bb 100644 40893af6ab5fSopenharmony_ci--- a/tests/cases/conformance/declarationEmit/typePredicates/declarationEmitThisPredicates01.ts 40903af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/declarationEmit/typePredicates/declarationEmitThisPredicates01.ts 40913af6ab5fSopenharmony_ci@@ -8,4 +8,5 @@ export class C { 40923af6ab5fSopenharmony_ci } 40933af6ab5fSopenharmony_ci 40943af6ab5fSopenharmony_ci export class D extends C { 40953af6ab5fSopenharmony_ci-} 40963af6ab5fSopenharmony_ci\ No newline at end of file 40973af6ab5fSopenharmony_ci+} 40983af6ab5fSopenharmony_ci+let qq6 = new D(); 40993af6ab5fSopenharmony_ci\ No newline at end of file 41003af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/declarationEmit/typePredicates/declarationEmitThisPredicatesWithPrivateName01.ts b/tests/cases/conformance/declarationEmit/typePredicates/declarationEmitThisPredicatesWithPrivateName01.ts 41013af6ab5fSopenharmony_ciindex 461c7d1757..d22941e2f2 100644 41023af6ab5fSopenharmony_ci--- a/tests/cases/conformance/declarationEmit/typePredicates/declarationEmitThisPredicatesWithPrivateName01.ts 41033af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/declarationEmit/typePredicates/declarationEmitThisPredicatesWithPrivateName01.ts 41043af6ab5fSopenharmony_ci@@ -8,4 +8,5 @@ export class C { 41053af6ab5fSopenharmony_ci } 41063af6ab5fSopenharmony_ci 41073af6ab5fSopenharmony_ci class D extends C { 41083af6ab5fSopenharmony_ci-} 41093af6ab5fSopenharmony_ci\ No newline at end of file 41103af6ab5fSopenharmony_ci+} 41113af6ab5fSopenharmony_ci+let qq7 = new D(); 41123af6ab5fSopenharmony_ci\ No newline at end of file 41133af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/fs.d.ts b/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/fs.d.ts 41143af6ab5fSopenharmony_cinew file mode 100644 41153af6ab5fSopenharmony_ciindex 0000000000..fe6e6774e2 41163af6ab5fSopenharmony_ci--- /dev/null 41173af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/fs.d.ts 41183af6ab5fSopenharmony_ci@@ -0,0 +1,5 @@ 41193af6ab5fSopenharmony_ci+// @filename: node_modules/@types/node/fs.d.ts 41203af6ab5fSopenharmony_ci+declare module "fs" { 41213af6ab5fSopenharmony_ci+ function FSWatcher() 41223af6ab5fSopenharmony_ci+ // interface FSWatcher {} 41233af6ab5fSopenharmony_ci+} 41243af6ab5fSopenharmony_ci\ No newline at end of file 41253af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/main.ts b/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/main.ts 41263af6ab5fSopenharmony_cinew file mode 100644 41273af6ab5fSopenharmony_ciindex 0000000000..38de3dcf37 41283af6ab5fSopenharmony_ci--- /dev/null 41293af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/main.ts 41303af6ab5fSopenharmony_ci@@ -0,0 +1,2 @@ 41313af6ab5fSopenharmony_ci+// @filename: main.ts 41323af6ab5fSopenharmony_ci+/// <reference types="node" /> 41333af6ab5fSopenharmony_ci\ No newline at end of file 41343af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/package.json b/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/package.json 41353af6ab5fSopenharmony_cinew file mode 100644 41363af6ab5fSopenharmony_ciindex 0000000000..f93a231130 41373af6ab5fSopenharmony_ci--- /dev/null 41383af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/package.json 41393af6ab5fSopenharmony_ci@@ -0,0 +1,4 @@ 41403af6ab5fSopenharmony_ci+{ 41413af6ab5fSopenharmony_ci+ "name": "@types/node", 41423af6ab5fSopenharmony_ci+ "version": "1.0.0" 41433af6ab5fSopenharmony_ci+} 41443af6ab5fSopenharmony_ci\ No newline at end of file 41453af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/typeReferenceRelatedFiles.ts b/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/typeReferenceRelatedFiles.ts 41463af6ab5fSopenharmony_cinew file mode 100644 41473af6ab5fSopenharmony_ciindex 0000000000..957e4b37af 41483af6ab5fSopenharmony_ci--- /dev/null 41493af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/declarationEmit/typeReferenceRelatedFiles/typeReferenceRelatedFiles.ts 41503af6ab5fSopenharmony_ci@@ -0,0 +1,18 @@ 41513af6ab5fSopenharmony_ci+// @declaration: true 41523af6ab5fSopenharmony_ci+// @filename: node_modules/@types/node/index.d.ts 41533af6ab5fSopenharmony_ci+/// <reference path="fs.d.ts" /> 41543af6ab5fSopenharmony_ci+ 41553af6ab5fSopenharmony_ci+// @filename: node_modules/@types/node/package.json 41563af6ab5fSopenharmony_ci+// { 41573af6ab5fSopenharmony_ci+// "name": "@types/node", 41583af6ab5fSopenharmony_ci+// "version": "1.0.0" 41593af6ab5fSopenharmony_ci+// } 41603af6ab5fSopenharmony_ci+// @filename: main.ts 41613af6ab5fSopenharmony_ci+// / <reference types="node" /> 41623af6ab5fSopenharmony_ci+import { FSWatcher } from "fs"; 41633af6ab5fSopenharmony_ci+ 41643af6ab5fSopenharmony_ci+FSWatcher(); 41653af6ab5fSopenharmony_ci+ 41663af6ab5fSopenharmony_ci+export function f() { 41673af6ab5fSopenharmony_ci+ // return {} as FSWatcher; 41683af6ab5fSopenharmony_ci+} 41693af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/decorators/class/constructor/parameter/decoratorOnClassConstructorParameter5.ts b/tests/cases/conformance/decorators/class/constructor/parameter/decoratorOnClassConstructorParameter5.ts 41703af6ab5fSopenharmony_cinew file mode 100644 41713af6ab5fSopenharmony_ciindex 0000000000..3679047895 41723af6ab5fSopenharmony_ci--- /dev/null 41733af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/decorators/class/constructor/parameter/decoratorOnClassConstructorParameter5.ts 41743af6ab5fSopenharmony_ci@@ -0,0 +1,15 @@ 41753af6ab5fSopenharmony_ci+// @target: es2018 41763af6ab5fSopenharmony_ci+// @experimentalDecorators: true 41773af6ab5fSopenharmony_ci+// @noEmitHelpers: true 41783af6ab5fSopenharmony_ci+// @noTypesAndSymbols: true 41793af6ab5fSopenharmony_ci+ 41803af6ab5fSopenharmony_ci+// https://github.com/microsoft/TypeScript/issues/44931 41813af6ab5fSopenharmony_ci+interface IFoo { } 41823af6ab5fSopenharmony_ci+declare const IFoo: any; 41833af6ab5fSopenharmony_ci+class BulkEditPreviewProvider { 41843af6ab5fSopenharmony_ci+ static readonly Schema = 'vscode-bulkeditpreview'; 41853af6ab5fSopenharmony_ci+ static emptyPreview = { scheme: BulkEditPreviewProvider.Schema }; 41863af6ab5fSopenharmony_ci+ constructor( 41873af6ab5fSopenharmony_ci+ @IFoo private readonly _modeService: IFoo, 41883af6ab5fSopenharmony_ci+ ) { } 41893af6ab5fSopenharmony_ci+} 41903af6ab5fSopenharmony_ci\ No newline at end of file 41913af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/decorators/class/decoratedBlockScopedClass1.ts b/tests/cases/conformance/decorators/class/decoratedBlockScopedClass1.ts 41923af6ab5fSopenharmony_cinew file mode 100644 41933af6ab5fSopenharmony_ciindex 0000000000..521dd6a31c 41943af6ab5fSopenharmony_ci--- /dev/null 41953af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/decorators/class/decoratedBlockScopedClass1.ts 41963af6ab5fSopenharmony_ci@@ -0,0 +1,16 @@ 41973af6ab5fSopenharmony_ci+// @target: es5 41983af6ab5fSopenharmony_ci+// @experimentaldecorators: true 41993af6ab5fSopenharmony_ci+// @emitDecoratorMetadata: true 42003af6ab5fSopenharmony_ci+// @filename: a.ts 42013af6ab5fSopenharmony_ci+ 42023af6ab5fSopenharmony_ci+function decorator() { 42033af6ab5fSopenharmony_ci+ return (target: new (...args: any[]) => any) => {} 42043af6ab5fSopenharmony_ci+} 42053af6ab5fSopenharmony_ci+ 42063af6ab5fSopenharmony_ci+@decorator() 42073af6ab5fSopenharmony_ci+class Foo { 42083af6ab5fSopenharmony_ci+ public static func(): Foo { 42093af6ab5fSopenharmony_ci+ return new Foo(); 42103af6ab5fSopenharmony_ci+ } 42113af6ab5fSopenharmony_ci+} 42123af6ab5fSopenharmony_ci+Foo.func(); 42133af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/decorators/class/decoratedBlockScopedClass2.ts b/tests/cases/conformance/decorators/class/decoratedBlockScopedClass2.ts 42143af6ab5fSopenharmony_cinew file mode 100644 42153af6ab5fSopenharmony_ciindex 0000000000..7d8de6894f 42163af6ab5fSopenharmony_ci--- /dev/null 42173af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/decorators/class/decoratedBlockScopedClass2.ts 42183af6ab5fSopenharmony_ci@@ -0,0 +1,19 @@ 42193af6ab5fSopenharmony_ci+// @target: es5 42203af6ab5fSopenharmony_ci+// @experimentaldecorators: true 42213af6ab5fSopenharmony_ci+// @emitDecoratorMetadata: true 42223af6ab5fSopenharmony_ci+// @filename: a.ts 42233af6ab5fSopenharmony_ci+ 42243af6ab5fSopenharmony_ci+function decorator() { 42253af6ab5fSopenharmony_ci+ return (target: new (...args: any[]) => any) => {} 42263af6ab5fSopenharmony_ci+} 42273af6ab5fSopenharmony_ci+ 42283af6ab5fSopenharmony_ci+try { 42293af6ab5fSopenharmony_ci+ @decorator() 42303af6ab5fSopenharmony_ci+ class Foo { 42313af6ab5fSopenharmony_ci+ public static func(): Foo { 42323af6ab5fSopenharmony_ci+ return new Foo(); 42333af6ab5fSopenharmony_ci+ } 42343af6ab5fSopenharmony_ci+ } 42353af6ab5fSopenharmony_ci+ Foo.func(); 42363af6ab5fSopenharmony_ci+} 42373af6ab5fSopenharmony_ci+catch (e) {} 42383af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/decorators/class/decoratedBlockScopedClass3.ts b/tests/cases/conformance/decorators/class/decoratedBlockScopedClass3.ts 42393af6ab5fSopenharmony_cinew file mode 100644 42403af6ab5fSopenharmony_ciindex 0000000000..48eebc559f 42413af6ab5fSopenharmony_ci--- /dev/null 42423af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/decorators/class/decoratedBlockScopedClass3.ts 42433af6ab5fSopenharmony_ci@@ -0,0 +1,27 @@ 42443af6ab5fSopenharmony_ci+// @target: es5 42453af6ab5fSopenharmony_ci+// @experimentaldecorators: true 42463af6ab5fSopenharmony_ci+// @emitDecoratorMetadata: true 42473af6ab5fSopenharmony_ci+// @filename: a.ts 42483af6ab5fSopenharmony_ci+ 42493af6ab5fSopenharmony_ci+function decorator() { 42503af6ab5fSopenharmony_ci+ return (target: new (...args: any[]) => any) => {} 42513af6ab5fSopenharmony_ci+} 42523af6ab5fSopenharmony_ci+ 42533af6ab5fSopenharmony_ci+@decorator() 42543af6ab5fSopenharmony_ci+class Foo { 42553af6ab5fSopenharmony_ci+ public static func(): Foo { 42563af6ab5fSopenharmony_ci+ return new Foo(); 42573af6ab5fSopenharmony_ci+ } 42583af6ab5fSopenharmony_ci+} 42593af6ab5fSopenharmony_ci+Foo.func(); 42603af6ab5fSopenharmony_ci+ 42613af6ab5fSopenharmony_ci+try { 42623af6ab5fSopenharmony_ci+ @decorator() 42633af6ab5fSopenharmony_ci+ class Foo { 42643af6ab5fSopenharmony_ci+ public static func(): Foo { 42653af6ab5fSopenharmony_ci+ return new Foo(); 42663af6ab5fSopenharmony_ci+ } 42673af6ab5fSopenharmony_ci+ } 42683af6ab5fSopenharmony_ci+ Foo.func(); 42693af6ab5fSopenharmony_ci+} 42703af6ab5fSopenharmony_ci+catch (e) {} 42713af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod14.ts b/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod14.ts 42723af6ab5fSopenharmony_cinew file mode 100644 42733af6ab5fSopenharmony_ciindex 0000000000..18f3df79bc 42743af6ab5fSopenharmony_ci--- /dev/null 42753af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod14.ts 42763af6ab5fSopenharmony_ci@@ -0,0 +1,14 @@ 42773af6ab5fSopenharmony_ci+// @target: esnext 42783af6ab5fSopenharmony_ci+// @experimentaldecorators: true 42793af6ab5fSopenharmony_ci+// @emitdecoratormetadata: true 42803af6ab5fSopenharmony_ci+declare var decorator: any; 42813af6ab5fSopenharmony_ci+ 42823af6ab5fSopenharmony_ci+class Foo { 42833af6ab5fSopenharmony_ci+ private prop = () => { 42843af6ab5fSopenharmony_ci+ return 0; 42853af6ab5fSopenharmony_ci+ } 42863af6ab5fSopenharmony_ci+ @decorator 42873af6ab5fSopenharmony_ci+ foo() { 42883af6ab5fSopenharmony_ci+ return 0; 42893af6ab5fSopenharmony_ci+ } 42903af6ab5fSopenharmony_ci+} 42913af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod15.ts b/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod15.ts 42923af6ab5fSopenharmony_cinew file mode 100644 42933af6ab5fSopenharmony_ciindex 0000000000..70f86b1bbe 42943af6ab5fSopenharmony_ci--- /dev/null 42953af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod15.ts 42963af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 42973af6ab5fSopenharmony_ci+// @target: esnext 42983af6ab5fSopenharmony_ci+// @experimentaldecorators: true 42993af6ab5fSopenharmony_ci+// @emitdecoratormetadata: true 43003af6ab5fSopenharmony_ci+declare var decorator: any; 43013af6ab5fSopenharmony_ci+ 43023af6ab5fSopenharmony_ci+class Foo { 43033af6ab5fSopenharmony_ci+ private prop = 1 43043af6ab5fSopenharmony_ci+ @decorator 43053af6ab5fSopenharmony_ci+ foo() { 43063af6ab5fSopenharmony_ci+ return 0; 43073af6ab5fSopenharmony_ci+ } 43083af6ab5fSopenharmony_ci+} 43093af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod16.ts b/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod16.ts 43103af6ab5fSopenharmony_cinew file mode 100644 43113af6ab5fSopenharmony_ciindex 0000000000..400d4fbe5a 43123af6ab5fSopenharmony_ci--- /dev/null 43133af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod16.ts 43143af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 43153af6ab5fSopenharmony_ci+// @target: esnext 43163af6ab5fSopenharmony_ci+// @experimentaldecorators: true 43173af6ab5fSopenharmony_ci+// @emitdecoratormetadata: true 43183af6ab5fSopenharmony_ci+declare var decorator: any; 43193af6ab5fSopenharmony_ci+ 43203af6ab5fSopenharmony_ci+class Foo { 43213af6ab5fSopenharmony_ci+ private prop 43223af6ab5fSopenharmony_ci+ @decorator 43233af6ab5fSopenharmony_ci+ foo() { 43243af6ab5fSopenharmony_ci+ return 0; 43253af6ab5fSopenharmony_ci+ } 43263af6ab5fSopenharmony_ci+} 43273af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod17.ts b/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod17.ts 43283af6ab5fSopenharmony_cinew file mode 100644 43293af6ab5fSopenharmony_ciindex 0000000000..1aa25d7f32 43303af6ab5fSopenharmony_ci--- /dev/null 43313af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod17.ts 43323af6ab5fSopenharmony_ci@@ -0,0 +1,11 @@ 43333af6ab5fSopenharmony_ci+// @target: esnext 43343af6ab5fSopenharmony_ci+// @experimentaldecorators: true 43353af6ab5fSopenharmony_ci+// @emitdecoratormetadata: true 43363af6ab5fSopenharmony_ci+declare var decorator: any; 43373af6ab5fSopenharmony_ci+ 43383af6ab5fSopenharmony_ci+class Foo { 43393af6ab5fSopenharmony_ci+ private prop @decorator 43403af6ab5fSopenharmony_ci+ foo() { 43413af6ab5fSopenharmony_ci+ return 0; 43423af6ab5fSopenharmony_ci+ } 43433af6ab5fSopenharmony_ci+} 43443af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod18.ts b/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod18.ts 43453af6ab5fSopenharmony_cinew file mode 100644 43463af6ab5fSopenharmony_ciindex 0000000000..9417c44c5b 43473af6ab5fSopenharmony_ci--- /dev/null 43483af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/decorators/class/method/decoratorOnClassMethod18.ts 43493af6ab5fSopenharmony_ci@@ -0,0 +1,11 @@ 43503af6ab5fSopenharmony_ci+// @target: esnext 43513af6ab5fSopenharmony_ci+// @experimentaldecorators: true 43523af6ab5fSopenharmony_ci+// @emitdecoratormetadata: true 43533af6ab5fSopenharmony_ci+declare var decorator: any; 43543af6ab5fSopenharmony_ci+ 43553af6ab5fSopenharmony_ci+class Foo { 43563af6ab5fSopenharmony_ci+ p1 43573af6ab5fSopenharmony_ci+ 43583af6ab5fSopenharmony_ci+ @decorator() 43593af6ab5fSopenharmony_ci+ p2; 43603af6ab5fSopenharmony_ci+} 43613af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/decorators/decoratorMetadataWithTypeOnlyImport2.ts b/tests/cases/conformance/decorators/decoratorMetadataWithTypeOnlyImport2.ts 43623af6ab5fSopenharmony_cinew file mode 100644 43633af6ab5fSopenharmony_ciindex 0000000000..c63fcf1a16 43643af6ab5fSopenharmony_ci--- /dev/null 43653af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/decorators/decoratorMetadataWithTypeOnlyImport2.ts 43663af6ab5fSopenharmony_ci@@ -0,0 +1,17 @@ 43673af6ab5fSopenharmony_ci+// @experimentalDecorators: true 43683af6ab5fSopenharmony_ci+// @emitDecoratorMetadata: true 43693af6ab5fSopenharmony_ci+ 43703af6ab5fSopenharmony_ci+ 43713af6ab5fSopenharmony_ci+// @filename: services.ts 43723af6ab5fSopenharmony_ci+export namespace Services { 43733af6ab5fSopenharmony_ci+ export class Service {} 43743af6ab5fSopenharmony_ci+} 43753af6ab5fSopenharmony_ci+ 43763af6ab5fSopenharmony_ci+// @filename: index.ts 43773af6ab5fSopenharmony_ci+import type { Services } from './services'; 43783af6ab5fSopenharmony_ci+ 43793af6ab5fSopenharmony_ci+declare const decorator: any; 43803af6ab5fSopenharmony_ci+export class Main { 43813af6ab5fSopenharmony_ci+ @decorator() 43823af6ab5fSopenharmony_ci+ field: Services.Service; 43833af6ab5fSopenharmony_ci+} 43843af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/emitter/es2015/asyncGenerators/emitter.asyncGenerators.classMethods.es2015.ts b/tests/cases/conformance/emitter/es2015/asyncGenerators/emitter.asyncGenerators.classMethods.es2015.ts 43853af6ab5fSopenharmony_ciindex fe1bc56dd1..20e20e00dc 100644 43863af6ab5fSopenharmony_ci--- a/tests/cases/conformance/emitter/es2015/asyncGenerators/emitter.asyncGenerators.classMethods.es2015.ts 43873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/emitter/es2015/asyncGenerators/emitter.asyncGenerators.classMethods.es2015.ts 43883af6ab5fSopenharmony_ci@@ -58,3 +58,14 @@ class C9 extends B9 { 43893af6ab5fSopenharmony_ci super.g(); 43903af6ab5fSopenharmony_ci } 43913af6ab5fSopenharmony_ci } 43923af6ab5fSopenharmony_ci+ 43933af6ab5fSopenharmony_ci+let c1 = new C1(); 43943af6ab5fSopenharmony_ci+let c2 = new C2(); 43953af6ab5fSopenharmony_ci+let c3 = new C3(); 43963af6ab5fSopenharmony_ci+let c4 = new C4(); 43973af6ab5fSopenharmony_ci+let c5 = new C5(); 43983af6ab5fSopenharmony_ci+let c6 = new C6(); 43993af6ab5fSopenharmony_ci+let c7 = new C7(); 44003af6ab5fSopenharmony_ci+let c8 = new C8(); 44013af6ab5fSopenharmony_ci+let c9 = new C9(); 44023af6ab5fSopenharmony_ci+ 44033af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/es2018/es2018IntlAPIs.ts b/tests/cases/conformance/es2018/es2018IntlAPIs.ts 44043af6ab5fSopenharmony_cinew file mode 100644 44053af6ab5fSopenharmony_ciindex 0000000000..c1f6739202 44063af6ab5fSopenharmony_ci--- /dev/null 44073af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/es2018/es2018IntlAPIs.ts 44083af6ab5fSopenharmony_ci@@ -0,0 +1,7 @@ 44093af6ab5fSopenharmony_ci+// @target: es2018 44103af6ab5fSopenharmony_ci+ 44113af6ab5fSopenharmony_ci+// Sample from 44123af6ab5fSopenharmony_ci+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/PluralRules/supportedLocalesOf 44133af6ab5fSopenharmony_ci+const locales = ['ban', 'id-u-co-pinyin', 'de-ID']; 44143af6ab5fSopenharmony_ci+const options = { localeMatcher: 'lookup' } as const; 44153af6ab5fSopenharmony_ci+console.log(Intl.PluralRules.supportedLocalesOf(locales, options).join(', ')); 44163af6ab5fSopenharmony_ci\ No newline at end of file 44173af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/es2020/es2020IntlAPIs.ts b/tests/cases/conformance/es2020/es2020IntlAPIs.ts 44183af6ab5fSopenharmony_cinew file mode 100644 44193af6ab5fSopenharmony_ciindex 0000000000..464ecc01ec 44203af6ab5fSopenharmony_ci--- /dev/null 44213af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/es2020/es2020IntlAPIs.ts 44223af6ab5fSopenharmony_ci@@ -0,0 +1,45 @@ 44233af6ab5fSopenharmony_ci+// @target: es2020 44243af6ab5fSopenharmony_ci+ 44253af6ab5fSopenharmony_ci+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation 44263af6ab5fSopenharmony_ci+const count = 26254.39; 44273af6ab5fSopenharmony_ci+const date = new Date("2012-05-24"); 44283af6ab5fSopenharmony_ci+ 44293af6ab5fSopenharmony_ci+function log(locale: string) { 44303af6ab5fSopenharmony_ci+ console.log( 44313af6ab5fSopenharmony_ci+ `${new Intl.DateTimeFormat(locale).format(date)} ${new Intl.NumberFormat(locale).format(count)}` 44323af6ab5fSopenharmony_ci+ ); 44333af6ab5fSopenharmony_ci+} 44343af6ab5fSopenharmony_ci+ 44353af6ab5fSopenharmony_ci+log("en-US"); 44363af6ab5fSopenharmony_ci+// expected output: 5/24/2012 26,254.39 44373af6ab5fSopenharmony_ci+ 44383af6ab5fSopenharmony_ci+log("de-DE"); 44393af6ab5fSopenharmony_ci+// expected output: 24.5.2012 26.254,39 44403af6ab5fSopenharmony_ci+ 44413af6ab5fSopenharmony_ci+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat 44423af6ab5fSopenharmony_ci+const rtf1 = new Intl.RelativeTimeFormat('en', { style: 'narrow' }); 44433af6ab5fSopenharmony_ci+ 44443af6ab5fSopenharmony_ci+console.log(rtf1.format(3, 'quarter')); 44453af6ab5fSopenharmony_ci+//expected output: "in 3 qtrs." 44463af6ab5fSopenharmony_ci+ 44473af6ab5fSopenharmony_ci+console.log(rtf1.format(-1, 'day')); 44483af6ab5fSopenharmony_ci+//expected output: "1 day ago" 44493af6ab5fSopenharmony_ci+ 44503af6ab5fSopenharmony_ci+const rtf2 = new Intl.RelativeTimeFormat('es', { numeric: 'auto' }); 44513af6ab5fSopenharmony_ci+ 44523af6ab5fSopenharmony_ci+console.log(rtf2.format(2, 'day')); 44533af6ab5fSopenharmony_ci+//expected output: "pasado mañana" 44543af6ab5fSopenharmony_ci+ 44553af6ab5fSopenharmony_ci+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames 44563af6ab5fSopenharmony_ci+const regionNamesInEnglish = new Intl.DisplayNames(['en'], { type: 'region' }); 44573af6ab5fSopenharmony_ci+const regionNamesInTraditionalChinese = new Intl.DisplayNames(['zh-Hant'], { type: 'region' }); 44583af6ab5fSopenharmony_ci+ 44593af6ab5fSopenharmony_ci+console.log(regionNamesInEnglish.of('US')); 44603af6ab5fSopenharmony_ci+// expected output: "United States" 44613af6ab5fSopenharmony_ci+ 44623af6ab5fSopenharmony_ci+console.log(regionNamesInTraditionalChinese.of('US')); 44633af6ab5fSopenharmony_ci+// expected output: "美國" 44643af6ab5fSopenharmony_ci+ 44653af6ab5fSopenharmony_ci+const locales1 = ['ban', 'id-u-co-pinyin', 'de-ID']; 44663af6ab5fSopenharmony_ci+const options1 = { localeMatcher: 'lookup' } as const; 44673af6ab5fSopenharmony_ci+console.log(Intl.DisplayNames.supportedLocalesOf(locales1, options1).join(', ')); 44683af6ab5fSopenharmony_ci\ No newline at end of file 44693af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts b/tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts 44703af6ab5fSopenharmony_ciindex 5d18229ea0..de26b4fc10 100644 44713af6ab5fSopenharmony_ci--- a/tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts 44723af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts 44733af6ab5fSopenharmony_ci@@ -2,4 +2,6 @@ class B {} 44743af6ab5fSopenharmony_ci function foo() { 44753af6ab5fSopenharmony_ci return {B: B}; 44763af6ab5fSopenharmony_ci } 44773af6ab5fSopenharmony_ci-class C extends (foo()).B {} 44783af6ab5fSopenharmony_ci\ No newline at end of file 44793af6ab5fSopenharmony_ci+class C extends (foo()).B {} 44803af6ab5fSopenharmony_ci+let qt6 = new B(); 44813af6ab5fSopenharmony_ci+let qt7 = new C(); 44823af6ab5fSopenharmony_ci\ No newline at end of file 44833af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing1.ts b/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing1.ts 44843af6ab5fSopenharmony_ciindex e5d63f2e93..a872204ec7 100644 44853af6ab5fSopenharmony_ci--- a/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing1.ts 44863af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing1.ts 44873af6ab5fSopenharmony_ci@@ -13,3 +13,4 @@ class D extends Base { 44883af6ab5fSopenharmony_ci var i = Factory.create(s); 44893af6ab5fSopenharmony_ci } 44903af6ab5fSopenharmony_ci } 44913af6ab5fSopenharmony_ci+let qt2 = new D(); 44923af6ab5fSopenharmony_ci\ No newline at end of file 44933af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing2.ts b/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing2.ts 44943af6ab5fSopenharmony_ciindex 1b0a0d541e..826baf9d02 100644 44953af6ab5fSopenharmony_ci--- a/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing2.ts 44963af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing2.ts 44973af6ab5fSopenharmony_ci@@ -7,3 +7,4 @@ class D extends Base { 44983af6ab5fSopenharmony_ci super(() => { this._t }); // no error. only check when this is directly accessing in constructor 44993af6ab5fSopenharmony_ci } 45003af6ab5fSopenharmony_ci } 45013af6ab5fSopenharmony_ci+let qt5 = new D(); 45023af6ab5fSopenharmony_ci\ No newline at end of file 45033af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing5.ts b/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing5.ts 45043af6ab5fSopenharmony_ciindex 1782027758..10e7ca31aa 100644 45053af6ab5fSopenharmony_ci--- a/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing5.ts 45063af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing5.ts 45073af6ab5fSopenharmony_ci@@ -4,3 +4,4 @@ 45083af6ab5fSopenharmony_ci this._t; // No error 45093af6ab5fSopenharmony_ci } 45103af6ab5fSopenharmony_ci } 45113af6ab5fSopenharmony_ci+let qt4 = new D(); 45123af6ab5fSopenharmony_ci\ No newline at end of file 45133af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing8.ts b/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing8.ts 45143af6ab5fSopenharmony_ciindex 5742cdab84..3b55dbc70f 100644 45153af6ab5fSopenharmony_ci--- a/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing8.ts 45163af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/es6/classDeclaration/superCallBeforeThisAccessing8.ts 45173af6ab5fSopenharmony_ci@@ -10,3 +10,4 @@ class D extends Base { 45183af6ab5fSopenharmony_ci } 45193af6ab5fSopenharmony_ci } 45203af6ab5fSopenharmony_ci } 45213af6ab5fSopenharmony_ci+let qt3 = new D(); 45223af6ab5fSopenharmony_ci\ No newline at end of file 45233af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/es6/spread/arraySpreadImportHelpers.ts b/tests/cases/conformance/es6/spread/arraySpreadImportHelpers.ts 45243af6ab5fSopenharmony_cinew file mode 100644 45253af6ab5fSopenharmony_ciindex 0000000000..ebeb117ed0 45263af6ab5fSopenharmony_ci--- /dev/null 45273af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/es6/spread/arraySpreadImportHelpers.ts 45283af6ab5fSopenharmony_ci@@ -0,0 +1,16 @@ 45293af6ab5fSopenharmony_ci+// @target: es5 45303af6ab5fSopenharmony_ci+// @importHelpers: true 45313af6ab5fSopenharmony_ci+// @isolatedModules: true 45323af6ab5fSopenharmony_ci+// @noTypesAndSymbols: true 45333af6ab5fSopenharmony_ci+// @noEmit: true 45343af6ab5fSopenharmony_ci+// @filename: main.ts 45353af6ab5fSopenharmony_ci+ 45363af6ab5fSopenharmony_ci+export {}; 45373af6ab5fSopenharmony_ci+const k = [1, , 2]; 45383af6ab5fSopenharmony_ci+const o = [3, ...k, 4]; 45393af6ab5fSopenharmony_ci+ 45403af6ab5fSopenharmony_ci+// @filename: tslib.d.ts 45413af6ab5fSopenharmony_ci+// this is a pre-TS4.4 versions of emit helper, which always forced array packing 45423af6ab5fSopenharmony_ci+declare module "tslib" { 45433af6ab5fSopenharmony_ci+ function __spreadArray(to: any[], from: any[]): any[]; 45443af6ab5fSopenharmony_ci+} 45453af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/es6/templates/templateStringWithCommentsInArrowFunction.ts b/tests/cases/conformance/es6/templates/templateStringWithCommentsInArrowFunction.ts 45463af6ab5fSopenharmony_cinew file mode 100644 45473af6ab5fSopenharmony_ciindex 0000000000..c344bea1fb 45483af6ab5fSopenharmony_ci--- /dev/null 45493af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/es6/templates/templateStringWithCommentsInArrowFunction.ts 45503af6ab5fSopenharmony_ci@@ -0,0 +1,14 @@ 45513af6ab5fSopenharmony_ci+// @removeComments: false 45523af6ab5fSopenharmony_ci+ 45533af6ab5fSopenharmony_ci+const a = 1; 45543af6ab5fSopenharmony_ci+const f1 = () => 45553af6ab5fSopenharmony_ci+ `${ 45563af6ab5fSopenharmony_ci+ // a 45573af6ab5fSopenharmony_ci+ a 45583af6ab5fSopenharmony_ci+ }a`; 45593af6ab5fSopenharmony_ci+ 45603af6ab5fSopenharmony_ci+const f2 = () => 45613af6ab5fSopenharmony_ci+ `${ 45623af6ab5fSopenharmony_ci+ // a 45633af6ab5fSopenharmony_ci+ a 45643af6ab5fSopenharmony_ci+ }`; 45653af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/asOperator/asOperatorASI.ts b/tests/cases/conformance/expressions/asOperator/asOperatorASI.ts 45663af6ab5fSopenharmony_ciindex a4dd44a15a..ea325aefaf 100644 45673af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/asOperator/asOperatorASI.ts 45683af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/asOperator/asOperatorASI.ts 45693af6ab5fSopenharmony_ci@@ -8,3 +8,4 @@ as `Hello world`; // should not error 45703af6ab5fSopenharmony_ci // Example 2 45713af6ab5fSopenharmony_ci var y = 20 45723af6ab5fSopenharmony_ci as(Foo); // should emit 45733af6ab5fSopenharmony_ci+let qw11 = new Foo(); 45743af6ab5fSopenharmony_ci\ No newline at end of file 45753af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithIdenticalObjects.ts b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithIdenticalObjects.ts 45763af6ab5fSopenharmony_ciindex 05b8e135cb..285f41f742 100644 45773af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithIdenticalObjects.ts 45783af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithIdenticalObjects.ts 45793af6ab5fSopenharmony_ci@@ -191,4 +191,8 @@ var r8b3 = b2 !== a2; 45803af6ab5fSopenharmony_ci var r8b4 = b3 !== a3; 45813af6ab5fSopenharmony_ci var r8b5 = b4 !== a4; 45823af6ab5fSopenharmony_ci var r8b6 = b5 !== a5; 45833af6ab5fSopenharmony_ci-var r8b7 = b6 !== a6; 45843af6ab5fSopenharmony_ci\ No newline at end of file 45853af6ab5fSopenharmony_ci+var r8b7 = b6 !== a6; 45863af6ab5fSopenharmony_ci+let qr1 = new A1(); 45873af6ab5fSopenharmony_ci+let qr2 = new B1(); 45883af6ab5fSopenharmony_ci+let qr3 = new A2(); 45893af6ab5fSopenharmony_ci+let qr4 = new B2(); 45903af6ab5fSopenharmony_ci\ No newline at end of file 45913af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithIntersectionType.ts b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithIntersectionType.ts 45923af6ab5fSopenharmony_cinew file mode 100644 45933af6ab5fSopenharmony_ciindex 0000000000..68900e5f91 45943af6ab5fSopenharmony_ci--- /dev/null 45953af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithIntersectionType.ts 45963af6ab5fSopenharmony_ci@@ -0,0 +1,5 @@ 45973af6ab5fSopenharmony_ci+declare let a: { a: 1 } 45983af6ab5fSopenharmony_ci+a > 1; 45993af6ab5fSopenharmony_ci+ 46003af6ab5fSopenharmony_ci+declare let b: { a: 1 } & { b: number } 46013af6ab5fSopenharmony_ci+b > 1; 46023af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts 46033af6ab5fSopenharmony_ciindex 5670cf8ef1..441748fb1a 100644 46043af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts 46053af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts 46063af6ab5fSopenharmony_ci@@ -146,4 +146,6 @@ var r8b2 = b2 !== a2; 46073af6ab5fSopenharmony_ci var r8b3 = b3 !== a3; 46083af6ab5fSopenharmony_ci var r8b4 = b4 !== a4; 46093af6ab5fSopenharmony_ci var r8b5 = b5 !== a5; 46103af6ab5fSopenharmony_ci-var r8b6 = b6 !== a6; 46113af6ab5fSopenharmony_ci\ No newline at end of file 46123af6ab5fSopenharmony_ci+var r8b6 = b6 !== a6; 46133af6ab5fSopenharmony_ci+let qe5 = new Derived(); 46143af6ab5fSopenharmony_ci+let qe6 = new C(); 46153af6ab5fSopenharmony_ci\ No newline at end of file 46163af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts 46173af6ab5fSopenharmony_ciindex 8f3d914934..3f0d1adb65 100644 46183af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts 46193af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts 46203af6ab5fSopenharmony_ci@@ -146,4 +146,6 @@ var r8b2 = b2 !== a2; 46213af6ab5fSopenharmony_ci var r8b3 = b3 !== a3; 46223af6ab5fSopenharmony_ci var r8b4 = b4 !== a4; 46233af6ab5fSopenharmony_ci var r8b5 = b5 !== a5; 46243af6ab5fSopenharmony_ci-var r8b6 = b6 !== a6; 46253af6ab5fSopenharmony_ci\ No newline at end of file 46263af6ab5fSopenharmony_ci+var r8b6 = b6 !== a6; 46273af6ab5fSopenharmony_ci+let qe7 = new Derived(); 46283af6ab5fSopenharmony_ci+let qe8 = new C(); 46293af6ab5fSopenharmony_ci\ No newline at end of file 46303af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnCallSignature.ts b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnCallSignature.ts 46313af6ab5fSopenharmony_ciindex 6b6ae79015..e60a012739 100644 46323af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnCallSignature.ts 46333af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnCallSignature.ts 46343af6ab5fSopenharmony_ci@@ -256,4 +256,5 @@ var r8b8 = b8 !== a8; 46353af6ab5fSopenharmony_ci var r8b9 = b9 !== a9; 46363af6ab5fSopenharmony_ci var r8b10 = b10 !== a10; 46373af6ab5fSopenharmony_ci var r8b11 = b11 !== a11; 46383af6ab5fSopenharmony_ci-//var r8b12 = b12 !== a12; 46393af6ab5fSopenharmony_ci\ No newline at end of file 46403af6ab5fSopenharmony_ci+//var r8b12 = b12 !== a12; 46413af6ab5fSopenharmony_ci+let qw12 = new Derived(); 46423af6ab5fSopenharmony_ci\ No newline at end of file 46433af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnConstructorSignature.ts b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnConstructorSignature.ts 46443af6ab5fSopenharmony_ciindex 363192f49f..e42a1cc1c1 100644 46453af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnConstructorSignature.ts 46463af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnConstructorSignature.ts 46473af6ab5fSopenharmony_ci@@ -218,4 +218,5 @@ var r8b6 = b6 !== a6; 46483af6ab5fSopenharmony_ci var r8b7 = b7 !== a7; 46493af6ab5fSopenharmony_ci var r8b8 = b8 !== a8; 46503af6ab5fSopenharmony_ci var r8b9 = b9 !== a9; 46513af6ab5fSopenharmony_ci-//var r8b10 = b10 !== a10; 46523af6ab5fSopenharmony_ci\ No newline at end of file 46533af6ab5fSopenharmony_ci+//var r8b10 = b10 !== a10; 46543af6ab5fSopenharmony_ci+let qe9 = new Derived(); 46553af6ab5fSopenharmony_ci\ No newline at end of file 46563af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnIndexSignature.ts b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnIndexSignature.ts 46573af6ab5fSopenharmony_ciindex 8246c6dd18..9154c7f806 100644 46583af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnIndexSignature.ts 46593af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnIndexSignature.ts 46603af6ab5fSopenharmony_ci@@ -104,4 +104,5 @@ var r8a1 = a4 !== b4; 46613af6ab5fSopenharmony_ci var r8b1 = b1 !== a1; 46623af6ab5fSopenharmony_ci var r8b1 = b2 !== a2; 46633af6ab5fSopenharmony_ci var r8b1 = b3 !== a3; 46643af6ab5fSopenharmony_ci-var r8b1 = b4 !== a4; 46653af6ab5fSopenharmony_ci\ No newline at end of file 46663af6ab5fSopenharmony_ci+var r8b1 = b4 !== a4; 46673af6ab5fSopenharmony_ci+let qr5 = new Derived(); 46683af6ab5fSopenharmony_ci\ No newline at end of file 46693af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.ts b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.ts 46703af6ab5fSopenharmony_ciindex da3d4131c6..59f9a78a38 100644 46713af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.ts 46723af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.ts 46733af6ab5fSopenharmony_ci@@ -161,4 +161,5 @@ var r8b3 = b3 !== a3; 46743af6ab5fSopenharmony_ci var r8b4 = b4 !== a4; 46753af6ab5fSopenharmony_ci var r8b5 = b5 !== a5; 46763af6ab5fSopenharmony_ci var r8b6 = b6 !== a6; 46773af6ab5fSopenharmony_ci-//var r8b7 = b7 !== a7; 46783af6ab5fSopenharmony_ci\ No newline at end of file 46793af6ab5fSopenharmony_ci+//var r8b7 = b7 !== a7; 46803af6ab5fSopenharmony_ci+let qw14 = new Derived(); 46813af6ab5fSopenharmony_ci\ No newline at end of file 46823af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.ts b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.ts 46833af6ab5fSopenharmony_ciindex 5a2356eadb..05f49336bf 100644 46843af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.ts 46853af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.ts 46863af6ab5fSopenharmony_ci@@ -161,4 +161,5 @@ var r8b3 = b3 !== a3; 46873af6ab5fSopenharmony_ci var r8b4 = b4 !== a4; 46883af6ab5fSopenharmony_ci var r8b5 = b5 !== a5; 46893af6ab5fSopenharmony_ci var r8b6 = b6 !== a6; 46903af6ab5fSopenharmony_ci-//var r8b7 = b7 !== a7; 46913af6ab5fSopenharmony_ci\ No newline at end of file 46923af6ab5fSopenharmony_ci+//var r8b7 = b7 !== a7; 46933af6ab5fSopenharmony_ci+let qw13 = new Derived(); 46943af6ab5fSopenharmony_ci\ No newline at end of file 46953af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnProperty.ts b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnProperty.ts 46963af6ab5fSopenharmony_ciindex 6401feb11c..fb2cd09f76 100644 46973af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnProperty.ts 46983af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnProperty.ts 46993af6ab5fSopenharmony_ci@@ -75,4 +75,8 @@ var rg4 = b2 === a2; 47003af6ab5fSopenharmony_ci var rh1 = a1 !== b1; 47013af6ab5fSopenharmony_ci var rh2 = a2 !== b2; 47023af6ab5fSopenharmony_ci var rh3 = b1 !== a1; 47033af6ab5fSopenharmony_ci-var rh4 = b2 !== a2; 47043af6ab5fSopenharmony_ci\ No newline at end of file 47053af6ab5fSopenharmony_ci+var rh4 = b2 !== a2; 47063af6ab5fSopenharmony_ci+let qe1 = new Derived(); 47073af6ab5fSopenharmony_ci+let qe2 = new A1(); 47083af6ab5fSopenharmony_ci+let qe3 = new B1(); 47093af6ab5fSopenharmony_ci+let qe4 = new B2(); 47103af6ab5fSopenharmony_ci\ No newline at end of file 47113af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/instanceofOperator/instanceofOperatorWithInvalidStaticToString.ts b/tests/cases/conformance/expressions/binaryOperators/instanceofOperator/instanceofOperatorWithInvalidStaticToString.ts 47123af6ab5fSopenharmony_ciindex b99f8d7114..1399026e80 100644 47133af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/binaryOperators/instanceofOperator/instanceofOperatorWithInvalidStaticToString.ts 47143af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/instanceofOperator/instanceofOperatorWithInvalidStaticToString.ts 47153af6ab5fSopenharmony_ci@@ -19,3 +19,6 @@ declare class NormalToString { 47163af6ab5fSopenharmony_ci function baz(normal: NormalToString) { 47173af6ab5fSopenharmony_ci return normal instanceof NormalToString; 47183af6ab5fSopenharmony_ci } 47193af6ab5fSopenharmony_ci+let qr7 = new StaticToString(); 47203af6ab5fSopenharmony_ci+let qr8 = new StaticToNumber(); 47213af6ab5fSopenharmony_ci+let qr9 = new NormalToString(); 47223af6ab5fSopenharmony_ci\ No newline at end of file 47233af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/binaryOperators/instanceofOperator/instanceofOperatorWithLHSIsObject.ts b/tests/cases/conformance/expressions/binaryOperators/instanceofOperator/instanceofOperatorWithLHSIsObject.ts 47243af6ab5fSopenharmony_ciindex 6b88cd39f2..47a60b104b 100644 47253af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/binaryOperators/instanceofOperator/instanceofOperatorWithLHSIsObject.ts 47263af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/binaryOperators/instanceofOperator/instanceofOperatorWithLHSIsObject.ts 47273af6ab5fSopenharmony_ci@@ -12,3 +12,4 @@ var r1 = a instanceof x1; 47283af6ab5fSopenharmony_ci var r2 = b instanceof x2; 47293af6ab5fSopenharmony_ci var r3 = c instanceof x1; 47303af6ab5fSopenharmony_ci var r4 = d instanceof x1; 47313af6ab5fSopenharmony_ci+let qr0 = new C(); 47323af6ab5fSopenharmony_ci\ No newline at end of file 47333af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/commaOperator/commaOperatorWithSecondOperandObjectType.ts b/tests/cases/conformance/expressions/commaOperator/commaOperatorWithSecondOperandObjectType.ts 47343af6ab5fSopenharmony_ciindex 0a6a47dfbb..4e2e1e494d 100644 47353af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/commaOperator/commaOperatorWithSecondOperandObjectType.ts 47363af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/commaOperator/commaOperatorWithSecondOperandObjectType.ts 47373af6ab5fSopenharmony_ci@@ -38,3 +38,4 @@ var resultIsObject8 = (true, {}); 47383af6ab5fSopenharmony_ci var resultIsObject9 = (!BOOLEAN, { a: 1, b: "s" }); 47393af6ab5fSopenharmony_ci var resultIsObject10 = ("string", new Date()); 47403af6ab5fSopenharmony_ci var resultIsObject11 = (STRING.toLowerCase(), new CLASS()); 47413af6ab5fSopenharmony_ci+let qw10 = new CLASS(); 47423af6ab5fSopenharmony_ci\ No newline at end of file 47433af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithIdenticalBCT.ts b/tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithIdenticalBCT.ts 47443af6ab5fSopenharmony_ciindex 11652b023d..93bdd906c6 100644 47453af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithIdenticalBCT.ts 47463af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithIdenticalBCT.ts 47473af6ab5fSopenharmony_ci@@ -44,3 +44,6 @@ var result10: (t: X) => any = true ? (m) => m.propertyX1 : (n) => n.propertyX2; 47483af6ab5fSopenharmony_ci 47493af6ab5fSopenharmony_ci //Expr1 and Expr2 are literals 47503af6ab5fSopenharmony_ci var result11: any = true ? 1 : 'string'; 47513af6ab5fSopenharmony_ci+ 47523af6ab5fSopenharmony_ci+let qq1 = new A(); 47533af6ab5fSopenharmony_ci+let qq0 = new B(); 47543af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/contextualTyping/superCallParameterContextualTyping1.ts b/tests/cases/conformance/expressions/contextualTyping/superCallParameterContextualTyping1.ts 47553af6ab5fSopenharmony_ciindex 7bcde9a695..fc8bde2595 100644 47563af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/contextualTyping/superCallParameterContextualTyping1.ts 47573af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/contextualTyping/superCallParameterContextualTyping1.ts 47583af6ab5fSopenharmony_ci@@ -9,3 +9,5 @@ class B extends A<number, string> { 47593af6ab5fSopenharmony_ci // Ensure 'value' is of type 'number (and not '{}') by using its 'toExponential()' method. 47603af6ab5fSopenharmony_ci constructor() { super(value => String(value.toExponential())); } 47613af6ab5fSopenharmony_ci } 47623af6ab5fSopenharmony_ci+ 47633af6ab5fSopenharmony_ci+let qr17 = new B(); 47643af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/contextualTyping/superCallParameterContextualTyping3.ts b/tests/cases/conformance/expressions/contextualTyping/superCallParameterContextualTyping3.ts 47653af6ab5fSopenharmony_ciindex 760337f3ef..6eac51e440 100644 47663af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/contextualTyping/superCallParameterContextualTyping3.ts 47673af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/contextualTyping/superCallParameterContextualTyping3.ts 47683af6ab5fSopenharmony_ci@@ -28,4 +28,5 @@ class C extends CBase<string> { 47693af6ab5fSopenharmony_ci } 47703af6ab5fSopenharmony_ci }); 47713af6ab5fSopenharmony_ci } 47723af6ab5fSopenharmony_ci-} 47733af6ab5fSopenharmony_ci\ No newline at end of file 47743af6ab5fSopenharmony_ci+} 47753af6ab5fSopenharmony_ci+let qt1 = new C(); 47763af6ab5fSopenharmony_ci\ No newline at end of file 47773af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/functionCalls/callWithSpread.ts b/tests/cases/conformance/expressions/functionCalls/callWithSpread.ts 47783af6ab5fSopenharmony_ciindex b1e2ee7578..3ba8aa488a 100644 47793af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/functionCalls/callWithSpread.ts 47803af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/functionCalls/callWithSpread.ts 47813af6ab5fSopenharmony_ci@@ -55,3 +55,4 @@ class D extends C { 47823af6ab5fSopenharmony_ci super.foo(1, 2, ...a); 47833af6ab5fSopenharmony_ci } 47843af6ab5fSopenharmony_ci } 47853af6ab5fSopenharmony_ci+let qr13 = new D(); 47863af6ab5fSopenharmony_ci\ No newline at end of file 47873af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/functions/arrowFunctionExpressions.ts b/tests/cases/conformance/expressions/functions/arrowFunctionExpressions.ts 47883af6ab5fSopenharmony_ciindex 707ef02de8..304d6792dc 100644 47893af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/functions/arrowFunctionExpressions.ts 47903af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/functions/arrowFunctionExpressions.ts 47913af6ab5fSopenharmony_ci@@ -96,3 +96,4 @@ function tryCatchFn() { 47923af6ab5fSopenharmony_ci var m = () => this + ''; 47933af6ab5fSopenharmony_ci } 47943af6ab5fSopenharmony_ci } 47953af6ab5fSopenharmony_ci+let qr14 = new MyClass(); 47963af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/newOperator/newOperatorConformance.ts b/tests/cases/conformance/expressions/newOperator/newOperatorConformance.ts 47973af6ab5fSopenharmony_ciindex b50751c7ae..051e4e3c3e 100644 47983af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/newOperator/newOperatorConformance.ts 47993af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/newOperator/newOperatorConformance.ts 48003af6ab5fSopenharmony_ci@@ -60,3 +60,4 @@ var t: any; 48013af6ab5fSopenharmony_ci var nested = new (new (new nestedCtor())())(); 48023af6ab5fSopenharmony_ci var n = new nested(); 48033af6ab5fSopenharmony_ci var n = new nested(); 48043af6ab5fSopenharmony_ci+let aa1 = new C1(null,null); 48053af6ab5fSopenharmony_ci\ No newline at end of file 48063af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/superCalls/superCalls.ts b/tests/cases/conformance/expressions/superCalls/superCalls.ts 48073af6ab5fSopenharmony_ciindex fdebc85906..da0fe9656b 100644 48083af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/superCalls/superCalls.ts 48093af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/superCalls/superCalls.ts 48103af6ab5fSopenharmony_ci@@ -27,3 +27,5 @@ class OtherDerived extends OtherBase { 48113af6ab5fSopenharmony_ci super(); 48123af6ab5fSopenharmony_ci } 48133af6ab5fSopenharmony_ci } 48143af6ab5fSopenharmony_ci+let qr15 = new Derived(null); 48153af6ab5fSopenharmony_ci+let qr16 = new OtherDerived(); 48163af6ab5fSopenharmony_ci\ No newline at end of file 48173af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/thisKeyword/typeOfThisGeneral.ts b/tests/cases/conformance/expressions/thisKeyword/typeOfThisGeneral.ts 48183af6ab5fSopenharmony_cinew file mode 100644 48193af6ab5fSopenharmony_ciindex 0000000000..99d6a50b00 48203af6ab5fSopenharmony_ci--- /dev/null 48213af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/thisKeyword/typeOfThisGeneral.ts 48223af6ab5fSopenharmony_ci@@ -0,0 +1,178 @@ 48233af6ab5fSopenharmony_ci+// @target: esnext 48243af6ab5fSopenharmony_ci+// @useDefineForClassFields: false 48253af6ab5fSopenharmony_ci+class MyTestClass { 48263af6ab5fSopenharmony_ci+ private canary: number; 48273af6ab5fSopenharmony_ci+ static staticCanary: number; 48283af6ab5fSopenharmony_ci+ 48293af6ab5fSopenharmony_ci+ constructor() { 48303af6ab5fSopenharmony_ci+ //type of 'this' in constructor body is the class instance type 48313af6ab5fSopenharmony_ci+ var p = this.canary; 48323af6ab5fSopenharmony_ci+ var p: number; 48333af6ab5fSopenharmony_ci+ this.canary = 3; 48343af6ab5fSopenharmony_ci+ } 48353af6ab5fSopenharmony_ci+ 48363af6ab5fSopenharmony_ci+ //type of 'this' in member function param list is the class instance type 48373af6ab5fSopenharmony_ci+ memberFunc(t = this) { 48383af6ab5fSopenharmony_ci+ var t: MyTestClass; 48393af6ab5fSopenharmony_ci+ 48403af6ab5fSopenharmony_ci+ //type of 'this' in member function body is the class instance type 48413af6ab5fSopenharmony_ci+ var p = this; 48423af6ab5fSopenharmony_ci+ var p: MyTestClass; 48433af6ab5fSopenharmony_ci+ } 48443af6ab5fSopenharmony_ci+ 48453af6ab5fSopenharmony_ci+ //type of 'this' in member accessor(get and set) body is the class instance type 48463af6ab5fSopenharmony_ci+ get prop() { 48473af6ab5fSopenharmony_ci+ var p = this; 48483af6ab5fSopenharmony_ci+ var p: MyTestClass; 48493af6ab5fSopenharmony_ci+ return this; 48503af6ab5fSopenharmony_ci+ } 48513af6ab5fSopenharmony_ci+ set prop(v) { 48523af6ab5fSopenharmony_ci+ var p = this; 48533af6ab5fSopenharmony_ci+ var p: MyTestClass; 48543af6ab5fSopenharmony_ci+ p = v; 48553af6ab5fSopenharmony_ci+ v = p; 48563af6ab5fSopenharmony_ci+ } 48573af6ab5fSopenharmony_ci+ 48583af6ab5fSopenharmony_ci+ someFunc = () => { 48593af6ab5fSopenharmony_ci+ //type of 'this' in member variable initializer is the class instance type 48603af6ab5fSopenharmony_ci+ var t = this; 48613af6ab5fSopenharmony_ci+ var t: MyTestClass; 48623af6ab5fSopenharmony_ci+ }; 48633af6ab5fSopenharmony_ci+ 48643af6ab5fSopenharmony_ci+ //type of 'this' in static function param list is constructor function type 48653af6ab5fSopenharmony_ci+ static staticFn(t = this) { 48663af6ab5fSopenharmony_ci+ var t: typeof MyTestClass; 48673af6ab5fSopenharmony_ci+ var t = MyTestClass; 48683af6ab5fSopenharmony_ci+ t.staticCanary; 48693af6ab5fSopenharmony_ci+ 48703af6ab5fSopenharmony_ci+ //type of 'this' in static function body is constructor function type 48713af6ab5fSopenharmony_ci+ var p = this; 48723af6ab5fSopenharmony_ci+ var p: typeof MyTestClass; 48733af6ab5fSopenharmony_ci+ var p = MyTestClass; 48743af6ab5fSopenharmony_ci+ p.staticCanary; 48753af6ab5fSopenharmony_ci+ } 48763af6ab5fSopenharmony_ci+ 48773af6ab5fSopenharmony_ci+ static get staticProp() { 48783af6ab5fSopenharmony_ci+ //type of 'this' in static accessor body is constructor function type 48793af6ab5fSopenharmony_ci+ var p = this; 48803af6ab5fSopenharmony_ci+ var p: typeof MyTestClass; 48813af6ab5fSopenharmony_ci+ var p = MyTestClass; 48823af6ab5fSopenharmony_ci+ p.staticCanary; 48833af6ab5fSopenharmony_ci+ return this; 48843af6ab5fSopenharmony_ci+ } 48853af6ab5fSopenharmony_ci+ static set staticProp(v: typeof MyTestClass) { 48863af6ab5fSopenharmony_ci+ //type of 'this' in static accessor body is constructor function type 48873af6ab5fSopenharmony_ci+ var p = this; 48883af6ab5fSopenharmony_ci+ var p: typeof MyTestClass; 48893af6ab5fSopenharmony_ci+ var p = MyTestClass; 48903af6ab5fSopenharmony_ci+ p.staticCanary; 48913af6ab5fSopenharmony_ci+ } 48923af6ab5fSopenharmony_ci+} 48933af6ab5fSopenharmony_ci+ 48943af6ab5fSopenharmony_ci+class MyGenericTestClass<T, U> { 48953af6ab5fSopenharmony_ci+ private canary: number; 48963af6ab5fSopenharmony_ci+ static staticCanary: number; 48973af6ab5fSopenharmony_ci+ 48983af6ab5fSopenharmony_ci+ constructor() { 48993af6ab5fSopenharmony_ci+ //type of 'this' in constructor body is the class instance type 49003af6ab5fSopenharmony_ci+ var p = this.canary; 49013af6ab5fSopenharmony_ci+ var p: number; 49023af6ab5fSopenharmony_ci+ this.canary = 3; 49033af6ab5fSopenharmony_ci+ } 49043af6ab5fSopenharmony_ci+ 49053af6ab5fSopenharmony_ci+ //type of 'this' in member function param list is the class instance type 49063af6ab5fSopenharmony_ci+ memberFunc(t = this) { 49073af6ab5fSopenharmony_ci+ var t: MyGenericTestClass<T, U>; 49083af6ab5fSopenharmony_ci+ 49093af6ab5fSopenharmony_ci+ //type of 'this' in member function body is the class instance type 49103af6ab5fSopenharmony_ci+ var p = this; 49113af6ab5fSopenharmony_ci+ var p: MyGenericTestClass<T, U>; 49123af6ab5fSopenharmony_ci+ } 49133af6ab5fSopenharmony_ci+ 49143af6ab5fSopenharmony_ci+ //type of 'this' in member accessor(get and set) body is the class instance type 49153af6ab5fSopenharmony_ci+ get prop() { 49163af6ab5fSopenharmony_ci+ var p = this; 49173af6ab5fSopenharmony_ci+ var p: MyGenericTestClass<T, U>; 49183af6ab5fSopenharmony_ci+ return this; 49193af6ab5fSopenharmony_ci+ } 49203af6ab5fSopenharmony_ci+ set prop(v) { 49213af6ab5fSopenharmony_ci+ var p = this; 49223af6ab5fSopenharmony_ci+ var p: MyGenericTestClass<T, U>; 49233af6ab5fSopenharmony_ci+ p = v; 49243af6ab5fSopenharmony_ci+ v = p; 49253af6ab5fSopenharmony_ci+ } 49263af6ab5fSopenharmony_ci+ 49273af6ab5fSopenharmony_ci+ someFunc = () => { 49283af6ab5fSopenharmony_ci+ //type of 'this' in member variable initializer is the class instance type 49293af6ab5fSopenharmony_ci+ var t = this; 49303af6ab5fSopenharmony_ci+ var t: MyGenericTestClass<T, U>; 49313af6ab5fSopenharmony_ci+ }; 49323af6ab5fSopenharmony_ci+ 49333af6ab5fSopenharmony_ci+ //type of 'this' in static function param list is constructor function type 49343af6ab5fSopenharmony_ci+ static staticFn(t = this) { 49353af6ab5fSopenharmony_ci+ var t: typeof MyGenericTestClass; 49363af6ab5fSopenharmony_ci+ var t = MyGenericTestClass; 49373af6ab5fSopenharmony_ci+ t.staticCanary; 49383af6ab5fSopenharmony_ci+ 49393af6ab5fSopenharmony_ci+ //type of 'this' in static function body is constructor function type 49403af6ab5fSopenharmony_ci+ var p = this; 49413af6ab5fSopenharmony_ci+ var p: typeof MyGenericTestClass; 49423af6ab5fSopenharmony_ci+ var p = MyGenericTestClass; 49433af6ab5fSopenharmony_ci+ p.staticCanary; 49443af6ab5fSopenharmony_ci+ } 49453af6ab5fSopenharmony_ci+ 49463af6ab5fSopenharmony_ci+ static get staticProp() { 49473af6ab5fSopenharmony_ci+ //type of 'this' in static accessor body is constructor function type 49483af6ab5fSopenharmony_ci+ var p = this; 49493af6ab5fSopenharmony_ci+ var p: typeof MyGenericTestClass; 49503af6ab5fSopenharmony_ci+ var p = MyGenericTestClass; 49513af6ab5fSopenharmony_ci+ p.staticCanary; 49523af6ab5fSopenharmony_ci+ return this; 49533af6ab5fSopenharmony_ci+ } 49543af6ab5fSopenharmony_ci+ static set staticProp(v: typeof MyGenericTestClass) { 49553af6ab5fSopenharmony_ci+ //type of 'this' in static accessor body is constructor function type 49563af6ab5fSopenharmony_ci+ var p = this; 49573af6ab5fSopenharmony_ci+ var p: typeof MyGenericTestClass; 49583af6ab5fSopenharmony_ci+ var p = MyGenericTestClass; 49593af6ab5fSopenharmony_ci+ p.staticCanary; 49603af6ab5fSopenharmony_ci+ } 49613af6ab5fSopenharmony_ci+} 49623af6ab5fSopenharmony_ci+ 49633af6ab5fSopenharmony_ci+//type of 'this' in a function declaration param list is Any 49643af6ab5fSopenharmony_ci+function fn(s = this) { 49653af6ab5fSopenharmony_ci+ var s: any; 49663af6ab5fSopenharmony_ci+ s.spaaaaaaace = 4; 49673af6ab5fSopenharmony_ci+ 49683af6ab5fSopenharmony_ci+ //type of 'this' in a function declaration body is Any 49693af6ab5fSopenharmony_ci+ var t: any; 49703af6ab5fSopenharmony_ci+ var t = this; 49713af6ab5fSopenharmony_ci+ this.spaaaaace = 4; 49723af6ab5fSopenharmony_ci+} 49733af6ab5fSopenharmony_ci+ 49743af6ab5fSopenharmony_ci+//type of 'this' in a function expression param list list is Any 49753af6ab5fSopenharmony_ci+var q1 = function (s = this) { 49763af6ab5fSopenharmony_ci+ var s: any; 49773af6ab5fSopenharmony_ci+ s.spaaaaaaace = 4; 49783af6ab5fSopenharmony_ci+ 49793af6ab5fSopenharmony_ci+ //type of 'this' in a function expression body is Any 49803af6ab5fSopenharmony_ci+ var t: any; 49813af6ab5fSopenharmony_ci+ var t = this; 49823af6ab5fSopenharmony_ci+ this.spaaaaace = 4; 49833af6ab5fSopenharmony_ci+} 49843af6ab5fSopenharmony_ci+ 49853af6ab5fSopenharmony_ci+//type of 'this' in a fat arrow expression param list is typeof globalThis 49863af6ab5fSopenharmony_ci+var q2 = (s = this) => { 49873af6ab5fSopenharmony_ci+ var s: typeof globalThis; 49883af6ab5fSopenharmony_ci+ s.spaaaaaaace = 4; 49893af6ab5fSopenharmony_ci+ 49903af6ab5fSopenharmony_ci+ //type of 'this' in a fat arrow expression body is typeof globalThis 49913af6ab5fSopenharmony_ci+ var t: typeof globalThis; 49923af6ab5fSopenharmony_ci+ var t = this; 49933af6ab5fSopenharmony_ci+ this.spaaaaace = 4; 49943af6ab5fSopenharmony_ci+} 49953af6ab5fSopenharmony_ci+ 49963af6ab5fSopenharmony_ci+//type of 'this' in global module is GlobalThis 49973af6ab5fSopenharmony_ci+var t: typeof globalThis; 49983af6ab5fSopenharmony_ci+var t = this; 49993af6ab5fSopenharmony_ci+this.spaaaaace = 4; 50003af6ab5fSopenharmony_ci+ 50013af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/TypeGuardWithArrayUnion.ts b/tests/cases/conformance/expressions/typeGuards/TypeGuardWithArrayUnion.ts 50023af6ab5fSopenharmony_ciindex 8884754b48..c6378e0dc3 100644 50033af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/TypeGuardWithArrayUnion.ts 50043af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/TypeGuardWithArrayUnion.ts 50053af6ab5fSopenharmony_ci@@ -7,3 +7,4 @@ function saySize(message: Message | Message[]) { 50063af6ab5fSopenharmony_ci return message.length; // Should have type Message[] here 50073af6ab5fSopenharmony_ci } 50083af6ab5fSopenharmony_ci } 50093af6ab5fSopenharmony_ci+let rr5 = new Message(); 50103af6ab5fSopenharmony_ci\ No newline at end of file 50113af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardFunction.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardFunction.ts 50123af6ab5fSopenharmony_ciindex 57d56ccc3b..0f531ea811 100644 50133af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardFunction.ts 50143af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardFunction.ts 50153af6ab5fSopenharmony_ci@@ -80,4 +80,8 @@ acceptingTypeGuardFunction(isA); 50163af6ab5fSopenharmony_ci 50173af6ab5fSopenharmony_ci // Binary expressions 50183af6ab5fSopenharmony_ci let union2: C | B; 50193af6ab5fSopenharmony_ci-let union3: boolean | B = isA(union2) || union2; 50203af6ab5fSopenharmony_ci\ No newline at end of file 50213af6ab5fSopenharmony_ci+let union3: boolean | B = isA(union2) || union2; 50223af6ab5fSopenharmony_ci+ 50233af6ab5fSopenharmony_ci+let ee2 = new B(); 50243af6ab5fSopenharmony_ci+let ee3 = new C(); 50253af6ab5fSopenharmony_ci+let ee4 = new D(); 50263af6ab5fSopenharmony_ci\ No newline at end of file 50273af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionGenerics.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionGenerics.ts 50283af6ab5fSopenharmony_ciindex d0e108b573..3511cc54b1 100644 50293af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionGenerics.ts 50303af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionGenerics.ts 50313af6ab5fSopenharmony_ci@@ -30,4 +30,6 @@ let test2: B = funC(isB); 50323af6ab5fSopenharmony_ci if (funD(isC, a)) { 50333af6ab5fSopenharmony_ci a.propC; 50343af6ab5fSopenharmony_ci } 50353af6ab5fSopenharmony_ci-let test3: B = funE(isB, 1); 50363af6ab5fSopenharmony_ci\ No newline at end of file 50373af6ab5fSopenharmony_ci+let test3: B = funE(isB, 1); 50383af6ab5fSopenharmony_ci+let qw7 = new B(); 50393af6ab5fSopenharmony_ci+let qw8 = new C(); 50403af6ab5fSopenharmony_ci\ No newline at end of file 50413af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormExpr1AndExpr2.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormExpr1AndExpr2.ts 50423af6ab5fSopenharmony_ciindex 1ed8e6ebb0..e14dd79116 100644 50433af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormExpr1AndExpr2.ts 50443af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormExpr1AndExpr2.ts 50453af6ab5fSopenharmony_ci@@ -43,4 +43,5 @@ if (typeof strOrNumOrBool !== "string" && numOrBool !== strOrNumOrBool) { 50463af6ab5fSopenharmony_ci } 50473af6ab5fSopenharmony_ci else { 50483af6ab5fSopenharmony_ci var r3: string | number | boolean = strOrNumOrBool; // string | number | boolean 50493af6ab5fSopenharmony_ci-} 50503af6ab5fSopenharmony_ci\ No newline at end of file 50513af6ab5fSopenharmony_ci+} 50523af6ab5fSopenharmony_ci+let rr1 = new C(); 50533af6ab5fSopenharmony_ci\ No newline at end of file 50543af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormExpr1OrExpr2.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormExpr1OrExpr2.ts 50553af6ab5fSopenharmony_ciindex 1d72f35828..3411e32bcf 100644 50563af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormExpr1OrExpr2.ts 50573af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormExpr1OrExpr2.ts 50583af6ab5fSopenharmony_ci@@ -43,4 +43,5 @@ if (typeof strOrNumOrBool === "string" || numOrBool !== strOrNumOrBool) { 50593af6ab5fSopenharmony_ci } 50603af6ab5fSopenharmony_ci else { 50613af6ab5fSopenharmony_ci numOrBool = strOrNumOrBool; // number | boolean 50623af6ab5fSopenharmony_ci-} 50633af6ab5fSopenharmony_ci\ No newline at end of file 50643af6ab5fSopenharmony_ci+} 50653af6ab5fSopenharmony_ci+let qw2 = new C(); 50663af6ab5fSopenharmony_ci\ No newline at end of file 50673af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormInstanceOf.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormInstanceOf.ts 50683af6ab5fSopenharmony_ciindex 31514fca74..db3d488209 100644 50693af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormInstanceOf.ts 50703af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormInstanceOf.ts 50713af6ab5fSopenharmony_ci@@ -1,25 +1,25 @@ 50723af6ab5fSopenharmony_ci-// A type guard of the form x instanceof C, where C is of a subtype of the global type 'Function' 50733af6ab5fSopenharmony_ci-// and C has a property named 'prototype' 50743af6ab5fSopenharmony_ci-// - when true, narrows the type of x to the type of the 'prototype' property in C provided 50753af6ab5fSopenharmony_ci-// it is a subtype of the type of x, or 50763af6ab5fSopenharmony_ci-// - when false, has no effect on the type of x. 50773af6ab5fSopenharmony_ci- 50783af6ab5fSopenharmony_ci-class C1 { 50793af6ab5fSopenharmony_ci- p1: string; 50803af6ab5fSopenharmony_ci-} 50813af6ab5fSopenharmony_ci-class C2 { 50823af6ab5fSopenharmony_ci- p2: number; 50833af6ab5fSopenharmony_ci-} 50843af6ab5fSopenharmony_ci-class D1 extends C1 { 50853af6ab5fSopenharmony_ci- p3: number; 50863af6ab5fSopenharmony_ci-} 50873af6ab5fSopenharmony_ci+// A type guard of the form x instanceof C, where C is of a subtype of the global type 'Function' 50883af6ab5fSopenharmony_ci+// and C has a property named 'prototype' 50893af6ab5fSopenharmony_ci+// - when true, narrows the type of x to the type of the 'prototype' property in C provided 50903af6ab5fSopenharmony_ci+// it is a subtype of the type of x, or 50913af6ab5fSopenharmony_ci+// - when false, has no effect on the type of x. 50923af6ab5fSopenharmony_ci+ 50933af6ab5fSopenharmony_ci+class C1 { 50943af6ab5fSopenharmony_ci+ p1: string; 50953af6ab5fSopenharmony_ci+} 50963af6ab5fSopenharmony_ci+class C2 { 50973af6ab5fSopenharmony_ci+ p2: number; 50983af6ab5fSopenharmony_ci+} 50993af6ab5fSopenharmony_ci+class D1 extends C1 { 51003af6ab5fSopenharmony_ci+ p3: number; 51013af6ab5fSopenharmony_ci+} 51023af6ab5fSopenharmony_ci class C3 { 51033af6ab5fSopenharmony_ci p4: number; 51043af6ab5fSopenharmony_ci } 51053af6ab5fSopenharmony_ci-var str: string; 51063af6ab5fSopenharmony_ci-var num: number; 51073af6ab5fSopenharmony_ci-var strOrNum: string | number; 51083af6ab5fSopenharmony_ci- 51093af6ab5fSopenharmony_ci+var str: string; 51103af6ab5fSopenharmony_ci+var num: number; 51113af6ab5fSopenharmony_ci+var strOrNum: string | number; 51123af6ab5fSopenharmony_ci+ 51133af6ab5fSopenharmony_ci var ctor1: C1 | C2; 51143af6ab5fSopenharmony_ci str = ctor1 instanceof C1 && ctor1.p1; // C1 51153af6ab5fSopenharmony_ci num = ctor1 instanceof C2 && ctor1.p2; // C2 51163af6ab5fSopenharmony_ci@@ -31,7 +31,7 @@ num = ctor2 instanceof C2 && ctor2.p2; // C2 51173af6ab5fSopenharmony_ci num = ctor2 instanceof D1 && ctor2.p3; // D1 51183af6ab5fSopenharmony_ci str = ctor2 instanceof D1 && ctor2.p1; // D1 51193af6ab5fSopenharmony_ci var r2: D1 | C2 = ctor2 instanceof C1 && ctor2; // C2 | D1 51203af6ab5fSopenharmony_ci- 51213af6ab5fSopenharmony_ci+ 51223af6ab5fSopenharmony_ci var ctor3: C1 | C2; 51233af6ab5fSopenharmony_ci if (ctor3 instanceof C1) { 51243af6ab5fSopenharmony_ci ctor3.p1; // C1 51253af6ab5fSopenharmony_ci@@ -64,4 +64,7 @@ if (ctor6 instanceof C1 || ctor6 instanceof C2) { 51263af6ab5fSopenharmony_ci } 51273af6ab5fSopenharmony_ci else { 51283af6ab5fSopenharmony_ci ctor6.p4; // C3 51293af6ab5fSopenharmony_ci-} 51303af6ab5fSopenharmony_ci\ No newline at end of file 51313af6ab5fSopenharmony_ci+} 51323af6ab5fSopenharmony_ci+let qw4 = new C2(); 51333af6ab5fSopenharmony_ci+let qw3 = new D1(); 51343af6ab5fSopenharmony_ci+let qw5 = new C3(); 51353af6ab5fSopenharmony_ci\ No newline at end of file 51363af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormIsType.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormIsType.ts 51373af6ab5fSopenharmony_ciindex 9f5ca611ee..e0953773d5 100644 51383af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormIsType.ts 51393af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormIsType.ts 51403af6ab5fSopenharmony_ci@@ -34,4 +34,7 @@ var c2Ord1: C2 | D1; 51413af6ab5fSopenharmony_ci num = isC2(c2Ord1) && c2Ord1.p2; // C2 51423af6ab5fSopenharmony_ci num = isD1(c2Ord1) && c2Ord1.p3; // D1 51433af6ab5fSopenharmony_ci str = isD1(c2Ord1) && c2Ord1.p1; // D1 51443af6ab5fSopenharmony_ci-var r2: C2 | D1 = isC1(c2Ord1) && c2Ord1; // C2 | D1 51453af6ab5fSopenharmony_ci\ No newline at end of file 51463af6ab5fSopenharmony_ci+var r2: C2 | D1 = isC1(c2Ord1) && c2Ord1; // C2 | D1 51473af6ab5fSopenharmony_ci+ 51483af6ab5fSopenharmony_ci+let rr2 = new C2(); 51493af6ab5fSopenharmony_ci+let rr3 = new D1(); 51503af6ab5fSopenharmony_ci\ No newline at end of file 51513af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfBoolean.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfBoolean.ts 51523af6ab5fSopenharmony_ciindex 37651071b7..610f0da2c8 100644 51533af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfBoolean.ts 51543af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfBoolean.ts 51553af6ab5fSopenharmony_ci@@ -83,3 +83,4 @@ if (typeof strOrNum !== "boolean") { 51563af6ab5fSopenharmony_ci else { 51573af6ab5fSopenharmony_ci let z2: {} = strOrNum; // {} 51583af6ab5fSopenharmony_ci } 51593af6ab5fSopenharmony_ci+let qw9 = new C(); 51603af6ab5fSopenharmony_ci\ No newline at end of file 51613af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNumber.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNumber.ts 51623af6ab5fSopenharmony_ciindex b4cdf81660..f00736781f 100644 51633af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNumber.ts 51643af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfNumber.ts 51653af6ab5fSopenharmony_ci@@ -82,3 +82,4 @@ if (typeof strOrBool !== "number") { 51663af6ab5fSopenharmony_ci else { 51673af6ab5fSopenharmony_ci let y2: {} = strOrBool; // {} 51683af6ab5fSopenharmony_ci } 51693af6ab5fSopenharmony_ci+let ee6 = new C(); 51703af6ab5fSopenharmony_ci\ No newline at end of file 51713af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfString.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfString.ts 51723af6ab5fSopenharmony_ciindex f742124708..a20093f868 100644 51733af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfString.ts 51743af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFormTypeOfString.ts 51753af6ab5fSopenharmony_ci@@ -82,3 +82,4 @@ if (typeof numOrBool !== "string") { 51763af6ab5fSopenharmony_ci else { 51773af6ab5fSopenharmony_ci let x2: {} = numOrBool; // {} 51783af6ab5fSopenharmony_ci } 51793af6ab5fSopenharmony_ci+let rr4 = new C(); 51803af6ab5fSopenharmony_ci\ No newline at end of file 51813af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFromPropNameInUnionType.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFromPropNameInUnionType.ts 51823af6ab5fSopenharmony_ciindex e1256e4288..ceee99f7e2 100644 51833af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardOfFromPropNameInUnionType.ts 51843af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardOfFromPropNameInUnionType.ts 51853af6ab5fSopenharmony_ci@@ -103,3 +103,12 @@ function f(i: Indexed) { 51863af6ab5fSopenharmony_ci } 51873af6ab5fSopenharmony_ci return "c" in i && i.c; 51883af6ab5fSopenharmony_ci } 51893af6ab5fSopenharmony_ci+let tt1 = new A(); 51903af6ab5fSopenharmony_ci+let tt2 = new B(); 51913af6ab5fSopenharmony_ci+let tt3 = new C(); 51923af6ab5fSopenharmony_ci+let tt4 = new D(); 51933af6ab5fSopenharmony_ci+let tt5 = new AWithOptionalProp(); 51943af6ab5fSopenharmony_ci+let tt6 = new BWithOptionalProp(); 51953af6ab5fSopenharmony_ci+let tt7 = new ClassWithUnionProp(); 51963af6ab5fSopenharmony_ci+let tt8 = new InMemberOfClass(); 51973af6ab5fSopenharmony_ci+let tt9 = new SelfAssert(); 51983af6ab5fSopenharmony_ci\ No newline at end of file 51993af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsInClassAccessors.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsInClassAccessors.ts 52003af6ab5fSopenharmony_ciindex 04b9a6a394..044131068a 100644 52013af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardsInClassAccessors.ts 52023af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsInClassAccessors.ts 52033af6ab5fSopenharmony_ci@@ -101,3 +101,4 @@ class ClassWithAccessors { 52043af6ab5fSopenharmony_ci num = typeof var2 === "string" && var2.length; // string 52053af6ab5fSopenharmony_ci } 52063af6ab5fSopenharmony_ci } 52073af6ab5fSopenharmony_ci+let ee1 = new ClassWithAccessors(); 52083af6ab5fSopenharmony_ci\ No newline at end of file 52093af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsInClassMethods.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsInClassMethods.ts 52103af6ab5fSopenharmony_ciindex cb1327027c..7bb36dfefe 100644 52113af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardsInClassMethods.ts 52123af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsInClassMethods.ts 52133af6ab5fSopenharmony_ci@@ -65,3 +65,4 @@ class C1 { 52143af6ab5fSopenharmony_ci num = typeof param === "string" && param.length; // string 52153af6ab5fSopenharmony_ci } 52163af6ab5fSopenharmony_ci } 52173af6ab5fSopenharmony_ci+let qw1 = new C1(null); 52183af6ab5fSopenharmony_ci\ No newline at end of file 52193af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsInProperties.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsInProperties.ts 52203af6ab5fSopenharmony_ciindex bffe8d3d1b..b7fd3f9c34 100644 52213af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardsInProperties.ts 52223af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsInProperties.ts 52233af6ab5fSopenharmony_ci@@ -24,4 +24,5 @@ strOrNum = typeof c1.pp3 === "string" && c1.pp3; // string | number 52243af6ab5fSopenharmony_ci var obj1: { 52253af6ab5fSopenharmony_ci x: string | number; 52263af6ab5fSopenharmony_ci }; 52273af6ab5fSopenharmony_ci-strOrNum = typeof obj1.x === "string" && obj1.x; // string | number 52283af6ab5fSopenharmony_ci\ No newline at end of file 52293af6ab5fSopenharmony_ci+strOrNum = typeof obj1.x === "string" && obj1.x; // string | number 52303af6ab5fSopenharmony_ci+let ee5 = new C1(); 52313af6ab5fSopenharmony_ci\ No newline at end of file 52323af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts 52333af6ab5fSopenharmony_ciindex 2c26b10c6a..574f2af39c 100644 52343af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts 52353af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts 52363af6ab5fSopenharmony_ci@@ -25,4 +25,5 @@ var o: { 52373af6ab5fSopenharmony_ci 52383af6ab5fSopenharmony_ci if (typeof o.prop1 === "string" && o.prop1.toLowerCase()) {} 52393af6ab5fSopenharmony_ci var prop1 = o.prop1; 52403af6ab5fSopenharmony_ci-if (typeof prop1 === "string" && prop1.toLocaleLowerCase()) { } 52413af6ab5fSopenharmony_ci\ No newline at end of file 52423af6ab5fSopenharmony_ci+if (typeof prop1 === "string" && prop1.toLocaleLowerCase()) { } 52433af6ab5fSopenharmony_ci+let qw6 = new D(); 52443af6ab5fSopenharmony_ci\ No newline at end of file 52453af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/unaryOperators/bitwiseNotOperator/bitwiseNotOperatorWithNumberType.ts b/tests/cases/conformance/expressions/unaryOperators/bitwiseNotOperator/bitwiseNotOperatorWithNumberType.ts 52463af6ab5fSopenharmony_ciindex b41a114503..87e1d09bea 100644 52473af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/unaryOperators/bitwiseNotOperator/bitwiseNotOperatorWithNumberType.ts 52483af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/unaryOperators/bitwiseNotOperator/bitwiseNotOperatorWithNumberType.ts 52493af6ab5fSopenharmony_ci@@ -43,4 +43,5 @@ var ResultIsNumber13 = ~~~(NUMBER + NUMBER); 52503af6ab5fSopenharmony_ci ~foo(); 52513af6ab5fSopenharmony_ci ~objA.a; 52523af6ab5fSopenharmony_ci ~M.n; 52533af6ab5fSopenharmony_ci-~objA.a, M.n; 52543af6ab5fSopenharmony_ci\ No newline at end of file 52553af6ab5fSopenharmony_ci+~objA.a, M.n; 52563af6ab5fSopenharmony_ci+let qr11 = new A(); 52573af6ab5fSopenharmony_ci\ No newline at end of file 52583af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/expressions/unaryOperators/bitwiseNotOperator/bitwiseNotOperatorWithStringType.ts b/tests/cases/conformance/expressions/unaryOperators/bitwiseNotOperator/bitwiseNotOperatorWithStringType.ts 52593af6ab5fSopenharmony_ciindex 0b60c73ef9..4495309b10 100644 52603af6ab5fSopenharmony_ci--- a/tests/cases/conformance/expressions/unaryOperators/bitwiseNotOperator/bitwiseNotOperatorWithStringType.ts 52613af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/expressions/unaryOperators/bitwiseNotOperator/bitwiseNotOperatorWithStringType.ts 52623af6ab5fSopenharmony_ci@@ -42,4 +42,5 @@ var ResultIsNumber14 = ~~~(STRING + STRING); 52633af6ab5fSopenharmony_ci ~STRING; 52643af6ab5fSopenharmony_ci ~STRING1; 52653af6ab5fSopenharmony_ci ~foo(); 52663af6ab5fSopenharmony_ci-~objA.a,M.n; 52673af6ab5fSopenharmony_ci\ No newline at end of file 52683af6ab5fSopenharmony_ci+~objA.a,M.n; 52693af6ab5fSopenharmony_ci+let qr12 = new A(); 52703af6ab5fSopenharmony_ci\ No newline at end of file 52713af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/exportNonVisibleType.ts b/tests/cases/conformance/externalModules/exportNonVisibleType.ts 52723af6ab5fSopenharmony_ciindex 4f4722fd86..cc56bd2f0b 100644 52733af6ab5fSopenharmony_ci--- a/tests/cases/conformance/externalModules/exportNonVisibleType.ts 52743af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/exportNonVisibleType.ts 52753af6ab5fSopenharmony_ci@@ -31,3 +31,4 @@ class C1 { 52763af6ab5fSopenharmony_ci } 52773af6ab5fSopenharmony_ci 52783af6ab5fSopenharmony_ci export = C1; // Should work, private type I1 of visible class C1 only used in private member m1. 52793af6ab5fSopenharmony_ci+let qt8 = new C1(); 52803af6ab5fSopenharmony_ci\ No newline at end of file 52813af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension1.ts b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension1.ts 52823af6ab5fSopenharmony_cinew file mode 100644 52833af6ab5fSopenharmony_ciindex 0000000000..83e86fc6c6 52843af6ab5fSopenharmony_ci--- /dev/null 52853af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension1.ts 52863af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 52873af6ab5fSopenharmony_ci+// @moduleResolution: node12 52883af6ab5fSopenharmony_ci+// @module: node12 52893af6ab5fSopenharmony_ci+ 52903af6ab5fSopenharmony_ci+// @filename: /src/foo.mts 52913af6ab5fSopenharmony_ci+export function foo() { 52923af6ab5fSopenharmony_ci+ return ""; 52933af6ab5fSopenharmony_ci+} 52943af6ab5fSopenharmony_ci+ 52953af6ab5fSopenharmony_ci+// @filename: /src/bar.mts 52963af6ab5fSopenharmony_ci+// Extensionless relative path ES import in an ES module 52973af6ab5fSopenharmony_ci+import { foo } from "./foo"; // should error, suggest adding ".mjs" 52983af6ab5fSopenharmony_ci+import { baz } from "./baz"; // should error, ask for extension, no extension suggestion 52993af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension2.ts b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension2.ts 53003af6ab5fSopenharmony_cinew file mode 100644 53013af6ab5fSopenharmony_ciindex 0000000000..0051e17401 53023af6ab5fSopenharmony_ci--- /dev/null 53033af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension2.ts 53043af6ab5fSopenharmony_ci@@ -0,0 +1,6 @@ 53053af6ab5fSopenharmony_ci+// @moduleResolution: node12 53063af6ab5fSopenharmony_ci+// @module: node12 53073af6ab5fSopenharmony_ci+ 53083af6ab5fSopenharmony_ci+// @filename: /src/buzz.mts 53093af6ab5fSopenharmony_ci+// Extensionless relative path cjs import in an ES module 53103af6ab5fSopenharmony_ci+import foo = require("./foo"); // should error, should not ask for extension 53113af6ab5fSopenharmony_ci\ No newline at end of file 53123af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension3.ts b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension3.ts 53133af6ab5fSopenharmony_cinew file mode 100644 53143af6ab5fSopenharmony_ciindex 0000000000..2ec3ff1ad0 53153af6ab5fSopenharmony_ci--- /dev/null 53163af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension3.ts 53173af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 53183af6ab5fSopenharmony_ci+// @moduleResolution: nodenext 53193af6ab5fSopenharmony_ci+// @module: nodenext 53203af6ab5fSopenharmony_ci+// @jsx: preserve 53213af6ab5fSopenharmony_ci+ 53223af6ab5fSopenharmony_ci+// @filename: /src/foo.tsx 53233af6ab5fSopenharmony_ci+export function foo() { 53243af6ab5fSopenharmony_ci+ return ""; 53253af6ab5fSopenharmony_ci+} 53263af6ab5fSopenharmony_ci+ 53273af6ab5fSopenharmony_ci+// @filename: /src/bar.mts 53283af6ab5fSopenharmony_ci+// Extensionless relative path ES import in an ES module 53293af6ab5fSopenharmony_ci+import { foo } from "./foo"; // should error, suggest adding ".jsx" 53303af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension4.ts b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension4.ts 53313af6ab5fSopenharmony_cinew file mode 100644 53323af6ab5fSopenharmony_ciindex 0000000000..c1eab70f92 53333af6ab5fSopenharmony_ci--- /dev/null 53343af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension4.ts 53353af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 53363af6ab5fSopenharmony_ci+// @moduleResolution: nodenext 53373af6ab5fSopenharmony_ci+// @module: nodenext 53383af6ab5fSopenharmony_ci+// @jsx: react 53393af6ab5fSopenharmony_ci+ 53403af6ab5fSopenharmony_ci+// @filename: /src/foo.tsx 53413af6ab5fSopenharmony_ci+export function foo() { 53423af6ab5fSopenharmony_ci+ return ""; 53433af6ab5fSopenharmony_ci+} 53443af6ab5fSopenharmony_ci+ 53453af6ab5fSopenharmony_ci+// @filename: /src/bar.mts 53463af6ab5fSopenharmony_ci+// Extensionless relative path ES import in an ES module 53473af6ab5fSopenharmony_ci+import { foo } from "./foo"; // should error, suggest adding ".js" 53483af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension5.ts b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension5.ts 53493af6ab5fSopenharmony_cinew file mode 100644 53503af6ab5fSopenharmony_ciindex 0000000000..5053a242cd 53513af6ab5fSopenharmony_ci--- /dev/null 53523af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension5.ts 53533af6ab5fSopenharmony_ci@@ -0,0 +1,6 @@ 53543af6ab5fSopenharmony_ci+// @moduleResolution: node12 53553af6ab5fSopenharmony_ci+// @module: node12 53563af6ab5fSopenharmony_ci+ 53573af6ab5fSopenharmony_ci+// @filename: /src/buzz.mts 53583af6ab5fSopenharmony_ci+// Extensionless relative path dynamic import in an ES module 53593af6ab5fSopenharmony_ci+import("./foo").then(x => x); // should error, ask for extension 53603af6ab5fSopenharmony_ci\ No newline at end of file 53613af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension6.ts b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension6.ts 53623af6ab5fSopenharmony_cinew file mode 100644 53633af6ab5fSopenharmony_ciindex 0000000000..2a6ef2645d 53643af6ab5fSopenharmony_ci--- /dev/null 53653af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension6.ts 53663af6ab5fSopenharmony_ci@@ -0,0 +1,8 @@ 53673af6ab5fSopenharmony_ci+// @moduleResolution: node12 53683af6ab5fSopenharmony_ci+// @module: node12 53693af6ab5fSopenharmony_ci+ 53703af6ab5fSopenharmony_ci+// @filename: /src/bar.cts 53713af6ab5fSopenharmony_ci+// Extensionless relative path import statement in a cjs module 53723af6ab5fSopenharmony_ci+// Import statements are not allowed in cjs files, 53733af6ab5fSopenharmony_ci+// but other errors should not assume that they are allowed 53743af6ab5fSopenharmony_ci+import { foo } from "./foo"; // should error, should not ask for extension 53753af6ab5fSopenharmony_ci\ No newline at end of file 53763af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension7.ts b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension7.ts 53773af6ab5fSopenharmony_cinew file mode 100644 53783af6ab5fSopenharmony_ciindex 0000000000..3b10dd6e48 53793af6ab5fSopenharmony_ci--- /dev/null 53803af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension7.ts 53813af6ab5fSopenharmony_ci@@ -0,0 +1,6 @@ 53823af6ab5fSopenharmony_ci+// @moduleResolution: node12 53833af6ab5fSopenharmony_ci+// @module: node12 53843af6ab5fSopenharmony_ci+ 53853af6ab5fSopenharmony_ci+// @filename: /src/bar.cts 53863af6ab5fSopenharmony_ci+// Extensionless relative path cjs import in a cjs module 53873af6ab5fSopenharmony_ci+import foo = require("./foo"); // should error, should not ask for extension 53883af6ab5fSopenharmony_ci\ No newline at end of file 53893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension8.ts b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension8.ts 53903af6ab5fSopenharmony_cinew file mode 100644 53913af6ab5fSopenharmony_ciindex 0000000000..fef17b3aa1 53923af6ab5fSopenharmony_ci--- /dev/null 53933af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/moduleResolutionWithoutExtension8.ts 53943af6ab5fSopenharmony_ci@@ -0,0 +1,6 @@ 53953af6ab5fSopenharmony_ci+// @moduleResolution: node12 53963af6ab5fSopenharmony_ci+// @module: node12 53973af6ab5fSopenharmony_ci+ 53983af6ab5fSopenharmony_ci+// @filename: /src/bar.cts 53993af6ab5fSopenharmony_ci+// Extensionless relative path dynamic import in a cjs module 54003af6ab5fSopenharmony_ci+import("./foo").then(x => x); // should error, ask for extension 54013af6ab5fSopenharmony_ci\ No newline at end of file 54023af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/typeOnly/exportSpecifiers.ts b/tests/cases/conformance/externalModules/typeOnly/exportSpecifiers.ts 54033af6ab5fSopenharmony_cinew file mode 100644 54043af6ab5fSopenharmony_ciindex 0000000000..c8c584f66d 54053af6ab5fSopenharmony_ci--- /dev/null 54063af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/typeOnly/exportSpecifiers.ts 54073af6ab5fSopenharmony_ci@@ -0,0 +1,21 @@ 54083af6ab5fSopenharmony_ci+// @module: esnext 54093af6ab5fSopenharmony_ci+// @declaration: true 54103af6ab5fSopenharmony_ci+ 54113af6ab5fSopenharmony_ci+// @Filename: /imports.ts 54123af6ab5fSopenharmony_ci+import { type, as, something, foo, bar } from "./exports.js"; 54133af6ab5fSopenharmony_ci+type; 54143af6ab5fSopenharmony_ci+as; // Error (used in emitting position) 54153af6ab5fSopenharmony_ci+something; // Error (used in emitting position) 54163af6ab5fSopenharmony_ci+foo; // Error (used in emitting position) 54173af6ab5fSopenharmony_ci+bar; // Error (used in emitting position) 54183af6ab5fSopenharmony_ci+ 54193af6ab5fSopenharmony_ci+// @Filename: /exports.ts 54203af6ab5fSopenharmony_ci+const type = 0; 54213af6ab5fSopenharmony_ci+const as = 0; 54223af6ab5fSopenharmony_ci+const something = 0; 54233af6ab5fSopenharmony_ci+export { type }; 54243af6ab5fSopenharmony_ci+export { type as }; 54253af6ab5fSopenharmony_ci+export { type something }; 54263af6ab5fSopenharmony_ci+export { type type as foo }; 54273af6ab5fSopenharmony_ci+export { type as as bar }; 54283af6ab5fSopenharmony_ci+export type { type something as whatever }; // Error 54293af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType/a.ts b/tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType/a.ts 54303af6ab5fSopenharmony_cinew file mode 100644 54313af6ab5fSopenharmony_ciindex 0000000000..3e949a0611 54323af6ab5fSopenharmony_ci--- /dev/null 54333af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType/a.ts 54343af6ab5fSopenharmony_ci@@ -0,0 +1,2 @@ 54353af6ab5fSopenharmony_ci+// @Filename: /a.ts 54363af6ab5fSopenharmony_ci+export default class A {} 54373af6ab5fSopenharmony_ci\ No newline at end of file 54383af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType/importDefaultNamedType.ts b/tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType/importDefaultNamedType.ts 54393af6ab5fSopenharmony_cinew file mode 100644 54403af6ab5fSopenharmony_ciindex 0000000000..3bb8cdfce2 54413af6ab5fSopenharmony_ci--- /dev/null 54423af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/typeOnly/importDefaultNamedType/importDefaultNamedType.ts 54433af6ab5fSopenharmony_ci@@ -0,0 +1,5 @@ 54443af6ab5fSopenharmony_ci+ 54453af6ab5fSopenharmony_ci+ 54463af6ab5fSopenharmony_ci+// @Filename: /b.ts 54473af6ab5fSopenharmony_ci+import type from './a'; 54483af6ab5fSopenharmony_ci+type; 54493af6ab5fSopenharmony_ci\ No newline at end of file 54503af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/typeOnly/importSpecifiers1.ts b/tests/cases/conformance/externalModules/typeOnly/importSpecifiers1.ts 54513af6ab5fSopenharmony_cinew file mode 100644 54523af6ab5fSopenharmony_ciindex 0000000000..348784befd 54533af6ab5fSopenharmony_ci--- /dev/null 54543af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/typeOnly/importSpecifiers1.ts 54553af6ab5fSopenharmony_ci@@ -0,0 +1,46 @@ 54563af6ab5fSopenharmony_ci+// @module: esnext 54573af6ab5fSopenharmony_ci+// @declaration: true 54583af6ab5fSopenharmony_ci+ 54593af6ab5fSopenharmony_ci+// @Filename: /mod.ts 54603af6ab5fSopenharmony_ci+export const as = 0; 54613af6ab5fSopenharmony_ci+export const type = 0; 54623af6ab5fSopenharmony_ci+export const something = 0; 54633af6ab5fSopenharmony_ci+ 54643af6ab5fSopenharmony_ci+// @Filename: /a.ts 54653af6ab5fSopenharmony_ci+import { type } from "./mod.js"; 54663af6ab5fSopenharmony_ci+import { type as } from "./mod.js"; 54673af6ab5fSopenharmony_ci+type; 54683af6ab5fSopenharmony_ci+as; // Error (used in emitting position) 54693af6ab5fSopenharmony_ci+ 54703af6ab5fSopenharmony_ci+// @Filename: /b.ts 54713af6ab5fSopenharmony_ci+import { type as as } from "./mod.js"; 54723af6ab5fSopenharmony_ci+type; // Error (cannot resolve name) 54733af6ab5fSopenharmony_ci+as; 54743af6ab5fSopenharmony_ci+ 54753af6ab5fSopenharmony_ci+// @Filename: /c.ts 54763af6ab5fSopenharmony_ci+import { type as as as } from "./mod.js"; 54773af6ab5fSopenharmony_ci+type; // Error (cannot resolve name) 54783af6ab5fSopenharmony_ci+as; // Error (used in emitting position) 54793af6ab5fSopenharmony_ci+ 54803af6ab5fSopenharmony_ci+// @Filename: /d.ts 54813af6ab5fSopenharmony_ci+import { type as as as as } from "./mod.js"; // Error 54823af6ab5fSopenharmony_ci+ 54833af6ab5fSopenharmony_ci+// @Filename: /e.ts 54843af6ab5fSopenharmony_ci+import { type type as as } from "./mod.js"; 54853af6ab5fSopenharmony_ci+import { type as type } from "./mod.js"; 54863af6ab5fSopenharmony_ci+type; 54873af6ab5fSopenharmony_ci+as; // Error (used in emitting position) 54883af6ab5fSopenharmony_ci+ 54893af6ab5fSopenharmony_ci+// @Filename: /f.ts 54903af6ab5fSopenharmony_ci+import { type import } from "./mod.js"; // Error 54913af6ab5fSopenharmony_ci+import { type as export } from "./mod.js"; // Error 54923af6ab5fSopenharmony_ci+import { type as as export } from "./mod.js"; // Error 54933af6ab5fSopenharmony_ci+import { type something } from "./mod.js"; 54943af6ab5fSopenharmony_ci+import { type something as s } from "./mod.js"; 54953af6ab5fSopenharmony_ci+type; // Error (cannot resolve name) 54963af6ab5fSopenharmony_ci+as; // Error (cannot resolve name) 54973af6ab5fSopenharmony_ci+something; // Error (used in emitting position) 54983af6ab5fSopenharmony_ci+s; // Error (used in emitting position) 54993af6ab5fSopenharmony_ci+ 55003af6ab5fSopenharmony_ci+// @Filename: /g.ts 55013af6ab5fSopenharmony_ci+import type { type something } from "./mod.js"; // Error 55023af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/typeOnly/preserveValueImports.ts b/tests/cases/conformance/externalModules/typeOnly/preserveValueImports.ts 55033af6ab5fSopenharmony_cinew file mode 100644 55043af6ab5fSopenharmony_ciindex 0000000000..66326cb98b 55053af6ab5fSopenharmony_ci--- /dev/null 55063af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/typeOnly/preserveValueImports.ts 55073af6ab5fSopenharmony_ci@@ -0,0 +1,28 @@ 55083af6ab5fSopenharmony_ci+// @preserveValueImports: true 55093af6ab5fSopenharmony_ci+// @isolatedModules: true,false 55103af6ab5fSopenharmony_ci+// @module: esnext 55113af6ab5fSopenharmony_ci+ 55123af6ab5fSopenharmony_ci+// @Filename: a.ts 55133af6ab5fSopenharmony_ci+export default {}; 55143af6ab5fSopenharmony_ci+export const b = 0; 55153af6ab5fSopenharmony_ci+export const c = 1; 55163af6ab5fSopenharmony_ci+export interface D {} 55173af6ab5fSopenharmony_ci+ 55183af6ab5fSopenharmony_ci+// @Filename: b.ts 55193af6ab5fSopenharmony_ci+import a, { b, c, D } from "./a"; 55203af6ab5fSopenharmony_ci+ 55213af6ab5fSopenharmony_ci+// @Filename: c.ts 55223af6ab5fSopenharmony_ci+import * as a from "./a"; 55233af6ab5fSopenharmony_ci+ 55243af6ab5fSopenharmony_ci+// @Filename: d.ts 55253af6ab5fSopenharmony_ci+export = {}; 55263af6ab5fSopenharmony_ci+ 55273af6ab5fSopenharmony_ci+// @Filename: e.ts 55283af6ab5fSopenharmony_ci+import D = require("./d"); 55293af6ab5fSopenharmony_ci+import DD = require("./d"); 55303af6ab5fSopenharmony_ci+DD; 55313af6ab5fSopenharmony_ci+ 55323af6ab5fSopenharmony_ci+// @Filename: f.ts 55333af6ab5fSopenharmony_ci+import type a from "./a"; 55343af6ab5fSopenharmony_ci+import { b, c } from "./a"; 55353af6ab5fSopenharmony_ci+b; 55363af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_errors.ts b/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_errors.ts 55373af6ab5fSopenharmony_cinew file mode 100644 55383af6ab5fSopenharmony_ciindex 0000000000..fc2a3612e7 55393af6ab5fSopenharmony_ci--- /dev/null 55403af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_errors.ts 55413af6ab5fSopenharmony_ci@@ -0,0 +1,47 @@ 55423af6ab5fSopenharmony_ci+// @preserveValueImports: true 55433af6ab5fSopenharmony_ci+// @isolatedModules: true,false 55443af6ab5fSopenharmony_ci+// @module: esnext 55453af6ab5fSopenharmony_ci+ 55463af6ab5fSopenharmony_ci+// @Filename: a.ts 55473af6ab5fSopenharmony_ci+export type A = {}; 55483af6ab5fSopenharmony_ci+export type { A as default }; 55493af6ab5fSopenharmony_ci+ 55503af6ab5fSopenharmony_ci+// @Filename: b.ts 55513af6ab5fSopenharmony_ci+class B {}; 55523af6ab5fSopenharmony_ci+export type { B, B as default }; 55533af6ab5fSopenharmony_ci+ 55543af6ab5fSopenharmony_ci+// @Filename: c.ts 55553af6ab5fSopenharmony_ci+import DefaultA from "./a"; 55563af6ab5fSopenharmony_ci+import { A } from "./a"; 55573af6ab5fSopenharmony_ci+import DefaultB from "./b"; 55583af6ab5fSopenharmony_ci+import { B } from "./b"; 55593af6ab5fSopenharmony_ci+ 55603af6ab5fSopenharmony_ci+// @Filename: c.fixed.ts 55613af6ab5fSopenharmony_ci+import type DefaultA from "./a"; 55623af6ab5fSopenharmony_ci+import type { A } from "./a"; 55633af6ab5fSopenharmony_ci+import type DefaultB from "./b"; 55643af6ab5fSopenharmony_ci+import type { B } from "./b"; 55653af6ab5fSopenharmony_ci+ 55663af6ab5fSopenharmony_ci+// @Filename: d.ts 55673af6ab5fSopenharmony_ci+export { A as AA } from "./a"; 55683af6ab5fSopenharmony_ci+export { B as BB } from "./b"; 55693af6ab5fSopenharmony_ci+ 55703af6ab5fSopenharmony_ci+// @Filename: d.fixed.ts 55713af6ab5fSopenharmony_ci+export type { A as AA } from "./a"; 55723af6ab5fSopenharmony_ci+export type { B as BB } from "./b"; 55733af6ab5fSopenharmony_ci+ 55743af6ab5fSopenharmony_ci+// @Filename: e.ts 55753af6ab5fSopenharmony_ci+import { AA, BB } from "./d"; 55763af6ab5fSopenharmony_ci+ 55773af6ab5fSopenharmony_ci+// @Filename: e.fixed.ts 55783af6ab5fSopenharmony_ci+import type { AA, BB } from "./d"; 55793af6ab5fSopenharmony_ci+ 55803af6ab5fSopenharmony_ci+// @Filename: f.ts 55813af6ab5fSopenharmony_ci+import type { A } from "./a"; 55823af6ab5fSopenharmony_ci+import type { B } from "./b"; 55833af6ab5fSopenharmony_ci+export { A, B as BB }; 55843af6ab5fSopenharmony_ci+ 55853af6ab5fSopenharmony_ci+// @Filename: f.fixed.ts 55863af6ab5fSopenharmony_ci+import type { A } from "./a"; 55873af6ab5fSopenharmony_ci+import type { B } from "./b"; 55883af6ab5fSopenharmony_ci+export type { A, B as BB }; 55893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_importsNotUsedAsValues.ts b/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_importsNotUsedAsValues.ts 55903af6ab5fSopenharmony_cinew file mode 100644 55913af6ab5fSopenharmony_ciindex 0000000000..4797a30727 55923af6ab5fSopenharmony_ci--- /dev/null 55933af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_importsNotUsedAsValues.ts 55943af6ab5fSopenharmony_ci@@ -0,0 +1,14 @@ 55953af6ab5fSopenharmony_ci+// @preserveValueImports: true 55963af6ab5fSopenharmony_ci+// @importsNotUsedAsValues: preserve 55973af6ab5fSopenharmony_ci+// @module: esnext 55983af6ab5fSopenharmony_ci+ 55993af6ab5fSopenharmony_ci+// @Filename: /mod.ts 56003af6ab5fSopenharmony_ci+export type A = unknown; 56013af6ab5fSopenharmony_ci+export type B = never; 56023af6ab5fSopenharmony_ci+export type C = any; 56033af6ab5fSopenharmony_ci+ 56043af6ab5fSopenharmony_ci+// @Filename: /index.ts 56053af6ab5fSopenharmony_ci+import { type A, type B, type C } from "./mod.js"; 56063af6ab5fSopenharmony_ci+ 56073af6ab5fSopenharmony_ci+// @Filename: /reexport.ts 56083af6ab5fSopenharmony_ci+export { type A, type B, type C } from "./mod.js"; 56093af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_mixedImports.ts b/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_mixedImports.ts 56103af6ab5fSopenharmony_cinew file mode 100644 56113af6ab5fSopenharmony_ciindex 0000000000..85cbae30f7 56123af6ab5fSopenharmony_ci--- /dev/null 56133af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_mixedImports.ts 56143af6ab5fSopenharmony_ci@@ -0,0 +1,13 @@ 56153af6ab5fSopenharmony_ci+// @preserveValueImports: true 56163af6ab5fSopenharmony_ci+// @isolatedModules: true 56173af6ab5fSopenharmony_ci+// @module: es2015 56183af6ab5fSopenharmony_ci+ 56193af6ab5fSopenharmony_ci+// @Filename: /exports.ts 56203af6ab5fSopenharmony_ci+export function Component() {} 56213af6ab5fSopenharmony_ci+export interface ComponentProps {} 56223af6ab5fSopenharmony_ci+ 56233af6ab5fSopenharmony_ci+// @Filename: /index.ts 56243af6ab5fSopenharmony_ci+import { Component, ComponentProps } from "./exports.js"; 56253af6ab5fSopenharmony_ci+ 56263af6ab5fSopenharmony_ci+// @Filename: /index.fixed.ts 56273af6ab5fSopenharmony_ci+import { Component, type ComponentProps } from "./exports.js"; 56283af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_module.ts b/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_module.ts 56293af6ab5fSopenharmony_cinew file mode 100644 56303af6ab5fSopenharmony_ciindex 0000000000..27f78f707c 56313af6ab5fSopenharmony_ci--- /dev/null 56323af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/externalModules/typeOnly/preserveValueImports_module.ts 56333af6ab5fSopenharmony_ci@@ -0,0 +1,4 @@ 56343af6ab5fSopenharmony_ci+// @preserveValueImports: true 56353af6ab5fSopenharmony_ci+// @module: amd,system,commonjs,es2015 56363af6ab5fSopenharmony_ci+// @noTypesAndSymbols: true 56373af6ab5fSopenharmony_ci+export {}; 56383af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/importAssertion/importAssertion1.ts b/tests/cases/conformance/importAssertion/importAssertion1.ts 56393af6ab5fSopenharmony_cinew file mode 100644 56403af6ab5fSopenharmony_ciindex 0000000000..b547158cf1 56413af6ab5fSopenharmony_ci--- /dev/null 56423af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/importAssertion/importAssertion1.ts 56433af6ab5fSopenharmony_ci@@ -0,0 +1,37 @@ 56443af6ab5fSopenharmony_ci+// @declaration: true 56453af6ab5fSopenharmony_ci+// @target: es2015 56463af6ab5fSopenharmony_ci+// @module: es2015, commonjs, esnext 56473af6ab5fSopenharmony_ci+ 56483af6ab5fSopenharmony_ci+// @filename: 0.ts 56493af6ab5fSopenharmony_ci+export const a = 1; 56503af6ab5fSopenharmony_ci+export const b = 2; 56513af6ab5fSopenharmony_ci+ 56523af6ab5fSopenharmony_ci+// @filename: 1.ts 56533af6ab5fSopenharmony_ci+import './0' assert { type: "json" } 56543af6ab5fSopenharmony_ci+import { a, b } from './0' assert { "type": "json" } 56553af6ab5fSopenharmony_ci+import * as foo from './0' assert { type: "json" } 56563af6ab5fSopenharmony_ci+a; 56573af6ab5fSopenharmony_ci+b; 56583af6ab5fSopenharmony_ci+foo.a; 56593af6ab5fSopenharmony_ci+foo.b; 56603af6ab5fSopenharmony_ci+ 56613af6ab5fSopenharmony_ci+// @filename: 2.ts 56623af6ab5fSopenharmony_ci+import { a, b } from './0' assert {} 56633af6ab5fSopenharmony_ci+import { a as c, b as d } from './0' assert { a: "a", b: "b", c: "c" } 56643af6ab5fSopenharmony_ci+a; 56653af6ab5fSopenharmony_ci+b; 56663af6ab5fSopenharmony_ci+c; 56673af6ab5fSopenharmony_ci+d; 56683af6ab5fSopenharmony_ci+ 56693af6ab5fSopenharmony_ci+// @filename: 3.ts 56703af6ab5fSopenharmony_ci+const a = import('./0') 56713af6ab5fSopenharmony_ci+const b = import('./0', { assert: { type: "json" } }) 56723af6ab5fSopenharmony_ci+const c = import('./0', { assert: { type: "json", ttype: "typo" } }) 56733af6ab5fSopenharmony_ci+const d = import('./0', { assert: {} }) 56743af6ab5fSopenharmony_ci+const dd = import('./0', {}) 56753af6ab5fSopenharmony_ci+declare function foo(): any; 56763af6ab5fSopenharmony_ci+const e = import('./0', foo()) 56773af6ab5fSopenharmony_ci+const f = import() 56783af6ab5fSopenharmony_ci+const g = import('./0', {}, {}) 56793af6ab5fSopenharmony_ci+const h = import('./0', { assert: { type: "json" }},) 56803af6ab5fSopenharmony_ci+ 56813af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/importAssertion/importAssertion2.ts b/tests/cases/conformance/importAssertion/importAssertion2.ts 56823af6ab5fSopenharmony_cinew file mode 100644 56833af6ab5fSopenharmony_ciindex 0000000000..42a26af43e 56843af6ab5fSopenharmony_ci--- /dev/null 56853af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/importAssertion/importAssertion2.ts 56863af6ab5fSopenharmony_ci@@ -0,0 +1,17 @@ 56873af6ab5fSopenharmony_ci+// @declaration: true 56883af6ab5fSopenharmony_ci+// @target: es2015 56893af6ab5fSopenharmony_ci+// @module: es2015, commonjs, esnext 56903af6ab5fSopenharmony_ci+ 56913af6ab5fSopenharmony_ci+// @filename: 0.ts 56923af6ab5fSopenharmony_ci+export const a = 1; 56933af6ab5fSopenharmony_ci+export const b = 2; 56943af6ab5fSopenharmony_ci+ 56953af6ab5fSopenharmony_ci+// @filename: 1.ts 56963af6ab5fSopenharmony_ci+export {} from './0' assert { type: "json" } 56973af6ab5fSopenharmony_ci+export { a, b } from './0' assert { type: "json" } 56983af6ab5fSopenharmony_ci+export * from './0' assert { type: "json" } 56993af6ab5fSopenharmony_ci+export * as ns from './0' assert { type: "json" } 57003af6ab5fSopenharmony_ci+ 57013af6ab5fSopenharmony_ci+// @filename: 2.ts 57023af6ab5fSopenharmony_ci+export { a, b } from './0' assert {} 57033af6ab5fSopenharmony_ci+export { a as c, b as d } from './0' assert { a: "a", b: "b", c: "c" } 57043af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/importAssertion/importAssertion3.ts b/tests/cases/conformance/importAssertion/importAssertion3.ts 57053af6ab5fSopenharmony_cinew file mode 100644 57063af6ab5fSopenharmony_ciindex 0000000000..28479378b1 57073af6ab5fSopenharmony_ci--- /dev/null 57083af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/importAssertion/importAssertion3.ts 57093af6ab5fSopenharmony_ci@@ -0,0 +1,15 @@ 57103af6ab5fSopenharmony_ci+// @declaration: true 57113af6ab5fSopenharmony_ci+// @target: es2015 57123af6ab5fSopenharmony_ci+// @module: es2015, esnext 57133af6ab5fSopenharmony_ci+ 57143af6ab5fSopenharmony_ci+// @filename: 0.ts 57153af6ab5fSopenharmony_ci+export interface I { } 57163af6ab5fSopenharmony_ci+ 57173af6ab5fSopenharmony_ci+// @filename: 1.ts 57183af6ab5fSopenharmony_ci+export type {} from './0' assert { type: "json" } 57193af6ab5fSopenharmony_ci+export type { I } from './0' assert { type: "json" } 57203af6ab5fSopenharmony_ci+ 57213af6ab5fSopenharmony_ci+// @filename: 2.ts 57223af6ab5fSopenharmony_ci+import type { I } from './0' assert { type: "json" } 57233af6ab5fSopenharmony_ci+import type * as foo from './0' assert { type: "json" } 57243af6ab5fSopenharmony_ci+ 57253af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/importAssertion/importAssertion4.ts b/tests/cases/conformance/importAssertion/importAssertion4.ts 57263af6ab5fSopenharmony_cinew file mode 100644 57273af6ab5fSopenharmony_ciindex 0000000000..242d7dd375 57283af6ab5fSopenharmony_ci--- /dev/null 57293af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/importAssertion/importAssertion4.ts 57303af6ab5fSopenharmony_ci@@ -0,0 +1 @@ 57313af6ab5fSopenharmony_ci+import * as f from "./first" assert 57323af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/importAssertion/importAssertion5.ts b/tests/cases/conformance/importAssertion/importAssertion5.ts 57333af6ab5fSopenharmony_cinew file mode 100644 57343af6ab5fSopenharmony_ciindex 0000000000..ef09d84e66 57353af6ab5fSopenharmony_ci--- /dev/null 57363af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/importAssertion/importAssertion5.ts 57373af6ab5fSopenharmony_ci@@ -0,0 +1 @@ 57383af6ab5fSopenharmony_ci+import * as f from "./first" assert { 57393af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/interfaces/declarationMerging/mergedInterfacesWithMultipleBases3.ts b/tests/cases/conformance/interfaces/declarationMerging/mergedInterfacesWithMultipleBases3.ts 57403af6ab5fSopenharmony_ciindex e3d076707b..8b95f5e240 100644 57413af6ab5fSopenharmony_ci--- a/tests/cases/conformance/interfaces/declarationMerging/mergedInterfacesWithMultipleBases3.ts 57423af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/interfaces/declarationMerging/mergedInterfacesWithMultipleBases3.ts 57433af6ab5fSopenharmony_ci@@ -32,4 +32,8 @@ class D implements A<boolean> { 57443af6ab5fSopenharmony_ci d: string; 57453af6ab5fSopenharmony_ci y: boolean; 57463af6ab5fSopenharmony_ci z: boolean; 57473af6ab5fSopenharmony_ci-} 57483af6ab5fSopenharmony_ci\ No newline at end of file 57493af6ab5fSopenharmony_ci+} 57503af6ab5fSopenharmony_ci+let ww1 = new C(); 57513af6ab5fSopenharmony_ci+let ww2 = new C2(); 57523af6ab5fSopenharmony_ci+let ww3 = new C3(); 57533af6ab5fSopenharmony_ci+let ww4 = new C4(); 57543af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/interfaces/interfaceDeclarations/interfaceExtendsObjectIntersection.ts b/tests/cases/conformance/interfaces/interfaceDeclarations/interfaceExtendsObjectIntersection.ts 57553af6ab5fSopenharmony_ciindex 003976a2b2..1ab2942311 100644 57563af6ab5fSopenharmony_ci--- a/tests/cases/conformance/interfaces/interfaceDeclarations/interfaceExtendsObjectIntersection.ts 57573af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/interfaces/interfaceDeclarations/interfaceExtendsObjectIntersection.ts 57583af6ab5fSopenharmony_ci@@ -53,3 +53,15 @@ class C20 extends Constructor<Partial<T1>>() { x: string } 57593af6ab5fSopenharmony_ci class C21 extends Constructor<Readonly<T1>>() { x: string } 57603af6ab5fSopenharmony_ci class C22 extends Constructor<Identifiable<T1>>() { x: string } 57613af6ab5fSopenharmony_ci class C23 extends Constructor<Identifiable<T1 & { b: number}>>() { x: string } 57623af6ab5fSopenharmony_ci+let c1 = new C1(); 57633af6ab5fSopenharmony_ci+let c2 = new C2(); 57643af6ab5fSopenharmony_ci+let c3 = new C3(); 57653af6ab5fSopenharmony_ci+let c4 = new C4(); 57663af6ab5fSopenharmony_ci+let c5 = new C5(); 57673af6ab5fSopenharmony_ci+let c6 = new C6(); 57683af6ab5fSopenharmony_ci+let c7 = new C7(); 57693af6ab5fSopenharmony_ci+let cx = new CX(); 57703af6ab5fSopenharmony_ci+let c20 = new C20(); 57713af6ab5fSopenharmony_ci+let c21 = new C21(); 57723af6ab5fSopenharmony_ci+let c22 = new C22(); 57733af6ab5fSopenharmony_ci+let c23 = new C23(); 57743af6ab5fSopenharmony_ci\ No newline at end of file 57753af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithPropertyOfEveryType.ts b/tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithPropertyOfEveryType.ts 57763af6ab5fSopenharmony_ciindex 6979b40579..20d877f7a2 100644 57773af6ab5fSopenharmony_ci--- a/tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithPropertyOfEveryType.ts 57783af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/interfaces/interfaceDeclarations/interfaceWithPropertyOfEveryType.ts 57793af6ab5fSopenharmony_ci@@ -39,4 +39,5 @@ var a: Foo = { 57803af6ab5fSopenharmony_ci m: M, 57813af6ab5fSopenharmony_ci n: {}, 57823af6ab5fSopenharmony_ci o: E.A 57833af6ab5fSopenharmony_ci-} 57843af6ab5fSopenharmony_ci\ No newline at end of file 57853af6ab5fSopenharmony_ci+} 57863af6ab5fSopenharmony_ci+let cc = new C(); 57873af6ab5fSopenharmony_ci\ No newline at end of file 57883af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/internalModules/DeclarationMerging/AmbientModuleAndAmbientWithSameNameAndCommonRoot.ts b/tests/cases/conformance/internalModules/DeclarationMerging/AmbientModuleAndAmbientWithSameNameAndCommonRoot.ts 57893af6ab5fSopenharmony_ciindex 12f51f90a7..e1af2f0ac6 100644 57903af6ab5fSopenharmony_ci--- a/tests/cases/conformance/internalModules/DeclarationMerging/AmbientModuleAndAmbientWithSameNameAndCommonRoot.ts 57913af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/internalModules/DeclarationMerging/AmbientModuleAndAmbientWithSameNameAndCommonRoot.ts 57923af6ab5fSopenharmony_ci@@ -21,4 +21,3 @@ declare module A { 57933af6ab5fSopenharmony_ci var p: { x: number; y: number; } 57943af6ab5fSopenharmony_ci var p = A.Point.Origin; 57953af6ab5fSopenharmony_ci var p = new A.Point(0, 0); // unexpected error here, bug 840000 57963af6ab5fSopenharmony_ci- 57973af6ab5fSopenharmony_ci\ No newline at end of file 57983af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/internalModules/DeclarationMerging/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.ts b/tests/cases/conformance/internalModules/DeclarationMerging/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.ts 57993af6ab5fSopenharmony_ciindex e923f1f002..b9bb58e89e 100644 58003af6ab5fSopenharmony_ci--- a/tests/cases/conformance/internalModules/DeclarationMerging/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.ts 58013af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/internalModules/DeclarationMerging/AmbientModuleAndNonAmbientClassWithSameNameAndCommonRoot.ts 58023af6ab5fSopenharmony_ci@@ -13,6 +13,7 @@ module A { 58033af6ab5fSopenharmony_ci export class Point { 58043af6ab5fSopenharmony_ci constructor(public x: number, public y: number) { } 58053af6ab5fSopenharmony_ci } 58063af6ab5fSopenharmony_ci+ let pp = new Point(1,1); 58073af6ab5fSopenharmony_ci } 58083af6ab5fSopenharmony_ci 58093af6ab5fSopenharmony_ci // @filename: test.ts 58103af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/internalModules/DeclarationMerging/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts b/tests/cases/conformance/internalModules/DeclarationMerging/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts 58113af6ab5fSopenharmony_ciindex d285d9b422..9dca12bc2e 100644 58123af6ab5fSopenharmony_ci--- a/tests/cases/conformance/internalModules/DeclarationMerging/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts 58133af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/internalModules/DeclarationMerging/ClassAndModuleThatMergeWithStaticFunctionAndNonExportedFunctionThatShareAName.ts 58143af6ab5fSopenharmony_ci@@ -19,4 +19,6 @@ module A { 58153af6ab5fSopenharmony_ci export module Point { 58163af6ab5fSopenharmony_ci function Origin() { return ""; }// not an error since not exported 58173af6ab5fSopenharmony_ci } 58183af6ab5fSopenharmony_ci-} 58193af6ab5fSopenharmony_ci\ No newline at end of file 58203af6ab5fSopenharmony_ci+ let pp = new Point(1,1); 58213af6ab5fSopenharmony_ci+} 58223af6ab5fSopenharmony_ci+let pp1 = new Point(1,1); 58233af6ab5fSopenharmony_ci\ No newline at end of file 58243af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts b/tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts 58253af6ab5fSopenharmony_ciindex 7d88bf6292..71433fbef5 100644 58263af6ab5fSopenharmony_ci--- a/tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts 58273af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.ts 58283af6ab5fSopenharmony_ci@@ -3,6 +3,7 @@ module A { 58293af6ab5fSopenharmony_ci x: number; 58303af6ab5fSopenharmony_ci y: number; 58313af6ab5fSopenharmony_ci } 58323af6ab5fSopenharmony_ci+ let pp = new Point(); 58333af6ab5fSopenharmony_ci } 58343af6ab5fSopenharmony_ci 58353af6ab5fSopenharmony_ci module A { 58363af6ab5fSopenharmony_ci@@ -11,6 +12,7 @@ module A { 58373af6ab5fSopenharmony_ci return { x: p.x, y: p.y }; 58383af6ab5fSopenharmony_ci } 58393af6ab5fSopenharmony_ci } 58403af6ab5fSopenharmony_ci+ let pp1 = new Point(); 58413af6ab5fSopenharmony_ci } 58423af6ab5fSopenharmony_ci 58433af6ab5fSopenharmony_ci // ensure merges as expected 58443af6ab5fSopenharmony_ci@@ -21,6 +23,7 @@ module X.Y.Z { 58453af6ab5fSopenharmony_ci export class Line { 58463af6ab5fSopenharmony_ci length: number; 58473af6ab5fSopenharmony_ci } 58483af6ab5fSopenharmony_ci+ let ll = new Line(); 58493af6ab5fSopenharmony_ci } 58503af6ab5fSopenharmony_ci 58513af6ab5fSopenharmony_ci module X { 58523af6ab5fSopenharmony_ci@@ -29,6 +32,7 @@ module X { 58533af6ab5fSopenharmony_ci class Line { 58543af6ab5fSopenharmony_ci name: string; 58553af6ab5fSopenharmony_ci } 58563af6ab5fSopenharmony_ci+ let ll1 = new Line() 58573af6ab5fSopenharmony_ci } 58583af6ab5fSopenharmony_ci } 58593af6ab5fSopenharmony_ci } 58603af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts b/tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts 58613af6ab5fSopenharmony_ciindex 449e6e76a2..a0c9072675 100644 58623af6ab5fSopenharmony_ci--- a/tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts 58633af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedModulesOfTheSameName.ts 58643af6ab5fSopenharmony_ci@@ -16,6 +16,7 @@ module X.Y.Z { 58653af6ab5fSopenharmony_ci export class Line { 58663af6ab5fSopenharmony_ci length: number; 58673af6ab5fSopenharmony_ci } 58683af6ab5fSopenharmony_ci+ let ll = new Line(); 58693af6ab5fSopenharmony_ci } 58703af6ab5fSopenharmony_ci 58713af6ab5fSopenharmony_ci module X { 58723af6ab5fSopenharmony_ci@@ -24,6 +25,7 @@ module X { 58733af6ab5fSopenharmony_ci export class Line { 58743af6ab5fSopenharmony_ci name: string; 58753af6ab5fSopenharmony_ci } 58763af6ab5fSopenharmony_ci+ let ll1 = new Line(); 58773af6ab5fSopenharmony_ci } 58783af6ab5fSopenharmony_ci } 58793af6ab5fSopenharmony_ci } 58803af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/internalModules/codeGeneration/exportCodeGen.ts b/tests/cases/conformance/internalModules/codeGeneration/exportCodeGen.ts 58813af6ab5fSopenharmony_ciindex 02398acbbb..321d84cd56 100644 58823af6ab5fSopenharmony_ci--- a/tests/cases/conformance/internalModules/codeGeneration/exportCodeGen.ts 58833af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/internalModules/codeGeneration/exportCodeGen.ts 58843af6ab5fSopenharmony_ci@@ -39,6 +39,7 @@ module E { 58853af6ab5fSopenharmony_ci export module M { 58863af6ab5fSopenharmony_ci export var x = 42; 58873af6ab5fSopenharmony_ci } 58883af6ab5fSopenharmony_ci+ let c1 = new C(); 58893af6ab5fSopenharmony_ci } 58903af6ab5fSopenharmony_ci 58913af6ab5fSopenharmony_ci // validate all exportable statements, 58923af6ab5fSopenharmony_ci@@ -51,4 +52,5 @@ module F { 58933af6ab5fSopenharmony_ci module M { 58943af6ab5fSopenharmony_ci var x = 42; 58953af6ab5fSopenharmony_ci } 58963af6ab5fSopenharmony_ci+ let c2 = new C(); 58973af6ab5fSopenharmony_ci } 58983af6ab5fSopenharmony_ci\ No newline at end of file 58993af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/internalModules/codeGeneration/nameCollision.ts b/tests/cases/conformance/internalModules/codeGeneration/nameCollision.ts 59003af6ab5fSopenharmony_ciindex aef48103cd..14d12af759 100644 59013af6ab5fSopenharmony_ci--- a/tests/cases/conformance/internalModules/codeGeneration/nameCollision.ts 59023af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/internalModules/codeGeneration/nameCollision.ts 59033af6ab5fSopenharmony_ci@@ -15,6 +15,7 @@ module B { 59043af6ab5fSopenharmony_ci class B { 59053af6ab5fSopenharmony_ci name: string; 59063af6ab5fSopenharmony_ci } 59073af6ab5fSopenharmony_ci+ let bb = new B(); 59083af6ab5fSopenharmony_ci } 59093af6ab5fSopenharmony_ci 59103af6ab5fSopenharmony_ci module X { 59113af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/constructorTagOnClassConstructor.ts b/tests/cases/conformance/jsdoc/constructorTagOnClassConstructor.ts 59123af6ab5fSopenharmony_ciindex 6d2f3780ee..72a97ff055 100644 59133af6ab5fSopenharmony_ci--- a/tests/cases/conformance/jsdoc/constructorTagOnClassConstructor.ts 59143af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/constructorTagOnClassConstructor.ts 59153af6ab5fSopenharmony_ci@@ -11,4 +11,6 @@ export class Beta { 59163af6ab5fSopenharmony_ci } 59173af6ab5fSopenharmony_ci } 59183af6ab5fSopenharmony_ci 59193af6ab5fSopenharmony_ci-const arr = [Alpha, Beta]; 59203af6ab5fSopenharmony_ci+// const arr = [Alpha, Beta]; 59213af6ab5fSopenharmony_ci+let aa = new Alpha(); 59223af6ab5fSopenharmony_ci+let be = new Beta(); 59233af6ab5fSopenharmony_ci\ No newline at end of file 59243af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/declarations/jsDeclarationsSubclassWithExplicitNoArgumentConstructor.ts b/tests/cases/conformance/jsdoc/declarations/jsDeclarationsSubclassWithExplicitNoArgumentConstructor.ts 59253af6ab5fSopenharmony_ciindex eb609720d7..b0bf85be74 100644 59263af6ab5fSopenharmony_ci--- a/tests/cases/conformance/jsdoc/declarations/jsDeclarationsSubclassWithExplicitNoArgumentConstructor.ts 59273af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/declarations/jsDeclarationsSubclassWithExplicitNoArgumentConstructor.ts 59283af6ab5fSopenharmony_ci@@ -16,4 +16,5 @@ export class Sub extends Super { 59293af6ab5fSopenharmony_ci constructor() { 59303af6ab5fSopenharmony_ci super('first', 'second'); 59313af6ab5fSopenharmony_ci } 59323af6ab5fSopenharmony_ci-} 59333af6ab5fSopenharmony_ci\ No newline at end of file 59343af6ab5fSopenharmony_ci+} 59353af6ab5fSopenharmony_ci+let ss = new Sub(); 59363af6ab5fSopenharmony_ci\ No newline at end of file 59373af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/declarations/jsDeclarationsThisTypes.ts b/tests/cases/conformance/jsdoc/declarations/jsDeclarationsThisTypes.ts 59383af6ab5fSopenharmony_ciindex bc2eae7dac..29ba837ef9 100644 59393af6ab5fSopenharmony_ci--- a/tests/cases/conformance/jsdoc/declarations/jsDeclarationsThisTypes.ts 59403af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/declarations/jsDeclarationsThisTypes.ts 59413af6ab5fSopenharmony_ci@@ -14,4 +14,6 @@ export class A { 59423af6ab5fSopenharmony_ci export default class Base extends A { 59433af6ab5fSopenharmony_ci // This method is required to reproduce #35932 59443af6ab5fSopenharmony_ci verify() { } 59453af6ab5fSopenharmony_ci-} 59463af6ab5fSopenharmony_ci\ No newline at end of file 59473af6ab5fSopenharmony_ci+} 59483af6ab5fSopenharmony_ci+ 59493af6ab5fSopenharmony_ci+let b = new Base(); 59503af6ab5fSopenharmony_ci\ No newline at end of file 59513af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/enumTagImported/enumTagImported.ts b/tests/cases/conformance/jsdoc/enumTagImported/enumTagImported.ts 59523af6ab5fSopenharmony_cinew file mode 100644 59533af6ab5fSopenharmony_ciindex 0000000000..859c60103b 59543af6ab5fSopenharmony_ci--- /dev/null 59553af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/enumTagImported/enumTagImported.ts 59563af6ab5fSopenharmony_ci@@ -0,0 +1,23 @@ 59573af6ab5fSopenharmony_ci+// @allowJs: true 59583af6ab5fSopenharmony_ci+// @checkJs: true 59593af6ab5fSopenharmony_ci+// @noEmit: true 59603af6ab5fSopenharmony_ci+// @Filename: type.js 59613af6ab5fSopenharmony_ci+/** @typedef {import("./mod1").TestEnum} TE */ 59623af6ab5fSopenharmony_ci+/** @type {TE} */ 59633af6ab5fSopenharmony_ci+const test = 'add' 59643af6ab5fSopenharmony_ci+/** @type {import("./mod1").TestEnum} */ 59653af6ab5fSopenharmony_ci+const tost = 'remove' 59663af6ab5fSopenharmony_ci+ 59673af6ab5fSopenharmony_ci+// @Filename: value.js 59683af6ab5fSopenharmony_ci+import { TestEnum } from "./mod1" 59693af6ab5fSopenharmony_ci+/** @type {TestEnum} */ 59703af6ab5fSopenharmony_ci+const tist = TestEnum.ADD 59713af6ab5fSopenharmony_ci+ 59723af6ab5fSopenharmony_ci+ 59733af6ab5fSopenharmony_ci+// @Filename: mod1.js 59743af6ab5fSopenharmony_ci+ 59753af6ab5fSopenharmony_ci+/** @enum {string} */ 59763af6ab5fSopenharmony_ci+// export const TestEnum = { 59773af6ab5fSopenharmony_ci+// ADD: 'add', 59783af6ab5fSopenharmony_ci+// REMOVE: 'remove' 59793af6ab5fSopenharmony_ci+// } 59803af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/extendsTag1.ts b/tests/cases/conformance/jsdoc/extendsTag1.ts 59813af6ab5fSopenharmony_ciindex 194982760e..79b3bc7079 100644 59823af6ab5fSopenharmony_ci--- a/tests/cases/conformance/jsdoc/extendsTag1.ts 59833af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/extendsTag1.ts 59843af6ab5fSopenharmony_ci@@ -8,3 +8,4 @@ 59853af6ab5fSopenharmony_ci * @extends {Set<T>} Should prefer this Set<T>, not the Set in the heritage clause 59863af6ab5fSopenharmony_ci */ 59873af6ab5fSopenharmony_ci class My extends Set {} 59883af6ab5fSopenharmony_ci+let q4 = new My(); 59893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/jsdocAugments_qualifiedName/jsdocAugments_qualifiedName.ts b/tests/cases/conformance/jsdoc/jsdocAugments_qualifiedName/jsdocAugments_qualifiedName.ts 59903af6ab5fSopenharmony_cinew file mode 100644 59913af6ab5fSopenharmony_ciindex 0000000000..ce4fb95ff2 59923af6ab5fSopenharmony_ci--- /dev/null 59933af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/jsdocAugments_qualifiedName/jsdocAugments_qualifiedName.ts 59943af6ab5fSopenharmony_ci@@ -0,0 +1,10 @@ 59953af6ab5fSopenharmony_ci+// @allowJs: true 59963af6ab5fSopenharmony_ci+// @checkJs: true 59973af6ab5fSopenharmony_ci+// @noEmit: true 59983af6ab5fSopenharmony_ci+ 59993af6ab5fSopenharmony_ci+ 60003af6ab5fSopenharmony_ci+// @Filename: /b.js 60013af6ab5fSopenharmony_ci+import * as a from "./a"; 60023af6ab5fSopenharmony_ci+let b = a.A; 60033af6ab5fSopenharmony_ci+/** @augments a.A */ 60043af6ab5fSopenharmony_ci+class B {} 60053af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/jsdocAugments_withTypeParameter.ts b/tests/cases/conformance/jsdoc/jsdocAugments_withTypeParameter.ts 60063af6ab5fSopenharmony_ciindex e94df03fbc..aba2b989e7 100644 60073af6ab5fSopenharmony_ci--- a/tests/cases/conformance/jsdoc/jsdocAugments_withTypeParameter.ts 60083af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/jsdocAugments_withTypeParameter.ts 60093af6ab5fSopenharmony_ci@@ -12,3 +12,4 @@ class B extends A { 60103af6ab5fSopenharmony_ci return this.x; 60113af6ab5fSopenharmony_ci } 60123af6ab5fSopenharmony_ci } 60133af6ab5fSopenharmony_ci+let q7 = new B(); 60143af6ab5fSopenharmony_ci\ No newline at end of file 60153af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/jsdocImplements_namespacedInterface.ts b/tests/cases/conformance/jsdoc/jsdocImplements_namespacedInterface.ts 60163af6ab5fSopenharmony_ciindex c298e6685a..9af8207ba4 100644 60173af6ab5fSopenharmony_ci--- a/tests/cases/conformance/jsdoc/jsdocImplements_namespacedInterface.ts 60183af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/jsdocImplements_namespacedInterface.ts 60193af6ab5fSopenharmony_ci@@ -26,3 +26,5 @@ class BAT { 60203af6ab5fSopenharmony_ci return ""; 60213af6ab5fSopenharmony_ci } 60223af6ab5fSopenharmony_ci } 60233af6ab5fSopenharmony_ci+let q1 = new B(); 60243af6ab5fSopenharmony_ci+let q2 = new BAT(); 60253af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/jsdocTemplateTagDefault.ts b/tests/cases/conformance/jsdoc/jsdocTemplateTagDefault.ts 60263af6ab5fSopenharmony_cinew file mode 100644 60273af6ab5fSopenharmony_ciindex 0000000000..c93359a7a6 60283af6ab5fSopenharmony_ci--- /dev/null 60293af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/jsdocTemplateTagDefault.ts 60303af6ab5fSopenharmony_ci@@ -0,0 +1,71 @@ 60313af6ab5fSopenharmony_ci+// @allowJs: true 60323af6ab5fSopenharmony_ci+// @checkJs: true 60333af6ab5fSopenharmony_ci+// @declaration: true 60343af6ab5fSopenharmony_ci+// @outDir: out 60353af6ab5fSopenharmony_ci+// @Filename: file.js 60363af6ab5fSopenharmony_ci+ 60373af6ab5fSopenharmony_ci+/** 60383af6ab5fSopenharmony_ci+ * @template {string | number} [T=string] - ok: defaults are permitted 60393af6ab5fSopenharmony_ci+ * @typedef {[T]} A 60403af6ab5fSopenharmony_ci+ */ 60413af6ab5fSopenharmony_ci+ 60423af6ab5fSopenharmony_ci+/** @type {A} */ // ok, default for `T` in `A` is `string` 60433af6ab5fSopenharmony_ci+const aDefault1 = [""]; 60443af6ab5fSopenharmony_ci+/** @type {A} */ // error: `number` is not assignable to string` 60453af6ab5fSopenharmony_ci+const aDefault2 = [0]; 60463af6ab5fSopenharmony_ci+/** @type {A<string>} */ // ok, `T` is provided for `A` 60473af6ab5fSopenharmony_ci+const aString = [""]; 60483af6ab5fSopenharmony_ci+/** @type {A<number>} */ // ok, `T` is provided for `A` 60493af6ab5fSopenharmony_ci+const aNumber = [0]; 60503af6ab5fSopenharmony_ci+ 60513af6ab5fSopenharmony_ci+/** 60523af6ab5fSopenharmony_ci+ * @template T 60533af6ab5fSopenharmony_ci+ * @template [U=T] - ok: default can reference earlier type parameter 60543af6ab5fSopenharmony_ci+ * @typedef {[T, U]} B 60553af6ab5fSopenharmony_ci+ */ 60563af6ab5fSopenharmony_ci+ 60573af6ab5fSopenharmony_ci+/** 60583af6ab5fSopenharmony_ci+ * @template {string | number} [T] - error: default requires an `=type` 60593af6ab5fSopenharmony_ci+ * @typedef {[T]} C 60603af6ab5fSopenharmony_ci+ */ 60613af6ab5fSopenharmony_ci+ 60623af6ab5fSopenharmony_ci+/** 60633af6ab5fSopenharmony_ci+ * @template {string | number} [T=] - error: default requires a `type` 60643af6ab5fSopenharmony_ci+ * @typedef {[T]} D 60653af6ab5fSopenharmony_ci+ */ 60663af6ab5fSopenharmony_ci+ 60673af6ab5fSopenharmony_ci+/** 60683af6ab5fSopenharmony_ci+ * @template {string | number} [T=string] 60693af6ab5fSopenharmony_ci+ * @template U - error: Required type parameters cannot follow optional type parameters 60703af6ab5fSopenharmony_ci+ * @typedef {[T, U]} E 60713af6ab5fSopenharmony_ci+ */ 60723af6ab5fSopenharmony_ci+ 60733af6ab5fSopenharmony_ci+/** 60743af6ab5fSopenharmony_ci+ * @template [T=U] - error: Type parameter defaults can only reference previously declared type parameters. 60753af6ab5fSopenharmony_ci+ * @template [U=T] 60763af6ab5fSopenharmony_ci+ * @typedef {[T, U]} G 60773af6ab5fSopenharmony_ci+ */ 60783af6ab5fSopenharmony_ci+ 60793af6ab5fSopenharmony_ci+/** 60803af6ab5fSopenharmony_ci+ * @template T 60813af6ab5fSopenharmony_ci+ * @template [U=T] - ok: default can reference earlier type parameter 60823af6ab5fSopenharmony_ci+ * @param {T} a 60833af6ab5fSopenharmony_ci+ * @param {U} b 60843af6ab5fSopenharmony_ci+ */ 60853af6ab5fSopenharmony_ci+function f1(a, b) {} 60863af6ab5fSopenharmony_ci+ 60873af6ab5fSopenharmony_ci+ /** 60883af6ab5fSopenharmony_ci+ * @template {string | number} [T=string] 60893af6ab5fSopenharmony_ci+ * @template U - error: Required type parameters cannot follow optional type parameters 60903af6ab5fSopenharmony_ci+ * @param {T} a 60913af6ab5fSopenharmony_ci+ * @param {U} b 60923af6ab5fSopenharmony_ci+ */ 60933af6ab5fSopenharmony_ci+function f2(a, b) {} 60943af6ab5fSopenharmony_ci+ 60953af6ab5fSopenharmony_ci+/** 60963af6ab5fSopenharmony_ci+ * @template [T=U] - error: Type parameter defaults can only reference previously declared type parameters. 60973af6ab5fSopenharmony_ci+ * @template [U=T] 60983af6ab5fSopenharmony_ci+ * @param {T} a 60993af6ab5fSopenharmony_ci+ * @param {U} b 61003af6ab5fSopenharmony_ci+ */ 61013af6ab5fSopenharmony_ci+function f3(a, b) {} 61023af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/jsdocTemplateTagNameResolution.ts b/tests/cases/conformance/jsdoc/jsdocTemplateTagNameResolution.ts 61033af6ab5fSopenharmony_cinew file mode 100644 61043af6ab5fSopenharmony_ciindex 0000000000..a5b4d052ad 61053af6ab5fSopenharmony_ci--- /dev/null 61063af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/jsdocTemplateTagNameResolution.ts 61073af6ab5fSopenharmony_ci@@ -0,0 +1,16 @@ 61083af6ab5fSopenharmony_ci+// @allowJs: true 61093af6ab5fSopenharmony_ci+// @checkJs: true 61103af6ab5fSopenharmony_ci+// @outDir: out 61113af6ab5fSopenharmony_ci+// @declaration: true 61123af6ab5fSopenharmony_ci+// @Filename: file.js 61133af6ab5fSopenharmony_ci+ 61143af6ab5fSopenharmony_ci+/** 61153af6ab5fSopenharmony_ci+ * @template T 61163af6ab5fSopenharmony_ci+ * @template {keyof T} K 61173af6ab5fSopenharmony_ci+ * @typedef {T[K]} Foo 61183af6ab5fSopenharmony_ci+ */ 61193af6ab5fSopenharmony_ci+ 61203af6ab5fSopenharmony_ci+const x = { a: 1 }; 61213af6ab5fSopenharmony_ci+ 61223af6ab5fSopenharmony_ci+/** @type {Foo<typeof x, "a">} */ 61233af6ab5fSopenharmony_ci+const y = "a"; 61243af6ab5fSopenharmony_ci\ No newline at end of file 61253af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/jsdocTypeReferenceUseBeforeDef.ts b/tests/cases/conformance/jsdoc/jsdocTypeReferenceUseBeforeDef.ts 61263af6ab5fSopenharmony_ciindex 93e735e1fa..b38836e7e7 100644 61273af6ab5fSopenharmony_ci--- a/tests/cases/conformance/jsdoc/jsdocTypeReferenceUseBeforeDef.ts 61283af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/jsdocTypeReferenceUseBeforeDef.ts 61293af6ab5fSopenharmony_ci@@ -6,3 +6,4 @@ 61303af6ab5fSopenharmony_ci const c = null 61313af6ab5fSopenharmony_ci class C { 61323af6ab5fSopenharmony_ci } 61333af6ab5fSopenharmony_ci+let q3 = new C(); 61343af6ab5fSopenharmony_ci\ No newline at end of file 61353af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/jsdocVariadicType.ts b/tests/cases/conformance/jsdoc/jsdocVariadicType.ts 61363af6ab5fSopenharmony_cinew file mode 100644 61373af6ab5fSopenharmony_ciindex 0000000000..cd4e75a54a 61383af6ab5fSopenharmony_ci--- /dev/null 61393af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/jsdocVariadicType.ts 61403af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 61413af6ab5fSopenharmony_ci+// @allowJS: true 61423af6ab5fSopenharmony_ci+// @checkJs: true 61433af6ab5fSopenharmony_ci+// @noEmit: true 61443af6ab5fSopenharmony_ci+ 61453af6ab5fSopenharmony_ci+// @filename: a.js 61463af6ab5fSopenharmony_ci+/** 61473af6ab5fSopenharmony_ci+ * @type {function(boolean, string, ...*):void} 61483af6ab5fSopenharmony_ci+ */ 61493af6ab5fSopenharmony_ci+const foo = function (a, b, ...r) { }; 61503af6ab5fSopenharmony_ci+ 61513af6ab5fSopenharmony_ci+// @filename: b.ts 61523af6ab5fSopenharmony_ci+foo(false, ''); 61533af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/seeTag3.ts b/tests/cases/conformance/jsdoc/seeTag3.ts 61543af6ab5fSopenharmony_cinew file mode 100644 61553af6ab5fSopenharmony_ciindex 0000000000..abd16226fe 61563af6ab5fSopenharmony_ci--- /dev/null 61573af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/seeTag3.ts 61583af6ab5fSopenharmony_ci@@ -0,0 +1,7 @@ 61593af6ab5fSopenharmony_ci+// @outdir: out/ 61603af6ab5fSopenharmony_ci+// @checkJs: true 61613af6ab5fSopenharmony_ci+// @filename: seeTag3.js 61623af6ab5fSopenharmony_ci+ 61633af6ab5fSopenharmony_ci+/** @see [The typescript web site](https://typescriptlang.org) */ 61643af6ab5fSopenharmony_ci+function theWholeThing() { 61653af6ab5fSopenharmony_ci+} 61663af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsdoc/thisTag2.ts b/tests/cases/conformance/jsdoc/thisTag2.ts 61673af6ab5fSopenharmony_cinew file mode 100644 61683af6ab5fSopenharmony_ciindex 0000000000..187ac9b932 61693af6ab5fSopenharmony_ci--- /dev/null 61703af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsdoc/thisTag2.ts 61713af6ab5fSopenharmony_ci@@ -0,0 +1,11 @@ 61723af6ab5fSopenharmony_ci+// @target: esnext 61733af6ab5fSopenharmony_ci+// @allowJs: true 61743af6ab5fSopenharmony_ci+// @declaration: true 61753af6ab5fSopenharmony_ci+// @emitDeclarationOnly: true 61763af6ab5fSopenharmony_ci+// @filename: a.js 61773af6ab5fSopenharmony_ci+ 61783af6ab5fSopenharmony_ci+/** @this {string} */ 61793af6ab5fSopenharmony_ci+export function f1() {} 61803af6ab5fSopenharmony_ci+ 61813af6ab5fSopenharmony_ci+/** @this */ 61823af6ab5fSopenharmony_ci+export function f2() {} 61833af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsx/jsxParsingError4.tsx b/tests/cases/conformance/jsx/jsxParsingError4.tsx 61843af6ab5fSopenharmony_cinew file mode 100644 61853af6ab5fSopenharmony_ciindex 0000000000..c4db4fe7ab 61863af6ab5fSopenharmony_ci--- /dev/null 61873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsx/jsxParsingError4.tsx 61883af6ab5fSopenharmony_ci@@ -0,0 +1,18 @@ 61893af6ab5fSopenharmony_ci+// @strict: true, false 61903af6ab5fSopenharmony_ci+// @jsx: react 61913af6ab5fSopenharmony_ci+// @filename: a.tsx 61923af6ab5fSopenharmony_ci+ 61933af6ab5fSopenharmony_ci+declare const React: any 61943af6ab5fSopenharmony_ci+declare namespace JSX { 61953af6ab5fSopenharmony_ci+ interface IntrinsicElements { 61963af6ab5fSopenharmony_ci+ [k: string]: any 61973af6ab5fSopenharmony_ci+ } 61983af6ab5fSopenharmony_ci+} 61993af6ab5fSopenharmony_ci+ 62003af6ab5fSopenharmony_ci+const a = ( 62013af6ab5fSopenharmony_ci+ <public-foo></public-foo> 62023af6ab5fSopenharmony_ci+); 62033af6ab5fSopenharmony_ci+ 62043af6ab5fSopenharmony_ci+const b = ( 62053af6ab5fSopenharmony_ci+ <public></public> 62063af6ab5fSopenharmony_ci+); 62073af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsx/jsxUnclosedParserRecovery.ts b/tests/cases/conformance/jsx/jsxUnclosedParserRecovery.ts 62083af6ab5fSopenharmony_cinew file mode 100644 62093af6ab5fSopenharmony_ciindex 0000000000..08b6149d37 62103af6ab5fSopenharmony_ci--- /dev/null 62113af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsx/jsxUnclosedParserRecovery.ts 62123af6ab5fSopenharmony_ci@@ -0,0 +1,140 @@ 62133af6ab5fSopenharmony_ci+// @Filename: jsxParserRecovery.tsx 62143af6ab5fSopenharmony_ci+// @jsx: preserve 62153af6ab5fSopenharmony_ci+ 62163af6ab5fSopenharmony_ci+// should have no errors here; all these functions should parse and resolve 62173af6ab5fSopenharmony_ci+noName(); noClose(); noCloseTypeArg(); noCloseAttrs(); noCloseTypeArgAttrs(); noCloseBracket(); noCloseBracketTypeArgAttrs(); noSelfclose(); noSelfcloseTypeArgAttrs(); 62183af6ab5fSopenharmony_ci+noNameTrailingTag(); noCloseTrailingTag(); noCloseTypeArgTrailingTag(); noCloseAttrsTrailingTag(); noCloseTypeArgAttrsTrailingTag(); noCloseBracketTrailingTag(); noCloseBracketTypeArgAttrsTrailingTag(); // noSelfcloseTrailingTag(); noSelfcloseTypeArgAttrsTrailingTag(); 62193af6ab5fSopenharmony_ci+noNameTrailingText(); noCloseTrailingText(); noCloseTypeArgTrailingText(); noCloseAttrsTrailingText(); noCloseTypeArgAttrsTrailingText(); noCloseBracketTrailingText(); noCloseBracketTypeArgAttrsTrailingText(); // noSelfcloseTrailingText(); noSelfcloseTypeArgAttrsTrailingText(); 62203af6ab5fSopenharmony_ci+ 62213af6ab5fSopenharmony_ci+function diddy() { 62223af6ab5fSopenharmony_ci+ return null; 62233af6ab5fSopenharmony_ci+} 62243af6ab5fSopenharmony_ci+ 62253af6ab5fSopenharmony_ci+var donkey = <div> 62263af6ab5fSopenharmony_ci+ < 62273af6ab5fSopenharmony_ci+</div>; 62283af6ab5fSopenharmony_ci+function noName() { } 62293af6ab5fSopenharmony_ci+var donkey = <div> 62303af6ab5fSopenharmony_ci+ <diddy 62313af6ab5fSopenharmony_ci+</div>; 62323af6ab5fSopenharmony_ci+function noClose() { } 62333af6ab5fSopenharmony_ci+var donkey = <div> 62343af6ab5fSopenharmony_ci+ <diddy<boolean> 62353af6ab5fSopenharmony_ci+</div>; 62363af6ab5fSopenharmony_ci+function noCloseTypeArg() { } 62373af6ab5fSopenharmony_ci+var donkey = <div> 62383af6ab5fSopenharmony_ci+ <diddy bananas="please" 62393af6ab5fSopenharmony_ci+</div>; 62403af6ab5fSopenharmony_ci+function noCloseAttrs() { } 62413af6ab5fSopenharmony_ci+var donkey = <div> 62423af6ab5fSopenharmony_ci+ <diddy<boolean> bananas="please" 62433af6ab5fSopenharmony_ci+</div>; 62443af6ab5fSopenharmony_ci+function noCloseTypeArgAttrs() { } 62453af6ab5fSopenharmony_ci+var donkey = <div> 62463af6ab5fSopenharmony_ci+ <diddy/ 62473af6ab5fSopenharmony_ci+</div>; 62483af6ab5fSopenharmony_ci+function noCloseBracket() { } 62493af6ab5fSopenharmony_ci+var donkey = <div> 62503af6ab5fSopenharmony_ci+ <diddy<boolean> bananas="please"/ 62513af6ab5fSopenharmony_ci+</div>; 62523af6ab5fSopenharmony_ci+function noCloseBracketTypeArgAttrs() { } 62533af6ab5fSopenharmony_ci+var donkey = <div> 62543af6ab5fSopenharmony_ci+ <diddy> 62553af6ab5fSopenharmony_ci+</div>; 62563af6ab5fSopenharmony_ci+function noSelfclose() { } 62573af6ab5fSopenharmony_ci+var donkey = <div> 62583af6ab5fSopenharmony_ci+ <diddy<boolean> bananas="please"> 62593af6ab5fSopenharmony_ci+</div>; 62603af6ab5fSopenharmony_ci+function noSelfcloseTypeArgAttrs() { } 62613af6ab5fSopenharmony_ci+ 62623af6ab5fSopenharmony_ci+var donkey = <div> 62633af6ab5fSopenharmony_ci+ < 62643af6ab5fSopenharmony_ci+ <diddy/> 62653af6ab5fSopenharmony_ci+</div>; 62663af6ab5fSopenharmony_ci+function noNameTrailingTag() { } 62673af6ab5fSopenharmony_ci+var donkey = <div> 62683af6ab5fSopenharmony_ci+ <diddy 62693af6ab5fSopenharmony_ci+ <diddy/> 62703af6ab5fSopenharmony_ci+</div>; 62713af6ab5fSopenharmony_ci+function noCloseTrailingTag() { } 62723af6ab5fSopenharmony_ci+var donkey = <div> 62733af6ab5fSopenharmony_ci+ <diddy<boolean> 62743af6ab5fSopenharmony_ci+ <diddy/> 62753af6ab5fSopenharmony_ci+</div>; 62763af6ab5fSopenharmony_ci+function noCloseTypeArgTrailingTag() { } 62773af6ab5fSopenharmony_ci+var donkey = <div> 62783af6ab5fSopenharmony_ci+ <diddy bananas="please" 62793af6ab5fSopenharmony_ci+ <diddy/> 62803af6ab5fSopenharmony_ci+</div>; 62813af6ab5fSopenharmony_ci+function noCloseAttrsTrailingTag() { } 62823af6ab5fSopenharmony_ci+var donkey = <div> 62833af6ab5fSopenharmony_ci+ <diddy<boolean> bananas="please" 62843af6ab5fSopenharmony_ci+ <diddy/> 62853af6ab5fSopenharmony_ci+</div>; 62863af6ab5fSopenharmony_ci+function noCloseTypeArgAttrsTrailingTag() { } 62873af6ab5fSopenharmony_ci+var donkey = <div> 62883af6ab5fSopenharmony_ci+ <diddy/ 62893af6ab5fSopenharmony_ci+ <diddy/> 62903af6ab5fSopenharmony_ci+</div>; 62913af6ab5fSopenharmony_ci+function noCloseBracketTrailingTag() { } 62923af6ab5fSopenharmony_ci+var donkey = <div> 62933af6ab5fSopenharmony_ci+ <diddy<boolean> bananas="please"/ 62943af6ab5fSopenharmony_ci+ <diddy/> 62953af6ab5fSopenharmony_ci+</div>; 62963af6ab5fSopenharmony_ci+function noCloseBracketTypeArgAttrsTrailingTag() { } 62973af6ab5fSopenharmony_ci+var donkey = <div> 62983af6ab5fSopenharmony_ci+ <diddy> 62993af6ab5fSopenharmony_ci+ <diddy/> 63003af6ab5fSopenharmony_ci+</div>; 63013af6ab5fSopenharmony_ci+function noSelfcloseTrailingTag() { } 63023af6ab5fSopenharmony_ci+var donkey = <div> 63033af6ab5fSopenharmony_ci+ <diddy<boolean> bananas="please"> 63043af6ab5fSopenharmony_ci+ <diddy/> 63053af6ab5fSopenharmony_ci+</div>; 63063af6ab5fSopenharmony_ci+function noSelfcloseTypeArgAttrsTrailingTag() { } 63073af6ab5fSopenharmony_ci+ 63083af6ab5fSopenharmony_ci+var donkey = <div> 63093af6ab5fSopenharmony_ci+ < 63103af6ab5fSopenharmony_ci+ Cranky Wrinkly Funky 63113af6ab5fSopenharmony_ci+</div>; 63123af6ab5fSopenharmony_ci+function noNameTrailingText() { } 63133af6ab5fSopenharmony_ci+var donkey = <div> 63143af6ab5fSopenharmony_ci+ <diddy 63153af6ab5fSopenharmony_ci+ Cranky Wrinkly Funky 63163af6ab5fSopenharmony_ci+</div>; 63173af6ab5fSopenharmony_ci+function noCloseTrailingText() { } 63183af6ab5fSopenharmony_ci+var donkey = <div> 63193af6ab5fSopenharmony_ci+ <diddy<boolean> 63203af6ab5fSopenharmony_ci+ Cranky Wrinkly Funky 63213af6ab5fSopenharmony_ci+</div>; 63223af6ab5fSopenharmony_ci+function noCloseTypeArgTrailingText() { } 63233af6ab5fSopenharmony_ci+var donkey = <div> 63243af6ab5fSopenharmony_ci+ <diddy bananas="please" 63253af6ab5fSopenharmony_ci+ Cranky Wrinkly Funky 63263af6ab5fSopenharmony_ci+</div>; 63273af6ab5fSopenharmony_ci+function noCloseAttrsTrailingText() { } 63283af6ab5fSopenharmony_ci+var donkey = <div> 63293af6ab5fSopenharmony_ci+ <diddy<boolean> bananas="please" 63303af6ab5fSopenharmony_ci+ Cranky Wrinkly Funky 63313af6ab5fSopenharmony_ci+</div>; 63323af6ab5fSopenharmony_ci+function noCloseTypeArgAttrsTrailingText() { } 63333af6ab5fSopenharmony_ci+var donkey = <div> 63343af6ab5fSopenharmony_ci+ <diddy/ 63353af6ab5fSopenharmony_ci+ Cranky Wrinkly Funky 63363af6ab5fSopenharmony_ci+</div>; 63373af6ab5fSopenharmony_ci+function noCloseBracketTrailingText() { } 63383af6ab5fSopenharmony_ci+var donkey = <div> 63393af6ab5fSopenharmony_ci+ <diddy<boolean> bananas="please"/ 63403af6ab5fSopenharmony_ci+ Cranky Wrinkly Funky 63413af6ab5fSopenharmony_ci+</div>; 63423af6ab5fSopenharmony_ci+function noCloseBracketTypeArgAttrsTrailingText() { } 63433af6ab5fSopenharmony_ci+var donkey = <div> 63443af6ab5fSopenharmony_ci+ <diddy> 63453af6ab5fSopenharmony_ci+ Cranky Wrinkly Funky 63463af6ab5fSopenharmony_ci+</div>; 63473af6ab5fSopenharmony_ci+function noSelfcloseTrailingText() { } 63483af6ab5fSopenharmony_ci+var donkey = <div> 63493af6ab5fSopenharmony_ci+ <diddy<boolean> bananas="please"> 63503af6ab5fSopenharmony_ci+ Cranky Wrinkly Funky 63513af6ab5fSopenharmony_ci+</div>; 63523af6ab5fSopenharmony_ci+function noSelfcloseTypeArgAttrsTrailingText() { } 63533af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/jsx/tsxReactEmitSpreadAttribute.ts b/tests/cases/conformance/jsx/tsxReactEmitSpreadAttribute.ts 63543af6ab5fSopenharmony_cinew file mode 100644 63553af6ab5fSopenharmony_ciindex 0000000000..2ddc20ae39 63563af6ab5fSopenharmony_ci--- /dev/null 63573af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/jsx/tsxReactEmitSpreadAttribute.ts 63583af6ab5fSopenharmony_ci@@ -0,0 +1,32 @@ 63593af6ab5fSopenharmony_ci+// @jsx: react-jsx 63603af6ab5fSopenharmony_ci+// @target: es2015,es2018,esnext 63613af6ab5fSopenharmony_ci+// @filename: test.tsx 63623af6ab5fSopenharmony_ci+/// <reference path="/.lib/react16.d.ts" /> 63633af6ab5fSopenharmony_ci+ 63643af6ab5fSopenharmony_ci+export function T1(a: any) { 63653af6ab5fSopenharmony_ci+ return <div className={"T1"} { ...a }>T1</div>; 63663af6ab5fSopenharmony_ci+} 63673af6ab5fSopenharmony_ci+ 63683af6ab5fSopenharmony_ci+export function T2(a: any, b: any) { 63693af6ab5fSopenharmony_ci+ return <div className={"T2"} { ...a } { ...b }>T2</div>; 63703af6ab5fSopenharmony_ci+} 63713af6ab5fSopenharmony_ci+ 63723af6ab5fSopenharmony_ci+export function T3(a: any, b: any) { 63733af6ab5fSopenharmony_ci+ return <div { ...a } className={"T3"} { ...b }>T3</div>; 63743af6ab5fSopenharmony_ci+} 63753af6ab5fSopenharmony_ci+ 63763af6ab5fSopenharmony_ci+export function T4(a: any, b: any) { 63773af6ab5fSopenharmony_ci+ return <div className={"T4"} { ...{ ...a, ...b } }>T4</div>; 63783af6ab5fSopenharmony_ci+} 63793af6ab5fSopenharmony_ci+ 63803af6ab5fSopenharmony_ci+export function T5(a: any, b: any, c: any, d: any) { 63813af6ab5fSopenharmony_ci+ return <div className={"T5"} { ...{ ...a, ...b, ...{ c, d } } }>T5</div>; 63823af6ab5fSopenharmony_ci+} 63833af6ab5fSopenharmony_ci+ 63843af6ab5fSopenharmony_ci+export function T6(a: any, b: any, c: any, d: any) { 63853af6ab5fSopenharmony_ci+ return <div className={"T6"} { ...{ ...a, ...b, ...{ ...c, ...d } } }>T6</div>; 63863af6ab5fSopenharmony_ci+} 63873af6ab5fSopenharmony_ci+ 63883af6ab5fSopenharmony_ci+export function T7(a: any, b: any, c: any, d: any) { 63893af6ab5fSopenharmony_ci+ return <div>T7</div>; 63903af6ab5fSopenharmony_ci+} 63913af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/moduleResolution/declarationNotFoundPackageBundlesTypes.ts b/tests/cases/conformance/moduleResolution/declarationNotFoundPackageBundlesTypes.ts 63923af6ab5fSopenharmony_cinew file mode 100644 63933af6ab5fSopenharmony_ciindex 0000000000..75c681daf0 63943af6ab5fSopenharmony_ci--- /dev/null 63953af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/moduleResolution/declarationNotFoundPackageBundlesTypes.ts 63963af6ab5fSopenharmony_ci@@ -0,0 +1,23 @@ 63973af6ab5fSopenharmony_ci+// @noImplicitAny: true 63983af6ab5fSopenharmony_ci+// @noImplicitReferences: true 63993af6ab5fSopenharmony_ci+ 64003af6ab5fSopenharmony_ci+// @filename: node_modules/foo/package.json 64013af6ab5fSopenharmony_ci+{ 64023af6ab5fSopenharmony_ci+ "name": "foo", 64033af6ab5fSopenharmony_ci+ "version": "1.0.0" 64043af6ab5fSopenharmony_ci+} 64053af6ab5fSopenharmony_ci+ 64063af6ab5fSopenharmony_ci+// @filename: node_modules/foo/index.js 64073af6ab5fSopenharmony_ci+var foo = 0; 64083af6ab5fSopenharmony_ci+module.exports = foo; 64093af6ab5fSopenharmony_ci+ 64103af6ab5fSopenharmony_ci+// @filename: node_modules/foo/index.d.ts 64113af6ab5fSopenharmony_ci+declare const foo: any; 64123af6ab5fSopenharmony_ci+export = foo; 64133af6ab5fSopenharmony_ci+ 64143af6ab5fSopenharmony_ci+// @filename: node_modules/foo/other.js 64153af6ab5fSopenharmony_ci+module.exports = {}; 64163af6ab5fSopenharmony_ci+ 64173af6ab5fSopenharmony_ci+// @filename: index.ts 64183af6ab5fSopenharmony_ci+import * as Foo from "foo"; 64193af6ab5fSopenharmony_ci+import * as Other from "foo/other"/*1*/; 64203af6ab5fSopenharmony_ci\ No newline at end of file 64213af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/moduleResolution/scopedPackages/index.d.ts b/tests/cases/conformance/moduleResolution/scopedPackages/index.d.ts 64223af6ab5fSopenharmony_cinew file mode 100644 64233af6ab5fSopenharmony_ciindex 0000000000..04d4f15421 64243af6ab5fSopenharmony_ci--- /dev/null 64253af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/moduleResolution/scopedPackages/index.d.ts 64263af6ab5fSopenharmony_ci@@ -0,0 +1,3 @@ 64273af6ab5fSopenharmony_ci+// @filename: /node_modules/@cow/boy/index.d.ts 64283af6ab5fSopenharmony_ci+export const x: number; 64293af6ab5fSopenharmony_ci+export const y: number; 64303af6ab5fSopenharmony_ci\ No newline at end of file 64313af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/moduleResolution/scopedPackages/scopedPackages.ts b/tests/cases/conformance/moduleResolution/scopedPackages/scopedPackages.ts 64323af6ab5fSopenharmony_cinew file mode 100644 64333af6ab5fSopenharmony_ciindex 0000000000..80db9778d1 64343af6ab5fSopenharmony_ci--- /dev/null 64353af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/moduleResolution/scopedPackages/scopedPackages.ts 64363af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 64373af6ab5fSopenharmony_ci+// @noImplicitReferences: true 64383af6ab5fSopenharmony_ci+// @traceResolution: true 64393af6ab5fSopenharmony_ci+// @typeRoots: types 64403af6ab5fSopenharmony_ci+ 64413af6ab5fSopenharmony_ci+ 64423af6ab5fSopenharmony_ci+// @filename: /a.ts 64433af6ab5fSopenharmony_ci+import { x } from "./index"; 64443af6ab5fSopenharmony_ci+import { y } from "./index"; 64453af6ab5fSopenharmony_ci+import { z } from "./z"; 64463af6ab5fSopenharmony_ci+x; 64473af6ab5fSopenharmony_ci+y; 64483af6ab5fSopenharmony_ci+z; 64493af6ab5fSopenharmony_ci\ No newline at end of file 64503af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/moduleResolution/scopedPackages/z.d.ts b/tests/cases/conformance/moduleResolution/scopedPackages/z.d.ts 64513af6ab5fSopenharmony_cinew file mode 100644 64523af6ab5fSopenharmony_ciindex 0000000000..8af8c4b248 64533af6ab5fSopenharmony_ci--- /dev/null 64543af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/moduleResolution/scopedPackages/z.d.ts 64553af6ab5fSopenharmony_ci@@ -0,0 +1,2 @@ 64563af6ab5fSopenharmony_ci+// @filename: /node_modules/@types/be__bop/e/z.d.ts 64573af6ab5fSopenharmony_ci+export const z: number; 64583af6ab5fSopenharmony_ci\ No newline at end of file 64593af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/moduleResolution/scopedPackagesClassic/index.d.ts b/tests/cases/conformance/moduleResolution/scopedPackagesClassic/index.d.ts 64603af6ab5fSopenharmony_cinew file mode 100644 64613af6ab5fSopenharmony_ciindex 0000000000..7cfe77597d 64623af6ab5fSopenharmony_ci--- /dev/null 64633af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/moduleResolution/scopedPackagesClassic/index.d.ts 64643af6ab5fSopenharmony_ci@@ -0,0 +1,2 @@ 64653af6ab5fSopenharmony_ci+// @filename: /node_modules/@types/see__saw/index.d.ts 64663af6ab5fSopenharmony_ci+export const x = 0; 64673af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/moduleResolution/scopedPackagesClassic/scopedPackagesClassic.ts b/tests/cases/conformance/moduleResolution/scopedPackagesClassic/scopedPackagesClassic.ts 64683af6ab5fSopenharmony_cinew file mode 100644 64693af6ab5fSopenharmony_ciindex 0000000000..4f491b9532 64703af6ab5fSopenharmony_ci--- /dev/null 64713af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/moduleResolution/scopedPackagesClassic/scopedPackagesClassic.ts 64723af6ab5fSopenharmony_ci@@ -0,0 +1,9 @@ 64733af6ab5fSopenharmony_ci+// @noImplicitReferences: true 64743af6ab5fSopenharmony_ci+// @traceResolution: true 64753af6ab5fSopenharmony_ci+// @typeRoots: types 64763af6ab5fSopenharmony_ci+// @moduleResolution: classic 64773af6ab5fSopenharmony_ci+ 64783af6ab5fSopenharmony_ci+ 64793af6ab5fSopenharmony_ci+// @filename: /a.ts 64803af6ab5fSopenharmony_ci+import { x } from "./index"; 64813af6ab5fSopenharmony_ci+x; 64823af6ab5fSopenharmony_ci\ No newline at end of file 64833af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/moduleResolution/untypedModuleImport_allowJs/untypedModuleImport_allowJs.ts b/tests/cases/conformance/moduleResolution/untypedModuleImport_allowJs/untypedModuleImport_allowJs.ts 64843af6ab5fSopenharmony_cinew file mode 100644 64853af6ab5fSopenharmony_ciindex 0000000000..b2c0c1f81c 64863af6ab5fSopenharmony_ci--- /dev/null 64873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/moduleResolution/untypedModuleImport_allowJs/untypedModuleImport_allowJs.ts 64883af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 64893af6ab5fSopenharmony_ci+// @noImplicitReferences: true 64903af6ab5fSopenharmony_ci+// @currentDirectory: / 64913af6ab5fSopenharmony_ci+// @allowJs: true 64923af6ab5fSopenharmony_ci+// @maxNodeModuleJsDepth: 1 64933af6ab5fSopenharmony_ci+// Same as untypedModuleImport.ts but with --allowJs, so the package will actually be typed. 64943af6ab5fSopenharmony_ci+ 64953af6ab5fSopenharmony_ci+// @filename: /node_modules/foo/index.js 64963af6ab5fSopenharmony_ci+// exports.default = { bar() { return 0; } } 64973af6ab5fSopenharmony_ci+ 64983af6ab5fSopenharmony_ci+// @filename: /a.ts 64993af6ab5fSopenharmony_ci+import foo from "foo"; 65003af6ab5fSopenharmony_ci+foo.bar(); 65013af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/moduleResolution/untypedModuleImport_vsAmbient/declarations.d.ts b/tests/cases/conformance/moduleResolution/untypedModuleImport_vsAmbient/declarations.d.ts 65023af6ab5fSopenharmony_cinew file mode 100644 65033af6ab5fSopenharmony_ciindex 0000000000..c54d01514d 65043af6ab5fSopenharmony_ci--- /dev/null 65053af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/moduleResolution/untypedModuleImport_vsAmbient/declarations.d.ts 65063af6ab5fSopenharmony_ci@@ -0,0 +1,4 @@ 65073af6ab5fSopenharmony_ci+// @filename: /declarations.d.ts 65083af6ab5fSopenharmony_ci+declare module "foo" { 65093af6ab5fSopenharmony_ci+ export const x: number; 65103af6ab5fSopenharmony_ci+} 65113af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/moduleResolution/untypedModuleImport_vsAmbient/untypedModuleImport_vsAmbient.ts b/tests/cases/conformance/moduleResolution/untypedModuleImport_vsAmbient/untypedModuleImport_vsAmbient.ts 65123af6ab5fSopenharmony_cinew file mode 100644 65133af6ab5fSopenharmony_ciindex 0000000000..577d258b72 65143af6ab5fSopenharmony_ci--- /dev/null 65153af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/moduleResolution/untypedModuleImport_vsAmbient/untypedModuleImport_vsAmbient.ts 65163af6ab5fSopenharmony_ci@@ -0,0 +1,12 @@ 65173af6ab5fSopenharmony_ci+// @noImplicitReferences: true 65183af6ab5fSopenharmony_ci+// @currentDirectory: / 65193af6ab5fSopenharmony_ci+// This tests that an ambient module declaration overrides an untyped import. 65203af6ab5fSopenharmony_ci+ 65213af6ab5fSopenharmony_ci+// @filename: /node_modules/foo/index.js 65223af6ab5fSopenharmony_ci+// This file is not processed. 65233af6ab5fSopenharmony_ci+ 65243af6ab5fSopenharmony_ci+ 65253af6ab5fSopenharmony_ci+// @filename: /a.ts 65263af6ab5fSopenharmony_ci+/// <reference path="./declarations.d.ts" /> 65273af6ab5fSopenharmony_ci+import { x } from "foo"; 65283af6ab5fSopenharmony_ci+x; 65293af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeAllowJsPackageSelfName.ts b/tests/cases/conformance/node/allowJs/nodeAllowJsPackageSelfName.ts 65303af6ab5fSopenharmony_cinew file mode 100644 65313af6ab5fSopenharmony_ciindex 0000000000..a19a7104ae 65323af6ab5fSopenharmony_ci--- /dev/null 65333af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeAllowJsPackageSelfName.ts 65343af6ab5fSopenharmony_ci@@ -0,0 +1,24 @@ 65353af6ab5fSopenharmony_ci+// @module: node12,nodenext 65363af6ab5fSopenharmony_ci+// @declaration: true 65373af6ab5fSopenharmony_ci+// @allowJs: true 65383af6ab5fSopenharmony_ci+// @checkJs: true 65393af6ab5fSopenharmony_ci+// @outDir: out 65403af6ab5fSopenharmony_ci+// @filename: index.js 65413af6ab5fSopenharmony_ci+// esm format file 65423af6ab5fSopenharmony_ci+import * as self from "package"; 65433af6ab5fSopenharmony_ci+self; 65443af6ab5fSopenharmony_ci+// @filename: index.mjs 65453af6ab5fSopenharmony_ci+// esm format file 65463af6ab5fSopenharmony_ci+import * as self from "package"; 65473af6ab5fSopenharmony_ci+self; 65483af6ab5fSopenharmony_ci+// @filename: index.cjs 65493af6ab5fSopenharmony_ci+// esm format file 65503af6ab5fSopenharmony_ci+import * as self from "package"; 65513af6ab5fSopenharmony_ci+self; 65523af6ab5fSopenharmony_ci+// @filename: package.json 65533af6ab5fSopenharmony_ci+{ 65543af6ab5fSopenharmony_ci+ "name": "package", 65553af6ab5fSopenharmony_ci+ "private": true, 65563af6ab5fSopenharmony_ci+ "type": "module", 65573af6ab5fSopenharmony_ci+ "exports": "./index.js" 65583af6ab5fSopenharmony_ci+} 65593af6ab5fSopenharmony_ci\ No newline at end of file 65603af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJs1.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJs1.ts 65613af6ab5fSopenharmony_cinew file mode 100644 65623af6ab5fSopenharmony_ciindex 0000000000..113c1fdeb8 65633af6ab5fSopenharmony_ci--- /dev/null 65643af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJs1.ts 65653af6ab5fSopenharmony_ci@@ -0,0 +1,324 @@ 65663af6ab5fSopenharmony_ci+// @module: node12,nodenext 65673af6ab5fSopenharmony_ci+// @declaration: true 65683af6ab5fSopenharmony_ci+// @allowJs: true 65693af6ab5fSopenharmony_ci+// @checkJs: true 65703af6ab5fSopenharmony_ci+// @outDir: out 65713af6ab5fSopenharmony_ci+// @filename: subfolder/index.js 65723af6ab5fSopenharmony_ci+// cjs format file 65733af6ab5fSopenharmony_ci+const x = 1; 65743af6ab5fSopenharmony_ci+export {x}; 65753af6ab5fSopenharmony_ci+// @filename: subfolder/index.cjs 65763af6ab5fSopenharmony_ci+// cjs format file 65773af6ab5fSopenharmony_ci+const x = 1; 65783af6ab5fSopenharmony_ci+export {x}; 65793af6ab5fSopenharmony_ci+// @filename: subfolder/index.mjs 65803af6ab5fSopenharmony_ci+// esm format file 65813af6ab5fSopenharmony_ci+const x = 1; 65823af6ab5fSopenharmony_ci+export {x}; 65833af6ab5fSopenharmony_ci+// @filename: subfolder2/index.js 65843af6ab5fSopenharmony_ci+// cjs format file 65853af6ab5fSopenharmony_ci+const x = 1; 65863af6ab5fSopenharmony_ci+export {x}; 65873af6ab5fSopenharmony_ci+// @filename: subfolder2/index.cjs 65883af6ab5fSopenharmony_ci+// cjs format file 65893af6ab5fSopenharmony_ci+const x = 1; 65903af6ab5fSopenharmony_ci+export {x}; 65913af6ab5fSopenharmony_ci+// @filename: subfolder2/index.mjs 65923af6ab5fSopenharmony_ci+// esm format file 65933af6ab5fSopenharmony_ci+const x = 1; 65943af6ab5fSopenharmony_ci+export {x}; 65953af6ab5fSopenharmony_ci+// @filename: subfolder2/another/index.js 65963af6ab5fSopenharmony_ci+// esm format file 65973af6ab5fSopenharmony_ci+const x = 1; 65983af6ab5fSopenharmony_ci+export {x}; 65993af6ab5fSopenharmony_ci+// @filename: subfolder2/another/index.cjs 66003af6ab5fSopenharmony_ci+// cjs format file 66013af6ab5fSopenharmony_ci+const x = 1; 66023af6ab5fSopenharmony_ci+export {x}; 66033af6ab5fSopenharmony_ci+// @filename: subfolder2/another/index.mjs 66043af6ab5fSopenharmony_ci+// esm format file 66053af6ab5fSopenharmony_ci+const x = 1; 66063af6ab5fSopenharmony_ci+export {x}; 66073af6ab5fSopenharmony_ci+// @filename: index.js 66083af6ab5fSopenharmony_ci+import * as m1 from "./index.js"; 66093af6ab5fSopenharmony_ci+import * as m2 from "./index.mjs"; 66103af6ab5fSopenharmony_ci+import * as m3 from "./index.cjs"; 66113af6ab5fSopenharmony_ci+import * as m4 from "./subfolder/index.js"; 66123af6ab5fSopenharmony_ci+import * as m5 from "./subfolder/index.mjs"; 66133af6ab5fSopenharmony_ci+import * as m6 from "./subfolder/index.cjs"; 66143af6ab5fSopenharmony_ci+import * as m7 from "./subfolder2/index.js"; 66153af6ab5fSopenharmony_ci+import * as m8 from "./subfolder2/index.mjs"; 66163af6ab5fSopenharmony_ci+import * as m9 from "./subfolder2/index.cjs"; 66173af6ab5fSopenharmony_ci+import * as m10 from "./subfolder2/another/index.js"; 66183af6ab5fSopenharmony_ci+import * as m11 from "./subfolder2/another/index.mjs"; 66193af6ab5fSopenharmony_ci+import * as m12 from "./subfolder2/another/index.cjs"; 66203af6ab5fSopenharmony_ci+// The next ones shouldn't all work - esm format files have no index resolution or extension resolution 66213af6ab5fSopenharmony_ci+import * as m13 from "./"; 66223af6ab5fSopenharmony_ci+import * as m14 from "./index"; 66233af6ab5fSopenharmony_ci+import * as m15 from "./subfolder"; 66243af6ab5fSopenharmony_ci+import * as m16 from "./subfolder/"; 66253af6ab5fSopenharmony_ci+import * as m17 from "./subfolder/index"; 66263af6ab5fSopenharmony_ci+import * as m18 from "./subfolder2"; 66273af6ab5fSopenharmony_ci+import * as m19 from "./subfolder2/"; 66283af6ab5fSopenharmony_ci+import * as m20 from "./subfolder2/index"; 66293af6ab5fSopenharmony_ci+import * as m21 from "./subfolder2/another"; 66303af6ab5fSopenharmony_ci+import * as m22 from "./subfolder2/another/"; 66313af6ab5fSopenharmony_ci+import * as m23 from "./subfolder2/another/index"; 66323af6ab5fSopenharmony_ci+void m1; 66333af6ab5fSopenharmony_ci+void m2; 66343af6ab5fSopenharmony_ci+void m3; 66353af6ab5fSopenharmony_ci+void m4; 66363af6ab5fSopenharmony_ci+void m5; 66373af6ab5fSopenharmony_ci+void m6; 66383af6ab5fSopenharmony_ci+void m7; 66393af6ab5fSopenharmony_ci+void m8; 66403af6ab5fSopenharmony_ci+void m9; 66413af6ab5fSopenharmony_ci+void m10; 66423af6ab5fSopenharmony_ci+void m11; 66433af6ab5fSopenharmony_ci+void m12; 66443af6ab5fSopenharmony_ci+void m13; 66453af6ab5fSopenharmony_ci+void m14; 66463af6ab5fSopenharmony_ci+void m15; 66473af6ab5fSopenharmony_ci+void m16; 66483af6ab5fSopenharmony_ci+void m17; 66493af6ab5fSopenharmony_ci+void m18; 66503af6ab5fSopenharmony_ci+void m19; 66513af6ab5fSopenharmony_ci+void m20; 66523af6ab5fSopenharmony_ci+void m21; 66533af6ab5fSopenharmony_ci+void m22; 66543af6ab5fSopenharmony_ci+void m23; 66553af6ab5fSopenharmony_ci+ 66563af6ab5fSopenharmony_ci+// These should _mostly_ work - `import = require` always desugars to require calls, which do have extension and index resolution (but can't load anything that resolves to esm!) 66573af6ab5fSopenharmony_ci+import m24 = require("./"); 66583af6ab5fSopenharmony_ci+import m25 = require("./index"); 66593af6ab5fSopenharmony_ci+import m26 = require("./subfolder"); 66603af6ab5fSopenharmony_ci+import m27 = require("./subfolder/"); 66613af6ab5fSopenharmony_ci+import m28 = require("./subfolder/index"); 66623af6ab5fSopenharmony_ci+import m29 = require("./subfolder2"); 66633af6ab5fSopenharmony_ci+import m30 = require("./subfolder2/"); 66643af6ab5fSopenharmony_ci+import m31 = require("./subfolder2/index"); 66653af6ab5fSopenharmony_ci+import m32 = require("./subfolder2/another"); 66663af6ab5fSopenharmony_ci+import m33 = require("./subfolder2/another/"); 66673af6ab5fSopenharmony_ci+import m34 = require("./subfolder2/another/index"); 66683af6ab5fSopenharmony_ci+void m24; 66693af6ab5fSopenharmony_ci+void m25; 66703af6ab5fSopenharmony_ci+void m26; 66713af6ab5fSopenharmony_ci+void m27; 66723af6ab5fSopenharmony_ci+void m28; 66733af6ab5fSopenharmony_ci+void m29; 66743af6ab5fSopenharmony_ci+void m30; 66753af6ab5fSopenharmony_ci+void m31; 66763af6ab5fSopenharmony_ci+void m32; 66773af6ab5fSopenharmony_ci+void m33; 66783af6ab5fSopenharmony_ci+void m34; 66793af6ab5fSopenharmony_ci+ 66803af6ab5fSopenharmony_ci+// These shouldn't work - dynamic `import()` always uses the esm resolver, which does not have extension resolution 66813af6ab5fSopenharmony_ci+const _m35 = import("./"); 66823af6ab5fSopenharmony_ci+const _m36 = import("./index"); 66833af6ab5fSopenharmony_ci+const _m37 = import("./subfolder"); 66843af6ab5fSopenharmony_ci+const _m38 = import("./subfolder/"); 66853af6ab5fSopenharmony_ci+const _m39 = import("./subfolder/index"); 66863af6ab5fSopenharmony_ci+const _m40 = import("./subfolder2"); 66873af6ab5fSopenharmony_ci+const _m41 = import("./subfolder2/"); 66883af6ab5fSopenharmony_ci+const _m42 = import("./subfolder2/index"); 66893af6ab5fSopenharmony_ci+const _m43 = import("./subfolder2/another"); 66903af6ab5fSopenharmony_ci+const _m44 = import("./subfolder2/another/"); 66913af6ab5fSopenharmony_ci+const _m45 = import("./subfolder2/another/index"); 66923af6ab5fSopenharmony_ci+// esm format file 66933af6ab5fSopenharmony_ci+const x = 1; 66943af6ab5fSopenharmony_ci+export {x}; 66953af6ab5fSopenharmony_ci+// @filename: index.cjs 66963af6ab5fSopenharmony_ci+// ESM-format imports below should issue errors 66973af6ab5fSopenharmony_ci+import * as m1 from "./index.js"; 66983af6ab5fSopenharmony_ci+import * as m2 from "./index.mjs"; 66993af6ab5fSopenharmony_ci+import * as m3 from "./index.cjs"; 67003af6ab5fSopenharmony_ci+import * as m4 from "./subfolder/index.js"; 67013af6ab5fSopenharmony_ci+import * as m5 from "./subfolder/index.mjs"; 67023af6ab5fSopenharmony_ci+import * as m6 from "./subfolder/index.cjs"; 67033af6ab5fSopenharmony_ci+import * as m7 from "./subfolder2/index.js"; 67043af6ab5fSopenharmony_ci+import * as m8 from "./subfolder2/index.mjs"; 67053af6ab5fSopenharmony_ci+import * as m9 from "./subfolder2/index.cjs"; 67063af6ab5fSopenharmony_ci+import * as m10 from "./subfolder2/another/index.js"; 67073af6ab5fSopenharmony_ci+import * as m11 from "./subfolder2/another/index.mjs"; 67083af6ab5fSopenharmony_ci+import * as m12 from "./subfolder2/another/index.cjs"; 67093af6ab5fSopenharmony_ci+// The next ones should _mostly_ work - cjs format files have index resolution and extension resolution (except for those which resolve to an esm format file) 67103af6ab5fSopenharmony_ci+import * as m13 from "./"; 67113af6ab5fSopenharmony_ci+import * as m14 from "./index"; 67123af6ab5fSopenharmony_ci+import * as m15 from "./subfolder"; 67133af6ab5fSopenharmony_ci+import * as m16 from "./subfolder/"; 67143af6ab5fSopenharmony_ci+import * as m17 from "./subfolder/index"; 67153af6ab5fSopenharmony_ci+import * as m18 from "./subfolder2"; 67163af6ab5fSopenharmony_ci+import * as m19 from "./subfolder2/"; 67173af6ab5fSopenharmony_ci+import * as m20 from "./subfolder2/index"; 67183af6ab5fSopenharmony_ci+import * as m21 from "./subfolder2/another"; 67193af6ab5fSopenharmony_ci+import * as m22 from "./subfolder2/another/"; 67203af6ab5fSopenharmony_ci+import * as m23 from "./subfolder2/another/index"; 67213af6ab5fSopenharmony_ci+void m1; 67223af6ab5fSopenharmony_ci+void m2; 67233af6ab5fSopenharmony_ci+void m3; 67243af6ab5fSopenharmony_ci+void m4; 67253af6ab5fSopenharmony_ci+void m5; 67263af6ab5fSopenharmony_ci+void m6; 67273af6ab5fSopenharmony_ci+void m7; 67283af6ab5fSopenharmony_ci+void m8; 67293af6ab5fSopenharmony_ci+void m9; 67303af6ab5fSopenharmony_ci+void m10; 67313af6ab5fSopenharmony_ci+void m11; 67323af6ab5fSopenharmony_ci+void m12; 67333af6ab5fSopenharmony_ci+void m13; 67343af6ab5fSopenharmony_ci+void m14; 67353af6ab5fSopenharmony_ci+void m15; 67363af6ab5fSopenharmony_ci+void m16; 67373af6ab5fSopenharmony_ci+void m17; 67383af6ab5fSopenharmony_ci+void m18; 67393af6ab5fSopenharmony_ci+void m19; 67403af6ab5fSopenharmony_ci+void m20; 67413af6ab5fSopenharmony_ci+void m21; 67423af6ab5fSopenharmony_ci+void m22; 67433af6ab5fSopenharmony_ci+void m23; 67443af6ab5fSopenharmony_ci+ 67453af6ab5fSopenharmony_ci+// These should _mostly_ work - `import = require` always desugars to require calls, which do have extension and index resolution (but can't load anything that resolves to esm!) 67463af6ab5fSopenharmony_ci+import m24 = require("./"); 67473af6ab5fSopenharmony_ci+import m25 = require("./index"); 67483af6ab5fSopenharmony_ci+import m26 = require("./subfolder"); 67493af6ab5fSopenharmony_ci+import m27 = require("./subfolder/"); 67503af6ab5fSopenharmony_ci+import m28 = require("./subfolder/index"); 67513af6ab5fSopenharmony_ci+import m29 = require("./subfolder2"); 67523af6ab5fSopenharmony_ci+import m30 = require("./subfolder2/"); 67533af6ab5fSopenharmony_ci+import m31 = require("./subfolder2/index"); 67543af6ab5fSopenharmony_ci+import m32 = require("./subfolder2/another"); 67553af6ab5fSopenharmony_ci+import m33 = require("./subfolder2/another/"); 67563af6ab5fSopenharmony_ci+import m34 = require("./subfolder2/another/index"); 67573af6ab5fSopenharmony_ci+void m24; 67583af6ab5fSopenharmony_ci+void m25; 67593af6ab5fSopenharmony_ci+void m26; 67603af6ab5fSopenharmony_ci+void m27; 67613af6ab5fSopenharmony_ci+void m28; 67623af6ab5fSopenharmony_ci+void m29; 67633af6ab5fSopenharmony_ci+void m30; 67643af6ab5fSopenharmony_ci+void m31; 67653af6ab5fSopenharmony_ci+void m32; 67663af6ab5fSopenharmony_ci+void m33; 67673af6ab5fSopenharmony_ci+void m34; 67683af6ab5fSopenharmony_ci+ 67693af6ab5fSopenharmony_ci+// These shouldn't work - dynamic `import()` always uses the esm resolver, which does not have extension resolution 67703af6ab5fSopenharmony_ci+const _m35 = import("./"); 67713af6ab5fSopenharmony_ci+const _m36 = import("./index"); 67723af6ab5fSopenharmony_ci+const _m37 = import("./subfolder"); 67733af6ab5fSopenharmony_ci+const _m38 = import("./subfolder/"); 67743af6ab5fSopenharmony_ci+const _m39 = import("./subfolder/index"); 67753af6ab5fSopenharmony_ci+const _m40 = import("./subfolder2"); 67763af6ab5fSopenharmony_ci+const _m41 = import("./subfolder2/"); 67773af6ab5fSopenharmony_ci+const _m42 = import("./subfolder2/index"); 67783af6ab5fSopenharmony_ci+const _m43 = import("./subfolder2/another"); 67793af6ab5fSopenharmony_ci+const _m44 = import("./subfolder2/another/"); 67803af6ab5fSopenharmony_ci+const _m45 = import("./subfolder2/another/index"); 67813af6ab5fSopenharmony_ci+// cjs format file 67823af6ab5fSopenharmony_ci+const x = 1; 67833af6ab5fSopenharmony_ci+export {x}; 67843af6ab5fSopenharmony_ci+// @filename: index.mjs 67853af6ab5fSopenharmony_ci+import * as m1 from "./index.js"; 67863af6ab5fSopenharmony_ci+import * as m2 from "./index.mjs"; 67873af6ab5fSopenharmony_ci+import * as m3 from "./index.cjs"; 67883af6ab5fSopenharmony_ci+import * as m4 from "./subfolder/index.js"; 67893af6ab5fSopenharmony_ci+import * as m5 from "./subfolder/index.mjs"; 67903af6ab5fSopenharmony_ci+import * as m6 from "./subfolder/index.cjs"; 67913af6ab5fSopenharmony_ci+import * as m7 from "./subfolder2/index.js"; 67923af6ab5fSopenharmony_ci+import * as m8 from "./subfolder2/index.mjs"; 67933af6ab5fSopenharmony_ci+import * as m9 from "./subfolder2/index.cjs"; 67943af6ab5fSopenharmony_ci+import * as m10 from "./subfolder2/another/index.js"; 67953af6ab5fSopenharmony_ci+import * as m11 from "./subfolder2/another/index.mjs"; 67963af6ab5fSopenharmony_ci+import * as m12 from "./subfolder2/another/index.cjs"; 67973af6ab5fSopenharmony_ci+// The next ones should all fail - esm format files have no index resolution or extension resolution 67983af6ab5fSopenharmony_ci+import * as m13 from "./"; 67993af6ab5fSopenharmony_ci+import * as m14 from "./index"; 68003af6ab5fSopenharmony_ci+import * as m15 from "./subfolder"; 68013af6ab5fSopenharmony_ci+import * as m16 from "./subfolder/"; 68023af6ab5fSopenharmony_ci+import * as m17 from "./subfolder/index"; 68033af6ab5fSopenharmony_ci+import * as m18 from "./subfolder2"; 68043af6ab5fSopenharmony_ci+import * as m19 from "./subfolder2/"; 68053af6ab5fSopenharmony_ci+import * as m20 from "./subfolder2/index"; 68063af6ab5fSopenharmony_ci+import * as m21 from "./subfolder2/another"; 68073af6ab5fSopenharmony_ci+import * as m22 from "./subfolder2/another/"; 68083af6ab5fSopenharmony_ci+import * as m23 from "./subfolder2/another/index"; 68093af6ab5fSopenharmony_ci+void m1; 68103af6ab5fSopenharmony_ci+void m2; 68113af6ab5fSopenharmony_ci+void m3; 68123af6ab5fSopenharmony_ci+void m4; 68133af6ab5fSopenharmony_ci+void m5; 68143af6ab5fSopenharmony_ci+void m6; 68153af6ab5fSopenharmony_ci+void m7; 68163af6ab5fSopenharmony_ci+void m8; 68173af6ab5fSopenharmony_ci+void m9; 68183af6ab5fSopenharmony_ci+void m10; 68193af6ab5fSopenharmony_ci+void m11; 68203af6ab5fSopenharmony_ci+void m12; 68213af6ab5fSopenharmony_ci+void m13; 68223af6ab5fSopenharmony_ci+void m14; 68233af6ab5fSopenharmony_ci+void m15; 68243af6ab5fSopenharmony_ci+void m16; 68253af6ab5fSopenharmony_ci+void m17; 68263af6ab5fSopenharmony_ci+void m18; 68273af6ab5fSopenharmony_ci+void m19; 68283af6ab5fSopenharmony_ci+void m20; 68293af6ab5fSopenharmony_ci+void m21; 68303af6ab5fSopenharmony_ci+void m22; 68313af6ab5fSopenharmony_ci+void m23; 68323af6ab5fSopenharmony_ci+ 68333af6ab5fSopenharmony_ci+// These should _mostly_ work - `import = require` always desugars to require calls, which do have extension and index resolution (but can't load anything that resolves to esm!) 68343af6ab5fSopenharmony_ci+import m24 = require("./"); 68353af6ab5fSopenharmony_ci+import m25 = require("./index"); 68363af6ab5fSopenharmony_ci+import m26 = require("./subfolder"); 68373af6ab5fSopenharmony_ci+import m27 = require("./subfolder/"); 68383af6ab5fSopenharmony_ci+import m28 = require("./subfolder/index"); 68393af6ab5fSopenharmony_ci+import m29 = require("./subfolder2"); 68403af6ab5fSopenharmony_ci+import m30 = require("./subfolder2/"); 68413af6ab5fSopenharmony_ci+import m31 = require("./subfolder2/index"); 68423af6ab5fSopenharmony_ci+import m32 = require("./subfolder2/another"); 68433af6ab5fSopenharmony_ci+import m33 = require("./subfolder2/another/"); 68443af6ab5fSopenharmony_ci+import m34 = require("./subfolder2/another/index"); 68453af6ab5fSopenharmony_ci+void m24; 68463af6ab5fSopenharmony_ci+void m25; 68473af6ab5fSopenharmony_ci+void m26; 68483af6ab5fSopenharmony_ci+void m27; 68493af6ab5fSopenharmony_ci+void m28; 68503af6ab5fSopenharmony_ci+void m29; 68513af6ab5fSopenharmony_ci+void m30; 68523af6ab5fSopenharmony_ci+void m31; 68533af6ab5fSopenharmony_ci+void m32; 68543af6ab5fSopenharmony_ci+void m33; 68553af6ab5fSopenharmony_ci+void m34; 68563af6ab5fSopenharmony_ci+ 68573af6ab5fSopenharmony_ci+// These shouldn't work - dynamic `import()` always uses the esm resolver, which does not have extension resolution 68583af6ab5fSopenharmony_ci+const _m35 = import("./"); 68593af6ab5fSopenharmony_ci+const _m36 = import("./index"); 68603af6ab5fSopenharmony_ci+const _m37 = import("./subfolder"); 68613af6ab5fSopenharmony_ci+const _m38 = import("./subfolder/"); 68623af6ab5fSopenharmony_ci+const _m39 = import("./subfolder/index"); 68633af6ab5fSopenharmony_ci+const _m40 = import("./subfolder2"); 68643af6ab5fSopenharmony_ci+const _m41 = import("./subfolder2/"); 68653af6ab5fSopenharmony_ci+const _m42 = import("./subfolder2/index"); 68663af6ab5fSopenharmony_ci+const _m43 = import("./subfolder2/another"); 68673af6ab5fSopenharmony_ci+const _m44 = import("./subfolder2/another/"); 68683af6ab5fSopenharmony_ci+const _m45 = import("./subfolder2/another/index"); 68693af6ab5fSopenharmony_ci+ 68703af6ab5fSopenharmony_ci+// esm format file 68713af6ab5fSopenharmony_ci+const x = 1; 68723af6ab5fSopenharmony_ci+export {x}; 68733af6ab5fSopenharmony_ci+// @filename: package.json 68743af6ab5fSopenharmony_ci+{ 68753af6ab5fSopenharmony_ci+ "name": "package", 68763af6ab5fSopenharmony_ci+ "private": true, 68773af6ab5fSopenharmony_ci+ "type": "module" 68783af6ab5fSopenharmony_ci+} 68793af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 68803af6ab5fSopenharmony_ci+{ 68813af6ab5fSopenharmony_ci+ "type": "commonjs" 68823af6ab5fSopenharmony_ci+} 68833af6ab5fSopenharmony_ci+// @filename: subfolder2/package.json 68843af6ab5fSopenharmony_ci+{ 68853af6ab5fSopenharmony_ci+} 68863af6ab5fSopenharmony_ci+// @filename: subfolder2/another/package.json 68873af6ab5fSopenharmony_ci+{ 68883af6ab5fSopenharmony_ci+ "type": "module" 68893af6ab5fSopenharmony_ci+} 68903af6ab5fSopenharmony_ci\ No newline at end of file 68913af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsCjsFromJs.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsCjsFromJs.ts 68923af6ab5fSopenharmony_cinew file mode 100644 68933af6ab5fSopenharmony_ciindex 0000000000..ea0821742f 68943af6ab5fSopenharmony_ci--- /dev/null 68953af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsCjsFromJs.ts 68963af6ab5fSopenharmony_ci@@ -0,0 +1,8 @@ 68973af6ab5fSopenharmony_ci+// @module: node12,nodenext 68983af6ab5fSopenharmony_ci+// @allowJs: true 68993af6ab5fSopenharmony_ci+// @noEmit: true 69003af6ab5fSopenharmony_ci+// @filename: foo.cjs 69013af6ab5fSopenharmony_ci+exports.foo = "foo" 69023af6ab5fSopenharmony_ci+// @filename: bar.ts 69033af6ab5fSopenharmony_ci+import foo from "./foo.cjs" 69043af6ab5fSopenharmony_ci+foo.foo; 69053af6ab5fSopenharmony_ci\ No newline at end of file 69063af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsConditionalPackageExports.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsConditionalPackageExports.ts 69073af6ab5fSopenharmony_cinew file mode 100644 69083af6ab5fSopenharmony_ciindex 0000000000..1020812d5a 69093af6ab5fSopenharmony_ci--- /dev/null 69103af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsConditionalPackageExports.ts 69113af6ab5fSopenharmony_ci@@ -0,0 +1,126 @@ 69123af6ab5fSopenharmony_ci+// @module: node12,nodenext 69133af6ab5fSopenharmony_ci+// @declaration: true 69143af6ab5fSopenharmony_ci+// @allowJs: true 69153af6ab5fSopenharmony_ci+// @checkJs: true 69163af6ab5fSopenharmony_ci+// @outDir: out 69173af6ab5fSopenharmony_ci+// @filename: index.js 69183af6ab5fSopenharmony_ci+// esm format file 69193af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 69203af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 69213af6ab5fSopenharmony_ci+import * as type from "package"; 69223af6ab5fSopenharmony_ci+cjs; 69233af6ab5fSopenharmony_ci+mjs; 69243af6ab5fSopenharmony_ci+type; 69253af6ab5fSopenharmony_ci+import * as cjsi from "inner/a"; 69263af6ab5fSopenharmony_ci+import * as mjsi from "inner/b"; 69273af6ab5fSopenharmony_ci+import * as typei from "inner"; 69283af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 69293af6ab5fSopenharmony_ci+cjsi.mjsSource; 69303af6ab5fSopenharmony_ci+mjsi.mjsSource; 69313af6ab5fSopenharmony_ci+typei.mjsSource; 69323af6ab5fSopenharmony_ci+ts.mjsSource; 69333af6ab5fSopenharmony_ci+// @filename: index.mjs 69343af6ab5fSopenharmony_ci+// esm format file 69353af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 69363af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 69373af6ab5fSopenharmony_ci+import * as type from "package"; 69383af6ab5fSopenharmony_ci+cjs; 69393af6ab5fSopenharmony_ci+mjs; 69403af6ab5fSopenharmony_ci+type; 69413af6ab5fSopenharmony_ci+import * as cjsi from "inner/a"; 69423af6ab5fSopenharmony_ci+import * as mjsi from "inner/b"; 69433af6ab5fSopenharmony_ci+import * as typei from "inner"; 69443af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 69453af6ab5fSopenharmony_ci+cjsi.mjsSource; 69463af6ab5fSopenharmony_ci+mjsi.mjsSource; 69473af6ab5fSopenharmony_ci+typei.mjsSource; 69483af6ab5fSopenharmony_ci+ts.mjsSource; 69493af6ab5fSopenharmony_ci+// @filename: index.cjs 69503af6ab5fSopenharmony_ci+// cjs format file 69513af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 69523af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 69533af6ab5fSopenharmony_ci+import * as type from "package"; 69543af6ab5fSopenharmony_ci+cjs; 69553af6ab5fSopenharmony_ci+mjs; 69563af6ab5fSopenharmony_ci+type; 69573af6ab5fSopenharmony_ci+import * as cjsi from "inner/a"; 69583af6ab5fSopenharmony_ci+import * as mjsi from "inner/b"; 69593af6ab5fSopenharmony_ci+import * as typei from "inner"; 69603af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 69613af6ab5fSopenharmony_ci+cjsi.cjsSource; 69623af6ab5fSopenharmony_ci+mjsi.cjsSource; 69633af6ab5fSopenharmony_ci+typei.implicitCjsSource; 69643af6ab5fSopenharmony_ci+ts.cjsSource; 69653af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 69663af6ab5fSopenharmony_ci+// cjs format file 69673af6ab5fSopenharmony_ci+import * as cjs from "inner/a"; 69683af6ab5fSopenharmony_ci+import * as mjs from "inner/b"; 69693af6ab5fSopenharmony_ci+import * as type from "inner"; 69703af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 69713af6ab5fSopenharmony_ci+export { cjs }; 69723af6ab5fSopenharmony_ci+export { mjs }; 69733af6ab5fSopenharmony_ci+export { type }; 69743af6ab5fSopenharmony_ci+export { ts }; 69753af6ab5fSopenharmony_ci+export const implicitCjsSource = true; 69763af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.mts 69773af6ab5fSopenharmony_ci+// esm format file 69783af6ab5fSopenharmony_ci+import * as cjs from "inner/a"; 69793af6ab5fSopenharmony_ci+import * as mjs from "inner/b"; 69803af6ab5fSopenharmony_ci+import * as type from "inner"; 69813af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 69823af6ab5fSopenharmony_ci+export { cjs }; 69833af6ab5fSopenharmony_ci+export { mjs }; 69843af6ab5fSopenharmony_ci+export { type }; 69853af6ab5fSopenharmony_ci+export { ts }; 69863af6ab5fSopenharmony_ci+export const mjsSource = true; 69873af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.cts 69883af6ab5fSopenharmony_ci+// cjs format file 69893af6ab5fSopenharmony_ci+import * as cjs from "inner/a"; 69903af6ab5fSopenharmony_ci+import * as mjs from "inner/b"; 69913af6ab5fSopenharmony_ci+import * as type from "inner"; 69923af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 69933af6ab5fSopenharmony_ci+export { cjs }; 69943af6ab5fSopenharmony_ci+export { mjs }; 69953af6ab5fSopenharmony_ci+export { type }; 69963af6ab5fSopenharmony_ci+export { ts }; 69973af6ab5fSopenharmony_ci+export const cjsSource = true; 69983af6ab5fSopenharmony_ci+// @filename: package.json 69993af6ab5fSopenharmony_ci+{ 70003af6ab5fSopenharmony_ci+ "name": "package", 70013af6ab5fSopenharmony_ci+ "private": true, 70023af6ab5fSopenharmony_ci+ "type": "module", 70033af6ab5fSopenharmony_ci+ "exports": { 70043af6ab5fSopenharmony_ci+ "./cjs": "./index.cjs", 70053af6ab5fSopenharmony_ci+ "./mjs": "./index.mjs", 70063af6ab5fSopenharmony_ci+ ".": "./index.js" 70073af6ab5fSopenharmony_ci+ } 70083af6ab5fSopenharmony_ci+} 70093af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 70103af6ab5fSopenharmony_ci+{ 70113af6ab5fSopenharmony_ci+ "name": "inner", 70123af6ab5fSopenharmony_ci+ "private": true, 70133af6ab5fSopenharmony_ci+ "exports": { 70143af6ab5fSopenharmony_ci+ "./a": { 70153af6ab5fSopenharmony_ci+ "require": "./index.cjs", 70163af6ab5fSopenharmony_ci+ "node": "./index.mjs" 70173af6ab5fSopenharmony_ci+ }, 70183af6ab5fSopenharmony_ci+ "./b": { 70193af6ab5fSopenharmony_ci+ "import": "./index.mjs", 70203af6ab5fSopenharmony_ci+ "node": "./index.cjs" 70213af6ab5fSopenharmony_ci+ }, 70223af6ab5fSopenharmony_ci+ ".": { 70233af6ab5fSopenharmony_ci+ "import": "./index.mjs", 70243af6ab5fSopenharmony_ci+ "node": "./index.js" 70253af6ab5fSopenharmony_ci+ }, 70263af6ab5fSopenharmony_ci+ "./types": { 70273af6ab5fSopenharmony_ci+ "types": { 70283af6ab5fSopenharmony_ci+ "import": "./index.d.mts", 70293af6ab5fSopenharmony_ci+ "require": "./index.d.cts", 70303af6ab5fSopenharmony_ci+ }, 70313af6ab5fSopenharmony_ci+ "node": { 70323af6ab5fSopenharmony_ci+ "import": "./index.mjs", 70333af6ab5fSopenharmony_ci+ "require": "./index.cjs" 70343af6ab5fSopenharmony_ci+ } 70353af6ab5fSopenharmony_ci+ } 70363af6ab5fSopenharmony_ci+ } 70373af6ab5fSopenharmony_ci+} 70383af6ab5fSopenharmony_ci\ No newline at end of file 70393af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsDynamicImport.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsDynamicImport.ts 70403af6ab5fSopenharmony_cinew file mode 100644 70413af6ab5fSopenharmony_ciindex 0000000000..d7032c648b 70423af6ab5fSopenharmony_ci--- /dev/null 70433af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsDynamicImport.ts 70443af6ab5fSopenharmony_ci@@ -0,0 +1,27 @@ 70453af6ab5fSopenharmony_ci+// @module: node12,nodenext 70463af6ab5fSopenharmony_ci+// @declaration: true 70473af6ab5fSopenharmony_ci+// @allowJs: true 70483af6ab5fSopenharmony_ci+// @checkJs: true 70493af6ab5fSopenharmony_ci+// @outDir: out 70503af6ab5fSopenharmony_ci+// @filename: subfolder/index.js 70513af6ab5fSopenharmony_ci+// cjs format file 70523af6ab5fSopenharmony_ci+export async function main() { 70533af6ab5fSopenharmony_ci+ const { readFile } = await import("fs"); 70543af6ab5fSopenharmony_ci+} 70553af6ab5fSopenharmony_ci+// @filename: index.js 70563af6ab5fSopenharmony_ci+// esm format file 70573af6ab5fSopenharmony_ci+export async function main() { 70583af6ab5fSopenharmony_ci+ const { readFile } = await import("fs"); 70593af6ab5fSopenharmony_ci+} 70603af6ab5fSopenharmony_ci+// @filename: package.json 70613af6ab5fSopenharmony_ci+{ 70623af6ab5fSopenharmony_ci+ "name": "package", 70633af6ab5fSopenharmony_ci+ "private": true, 70643af6ab5fSopenharmony_ci+ "type": "module" 70653af6ab5fSopenharmony_ci+} 70663af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 70673af6ab5fSopenharmony_ci+{ 70683af6ab5fSopenharmony_ci+ "type": "commonjs" 70693af6ab5fSopenharmony_ci+} 70703af6ab5fSopenharmony_ci+// @filename: types.d.ts 70713af6ab5fSopenharmony_ci+declare module "fs"; 70723af6ab5fSopenharmony_ci\ No newline at end of file 70733af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsExportAssignment.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsExportAssignment.ts 70743af6ab5fSopenharmony_cinew file mode 100644 70753af6ab5fSopenharmony_ciindex 0000000000..f7d5aaf822 70763af6ab5fSopenharmony_ci--- /dev/null 70773af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsExportAssignment.ts 70783af6ab5fSopenharmony_ci@@ -0,0 +1,32 @@ 70793af6ab5fSopenharmony_ci+// @module: node12,nodenext 70803af6ab5fSopenharmony_ci+// @declaration: true 70813af6ab5fSopenharmony_ci+// @allowJs: true 70823af6ab5fSopenharmony_ci+// @checkJs: true 70833af6ab5fSopenharmony_ci+// @outDir: out 70843af6ab5fSopenharmony_ci+// @filename: subfolder/index.js 70853af6ab5fSopenharmony_ci+// cjs format file 70863af6ab5fSopenharmony_ci+const a = {}; 70873af6ab5fSopenharmony_ci+export = a; 70883af6ab5fSopenharmony_ci+// @filename: subfolder/file.js 70893af6ab5fSopenharmony_ci+// cjs format file 70903af6ab5fSopenharmony_ci+const a = {}; 70913af6ab5fSopenharmony_ci+module.exports = a; 70923af6ab5fSopenharmony_ci+// @filename: index.js 70933af6ab5fSopenharmony_ci+// esm format file 70943af6ab5fSopenharmony_ci+const a = {}; 70953af6ab5fSopenharmony_ci+export = a; 70963af6ab5fSopenharmony_ci+// @filename: file.js 70973af6ab5fSopenharmony_ci+// esm format file 70983af6ab5fSopenharmony_ci+import "fs"; 70993af6ab5fSopenharmony_ci+const a = {}; 71003af6ab5fSopenharmony_ci+module.exports = a; 71013af6ab5fSopenharmony_ci+// @filename: package.json 71023af6ab5fSopenharmony_ci+{ 71033af6ab5fSopenharmony_ci+ "name": "package", 71043af6ab5fSopenharmony_ci+ "private": true, 71053af6ab5fSopenharmony_ci+ "type": "module" 71063af6ab5fSopenharmony_ci+} 71073af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 71083af6ab5fSopenharmony_ci+{ 71093af6ab5fSopenharmony_ci+ "type": "commonjs" 71103af6ab5fSopenharmony_ci+} 71113af6ab5fSopenharmony_ci\ No newline at end of file 71123af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsGeneratedNameCollisions.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsGeneratedNameCollisions.ts 71133af6ab5fSopenharmony_cinew file mode 100644 71143af6ab5fSopenharmony_ciindex 0000000000..14783731bf 71153af6ab5fSopenharmony_ci--- /dev/null 71163af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsGeneratedNameCollisions.ts 71173af6ab5fSopenharmony_ci@@ -0,0 +1,29 @@ 71183af6ab5fSopenharmony_ci+// @module: node12,nodenext 71193af6ab5fSopenharmony_ci+// @declaration: true 71203af6ab5fSopenharmony_ci+// @allowJs: true 71213af6ab5fSopenharmony_ci+// @checkJs: true 71223af6ab5fSopenharmony_ci+// @outDir: out 71233af6ab5fSopenharmony_ci+// @filename: subfolder/index.js 71243af6ab5fSopenharmony_ci+// cjs format file 71253af6ab5fSopenharmony_ci+function require() {} 71263af6ab5fSopenharmony_ci+const exports = {}; 71273af6ab5fSopenharmony_ci+class Object {} 71283af6ab5fSopenharmony_ci+export const __esModule = false; 71293af6ab5fSopenharmony_ci+export {require, exports, Object}; 71303af6ab5fSopenharmony_ci+// @filename: index.js 71313af6ab5fSopenharmony_ci+// esm format file 71323af6ab5fSopenharmony_ci+function require() {} 71333af6ab5fSopenharmony_ci+const exports = {}; 71343af6ab5fSopenharmony_ci+class Object {} 71353af6ab5fSopenharmony_ci+export const __esModule = false; 71363af6ab5fSopenharmony_ci+export {require, exports, Object}; 71373af6ab5fSopenharmony_ci+// @filename: package.json 71383af6ab5fSopenharmony_ci+{ 71393af6ab5fSopenharmony_ci+ "name": "package", 71403af6ab5fSopenharmony_ci+ "private": true, 71413af6ab5fSopenharmony_ci+ "type": "module" 71423af6ab5fSopenharmony_ci+} 71433af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 71443af6ab5fSopenharmony_ci+{ 71453af6ab5fSopenharmony_ci+ "type": "commonjs" 71463af6ab5fSopenharmony_ci+} 71473af6ab5fSopenharmony_ci\ No newline at end of file 71483af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportAssignment.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportAssignment.ts 71493af6ab5fSopenharmony_cinew file mode 100644 71503af6ab5fSopenharmony_ciindex 0000000000..53e6b94450 71513af6ab5fSopenharmony_ci--- /dev/null 71523af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportAssignment.ts 71533af6ab5fSopenharmony_ci@@ -0,0 +1,34 @@ 71543af6ab5fSopenharmony_ci+// @module: node12,nodenext 71553af6ab5fSopenharmony_ci+// @declaration: true 71563af6ab5fSopenharmony_ci+// @allowJs: true 71573af6ab5fSopenharmony_ci+// @checkJs: true 71583af6ab5fSopenharmony_ci+// @outDir: out 71593af6ab5fSopenharmony_ci+// @filename: subfolder/index.js 71603af6ab5fSopenharmony_ci+// cjs format file 71613af6ab5fSopenharmony_ci+import fs = require("fs"); 71623af6ab5fSopenharmony_ci+fs.readFile; 71633af6ab5fSopenharmony_ci+export import fs2 = require("fs"); 71643af6ab5fSopenharmony_ci+// @filename: index.js 71653af6ab5fSopenharmony_ci+// esm format file 71663af6ab5fSopenharmony_ci+import fs = require("fs"); 71673af6ab5fSopenharmony_ci+fs.readFile; 71683af6ab5fSopenharmony_ci+export import fs2 = require("fs"); 71693af6ab5fSopenharmony_ci+// @filename: file.js 71703af6ab5fSopenharmony_ci+// esm format file 71713af6ab5fSopenharmony_ci+const __require = null; 71723af6ab5fSopenharmony_ci+const _createRequire = null; 71733af6ab5fSopenharmony_ci+import fs = require("fs"); 71743af6ab5fSopenharmony_ci+fs.readFile; 71753af6ab5fSopenharmony_ci+export import fs2 = require("fs"); 71763af6ab5fSopenharmony_ci+// @filename: package.json 71773af6ab5fSopenharmony_ci+{ 71783af6ab5fSopenharmony_ci+ "name": "package", 71793af6ab5fSopenharmony_ci+ "private": true, 71803af6ab5fSopenharmony_ci+ "type": "module" 71813af6ab5fSopenharmony_ci+} 71823af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 71833af6ab5fSopenharmony_ci+{ 71843af6ab5fSopenharmony_ci+ "type": "commonjs" 71853af6ab5fSopenharmony_ci+} 71863af6ab5fSopenharmony_ci+// @filename: types.d.ts 71873af6ab5fSopenharmony_ci+declare module "fs"; 71883af6ab5fSopenharmony_ci\ No newline at end of file 71893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions1.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions1.ts 71903af6ab5fSopenharmony_cinew file mode 100644 71913af6ab5fSopenharmony_ciindex 0000000000..d5727a3dc7 71923af6ab5fSopenharmony_ci--- /dev/null 71933af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions1.ts 71943af6ab5fSopenharmony_ci@@ -0,0 +1,34 @@ 71953af6ab5fSopenharmony_ci+// @module: node12,nodenext 71963af6ab5fSopenharmony_ci+// @declaration: true 71973af6ab5fSopenharmony_ci+// @importHelpers: true 71983af6ab5fSopenharmony_ci+// @allowJs: true 71993af6ab5fSopenharmony_ci+// @checkJs: true 72003af6ab5fSopenharmony_ci+// @outDir: out 72013af6ab5fSopenharmony_ci+// @filename: subfolder/index.js 72023af6ab5fSopenharmony_ci+// cjs format file 72033af6ab5fSopenharmony_ci+import {default as _fs} from "fs"; 72043af6ab5fSopenharmony_ci+_fs.readFile; 72053af6ab5fSopenharmony_ci+import * as fs from "fs"; 72063af6ab5fSopenharmony_ci+fs.readFile; 72073af6ab5fSopenharmony_ci+// @filename: index.js 72083af6ab5fSopenharmony_ci+// esm format file 72093af6ab5fSopenharmony_ci+import {default as _fs} from "fs"; 72103af6ab5fSopenharmony_ci+_fs.readFile; 72113af6ab5fSopenharmony_ci+import * as fs from "fs"; 72123af6ab5fSopenharmony_ci+fs.readFile; 72133af6ab5fSopenharmony_ci+// @filename: package.json 72143af6ab5fSopenharmony_ci+{ 72153af6ab5fSopenharmony_ci+ "name": "package", 72163af6ab5fSopenharmony_ci+ "private": true, 72173af6ab5fSopenharmony_ci+ "type": "module" 72183af6ab5fSopenharmony_ci+} 72193af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 72203af6ab5fSopenharmony_ci+{ 72213af6ab5fSopenharmony_ci+ "type": "commonjs" 72223af6ab5fSopenharmony_ci+} 72233af6ab5fSopenharmony_ci+// @filename: types.d.ts 72243af6ab5fSopenharmony_ci+declare module "fs"; 72253af6ab5fSopenharmony_ci+declare module "tslib" { 72263af6ab5fSopenharmony_ci+ export {}; 72273af6ab5fSopenharmony_ci+ // intentionally missing all helpers 72283af6ab5fSopenharmony_ci+} 72293af6ab5fSopenharmony_ci\ No newline at end of file 72303af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions2.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions2.ts 72313af6ab5fSopenharmony_cinew file mode 100644 72323af6ab5fSopenharmony_ciindex 0000000000..032290f78b 72333af6ab5fSopenharmony_ci--- /dev/null 72343af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions2.ts 72353af6ab5fSopenharmony_ci@@ -0,0 +1,30 @@ 72363af6ab5fSopenharmony_ci+// @module: node12,nodenext 72373af6ab5fSopenharmony_ci+// @declaration: true 72383af6ab5fSopenharmony_ci+// @importHelpers: true 72393af6ab5fSopenharmony_ci+// @allowJs: true 72403af6ab5fSopenharmony_ci+// @checkJs: true 72413af6ab5fSopenharmony_ci+// @outDir: out 72423af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 72433af6ab5fSopenharmony_ci+// cjs format file 72443af6ab5fSopenharmony_ci+export * from "fs"; 72453af6ab5fSopenharmony_ci+export * as fs from "fs"; 72463af6ab5fSopenharmony_ci+// @filename: index.js 72473af6ab5fSopenharmony_ci+// esm format file 72483af6ab5fSopenharmony_ci+export * from "fs"; 72493af6ab5fSopenharmony_ci+export * as fs from "fs"; 72503af6ab5fSopenharmony_ci+// @filename: package.json 72513af6ab5fSopenharmony_ci+{ 72523af6ab5fSopenharmony_ci+ "name": "package", 72533af6ab5fSopenharmony_ci+ "private": true, 72543af6ab5fSopenharmony_ci+ "type": "module" 72553af6ab5fSopenharmony_ci+} 72563af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 72573af6ab5fSopenharmony_ci+{ 72583af6ab5fSopenharmony_ci+ "type": "commonjs" 72593af6ab5fSopenharmony_ci+} 72603af6ab5fSopenharmony_ci+// @filename: types.d.ts 72613af6ab5fSopenharmony_ci+declare module "fs"; 72623af6ab5fSopenharmony_ci+declare module "tslib" { 72633af6ab5fSopenharmony_ci+ export {}; 72643af6ab5fSopenharmony_ci+ // intentionally missing all helpers 72653af6ab5fSopenharmony_ci+} 72663af6ab5fSopenharmony_ci\ No newline at end of file 72673af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions3.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions3.ts 72683af6ab5fSopenharmony_cinew file mode 100644 72693af6ab5fSopenharmony_ciindex 0000000000..9452e2003a 72703af6ab5fSopenharmony_ci--- /dev/null 72713af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportHelpersCollisions3.ts 72723af6ab5fSopenharmony_ci@@ -0,0 +1,32 @@ 72733af6ab5fSopenharmony_ci+// @module: node12,nodenext 72743af6ab5fSopenharmony_ci+// @declaration: true 72753af6ab5fSopenharmony_ci+// @importHelpers: true 72763af6ab5fSopenharmony_ci+// @allowJs: true 72773af6ab5fSopenharmony_ci+// @checkJs: true 72783af6ab5fSopenharmony_ci+// @outDir: out 72793af6ab5fSopenharmony_ci+// @filename: subfolder/index.js 72803af6ab5fSopenharmony_ci+// cjs format file 72813af6ab5fSopenharmony_ci+export {default} from "fs"; 72823af6ab5fSopenharmony_ci+export {default as foo} from "fs"; 72833af6ab5fSopenharmony_ci+export {bar as baz} from "fs"; 72843af6ab5fSopenharmony_ci+// @filename: index.js 72853af6ab5fSopenharmony_ci+// esm format file 72863af6ab5fSopenharmony_ci+export {default} from "fs"; 72873af6ab5fSopenharmony_ci+export {default as foo} from "fs"; 72883af6ab5fSopenharmony_ci+export {bar as baz} from "fs"; 72893af6ab5fSopenharmony_ci+// @filename: package.json 72903af6ab5fSopenharmony_ci+{ 72913af6ab5fSopenharmony_ci+ "name": "package", 72923af6ab5fSopenharmony_ci+ "private": true, 72933af6ab5fSopenharmony_ci+ "type": "module" 72943af6ab5fSopenharmony_ci+} 72953af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 72963af6ab5fSopenharmony_ci+{ 72973af6ab5fSopenharmony_ci+ "type": "commonjs" 72983af6ab5fSopenharmony_ci+} 72993af6ab5fSopenharmony_ci+// @filename: types.d.ts 73003af6ab5fSopenharmony_ci+declare module "fs"; 73013af6ab5fSopenharmony_ci+declare module "tslib" { 73023af6ab5fSopenharmony_ci+ export {}; 73033af6ab5fSopenharmony_ci+ // intentionally missing all helpers 73043af6ab5fSopenharmony_ci+} 73053af6ab5fSopenharmony_ci\ No newline at end of file 73063af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportMeta.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportMeta.ts 73073af6ab5fSopenharmony_cinew file mode 100644 73083af6ab5fSopenharmony_ciindex 0000000000..a8708434b9 73093af6ab5fSopenharmony_ci--- /dev/null 73103af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsImportMeta.ts 73113af6ab5fSopenharmony_ci@@ -0,0 +1,23 @@ 73123af6ab5fSopenharmony_ci+// @module: node12,nodenext 73133af6ab5fSopenharmony_ci+// @declaration: true 73143af6ab5fSopenharmony_ci+// @allowJs: true 73153af6ab5fSopenharmony_ci+// @checkJs: true 73163af6ab5fSopenharmony_ci+// @outDir: out 73173af6ab5fSopenharmony_ci+// @filename: subfolder/index.js 73183af6ab5fSopenharmony_ci+// cjs format file 73193af6ab5fSopenharmony_ci+const x = import.meta.url; 73203af6ab5fSopenharmony_ci+export {x}; 73213af6ab5fSopenharmony_ci+// @filename: index.js 73223af6ab5fSopenharmony_ci+// esm format file 73233af6ab5fSopenharmony_ci+const x = import.meta.url; 73243af6ab5fSopenharmony_ci+export {x}; 73253af6ab5fSopenharmony_ci+// @filename: package.json 73263af6ab5fSopenharmony_ci+{ 73273af6ab5fSopenharmony_ci+ "name": "package", 73283af6ab5fSopenharmony_ci+ "private": true, 73293af6ab5fSopenharmony_ci+ "type": "module" 73303af6ab5fSopenharmony_ci+} 73313af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 73323af6ab5fSopenharmony_ci+{ 73333af6ab5fSopenharmony_ci+ "type": "commonjs" 73343af6ab5fSopenharmony_ci+} 73353af6ab5fSopenharmony_ci\ No newline at end of file 73363af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackageExports.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackageExports.ts 73373af6ab5fSopenharmony_cinew file mode 100644 73383af6ab5fSopenharmony_ciindex 0000000000..65e5721b0b 73393af6ab5fSopenharmony_ci--- /dev/null 73403af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackageExports.ts 73413af6ab5fSopenharmony_ci@@ -0,0 +1,92 @@ 73423af6ab5fSopenharmony_ci+// @module: node12,nodenext 73433af6ab5fSopenharmony_ci+// @declaration: true 73443af6ab5fSopenharmony_ci+// @allowJs: true 73453af6ab5fSopenharmony_ci+// @checkJs: true 73463af6ab5fSopenharmony_ci+// @outDir: out 73473af6ab5fSopenharmony_ci+// @filename: index.js 73483af6ab5fSopenharmony_ci+// esm format file 73493af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 73503af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 73513af6ab5fSopenharmony_ci+import * as type from "package"; 73523af6ab5fSopenharmony_ci+cjs; 73533af6ab5fSopenharmony_ci+mjs; 73543af6ab5fSopenharmony_ci+type; 73553af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs"; 73563af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs"; 73573af6ab5fSopenharmony_ci+import * as typei from "inner"; 73583af6ab5fSopenharmony_ci+cjsi; 73593af6ab5fSopenharmony_ci+mjsi; 73603af6ab5fSopenharmony_ci+typei; 73613af6ab5fSopenharmony_ci+// @filename: index.mjs 73623af6ab5fSopenharmony_ci+// esm format file 73633af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 73643af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 73653af6ab5fSopenharmony_ci+import * as type from "package"; 73663af6ab5fSopenharmony_ci+cjs; 73673af6ab5fSopenharmony_ci+mjs; 73683af6ab5fSopenharmony_ci+type; 73693af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs"; 73703af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs"; 73713af6ab5fSopenharmony_ci+import * as typei from "inner"; 73723af6ab5fSopenharmony_ci+cjsi; 73733af6ab5fSopenharmony_ci+mjsi; 73743af6ab5fSopenharmony_ci+typei; 73753af6ab5fSopenharmony_ci+// @filename: index.cjs 73763af6ab5fSopenharmony_ci+// cjs format file 73773af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 73783af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 73793af6ab5fSopenharmony_ci+import * as type from "package"; 73803af6ab5fSopenharmony_ci+cjs; 73813af6ab5fSopenharmony_ci+mjs; 73823af6ab5fSopenharmony_ci+type; 73833af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs"; 73843af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs"; 73853af6ab5fSopenharmony_ci+import * as typei from "inner"; 73863af6ab5fSopenharmony_ci+cjsi; 73873af6ab5fSopenharmony_ci+mjsi; 73883af6ab5fSopenharmony_ci+typei; 73893af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 73903af6ab5fSopenharmony_ci+// cjs format file 73913af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs"; 73923af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs"; 73933af6ab5fSopenharmony_ci+import * as type from "inner"; 73943af6ab5fSopenharmony_ci+export { cjs }; 73953af6ab5fSopenharmony_ci+export { mjs }; 73963af6ab5fSopenharmony_ci+export { type }; 73973af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.mts 73983af6ab5fSopenharmony_ci+// esm format file 73993af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs"; 74003af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs"; 74013af6ab5fSopenharmony_ci+import * as type from "inner"; 74023af6ab5fSopenharmony_ci+export { cjs }; 74033af6ab5fSopenharmony_ci+export { mjs }; 74043af6ab5fSopenharmony_ci+export { type }; 74053af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.cts 74063af6ab5fSopenharmony_ci+// cjs format file 74073af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs"; 74083af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs"; 74093af6ab5fSopenharmony_ci+import * as type from "inner"; 74103af6ab5fSopenharmony_ci+export { cjs }; 74113af6ab5fSopenharmony_ci+export { mjs }; 74123af6ab5fSopenharmony_ci+export { type }; 74133af6ab5fSopenharmony_ci+// @filename: package.json 74143af6ab5fSopenharmony_ci+{ 74153af6ab5fSopenharmony_ci+ "name": "package", 74163af6ab5fSopenharmony_ci+ "private": true, 74173af6ab5fSopenharmony_ci+ "type": "module", 74183af6ab5fSopenharmony_ci+ "exports": { 74193af6ab5fSopenharmony_ci+ "./cjs": "./index.cjs", 74203af6ab5fSopenharmony_ci+ "./mjs": "./index.mjs", 74213af6ab5fSopenharmony_ci+ ".": "./index.js" 74223af6ab5fSopenharmony_ci+ } 74233af6ab5fSopenharmony_ci+} 74243af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 74253af6ab5fSopenharmony_ci+{ 74263af6ab5fSopenharmony_ci+ "name": "inner", 74273af6ab5fSopenharmony_ci+ "private": true, 74283af6ab5fSopenharmony_ci+ "exports": { 74293af6ab5fSopenharmony_ci+ "./cjs": "./index.cjs", 74303af6ab5fSopenharmony_ci+ "./mjs": "./index.mjs", 74313af6ab5fSopenharmony_ci+ ".": "./index.js" 74323af6ab5fSopenharmony_ci+ } 74333af6ab5fSopenharmony_ci+} 74343af6ab5fSopenharmony_ci\ No newline at end of file 74353af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackageImports.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackageImports.ts 74363af6ab5fSopenharmony_cinew file mode 100644 74373af6ab5fSopenharmony_ciindex 0000000000..b9d6027f5d 74383af6ab5fSopenharmony_ci--- /dev/null 74393af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackageImports.ts 74403af6ab5fSopenharmony_ci@@ -0,0 +1,41 @@ 74413af6ab5fSopenharmony_ci+// @module: node12,nodenext 74423af6ab5fSopenharmony_ci+// @declaration: true 74433af6ab5fSopenharmony_ci+// @allowJs: true 74443af6ab5fSopenharmony_ci+// @checkJs: true 74453af6ab5fSopenharmony_ci+// @outDir: out 74463af6ab5fSopenharmony_ci+// @filename: index.js 74473af6ab5fSopenharmony_ci+// esm format file 74483af6ab5fSopenharmony_ci+import * as cjs from "#cjs"; 74493af6ab5fSopenharmony_ci+import * as mjs from "#mjs"; 74503af6ab5fSopenharmony_ci+import * as type from "#type"; 74513af6ab5fSopenharmony_ci+cjs; 74523af6ab5fSopenharmony_ci+mjs; 74533af6ab5fSopenharmony_ci+type; 74543af6ab5fSopenharmony_ci+// @filename: index.mjs 74553af6ab5fSopenharmony_ci+// esm format file 74563af6ab5fSopenharmony_ci+import * as cjs from "#cjs"; 74573af6ab5fSopenharmony_ci+import * as mjs from "#mjs"; 74583af6ab5fSopenharmony_ci+import * as type from "#type"; 74593af6ab5fSopenharmony_ci+cjs; 74603af6ab5fSopenharmony_ci+mjs; 74613af6ab5fSopenharmony_ci+type; 74623af6ab5fSopenharmony_ci+// @filename: index.cjs 74633af6ab5fSopenharmony_ci+// esm format file 74643af6ab5fSopenharmony_ci+import * as cjs from "#cjs"; 74653af6ab5fSopenharmony_ci+import * as mjs from "#mjs"; 74663af6ab5fSopenharmony_ci+import * as type from "#type"; 74673af6ab5fSopenharmony_ci+cjs; 74683af6ab5fSopenharmony_ci+mjs; 74693af6ab5fSopenharmony_ci+type; 74703af6ab5fSopenharmony_ci+// @filename: package.json 74713af6ab5fSopenharmony_ci+{ 74723af6ab5fSopenharmony_ci+ "name": "package", 74733af6ab5fSopenharmony_ci+ "private": true, 74743af6ab5fSopenharmony_ci+ "type": "module", 74753af6ab5fSopenharmony_ci+ "exports": "./index.js", 74763af6ab5fSopenharmony_ci+ "imports": { 74773af6ab5fSopenharmony_ci+ "#cjs": "./index.cjs", 74783af6ab5fSopenharmony_ci+ "#mjs": "./index.mjs", 74793af6ab5fSopenharmony_ci+ "#type": "./index.js" 74803af6ab5fSopenharmony_ci+ } 74813af6ab5fSopenharmony_ci+} 74823af6ab5fSopenharmony_ci\ No newline at end of file 74833af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackagePatternExports.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackagePatternExports.ts 74843af6ab5fSopenharmony_cinew file mode 100644 74853af6ab5fSopenharmony_ciindex 0000000000..2691885690 74863af6ab5fSopenharmony_ci--- /dev/null 74873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackagePatternExports.ts 74883af6ab5fSopenharmony_ci@@ -0,0 +1,69 @@ 74893af6ab5fSopenharmony_ci+// @module: node12,nodenext 74903af6ab5fSopenharmony_ci+// @declaration: true 74913af6ab5fSopenharmony_ci+// @allowJs: true 74923af6ab5fSopenharmony_ci+// @checkJs: true 74933af6ab5fSopenharmony_ci+// @outDir: out 74943af6ab5fSopenharmony_ci+// @filename: index.js 74953af6ab5fSopenharmony_ci+// esm format file 74963af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index"; 74973af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index"; 74983af6ab5fSopenharmony_ci+import * as typei from "inner/js/index"; 74993af6ab5fSopenharmony_ci+cjsi; 75003af6ab5fSopenharmony_ci+mjsi; 75013af6ab5fSopenharmony_ci+typei; 75023af6ab5fSopenharmony_ci+// @filename: index.mjs 75033af6ab5fSopenharmony_ci+// esm format file 75043af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index"; 75053af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index"; 75063af6ab5fSopenharmony_ci+import * as typei from "inner/js/index"; 75073af6ab5fSopenharmony_ci+cjsi; 75083af6ab5fSopenharmony_ci+mjsi; 75093af6ab5fSopenharmony_ci+typei; 75103af6ab5fSopenharmony_ci+// @filename: index.cjs 75113af6ab5fSopenharmony_ci+// cjs format file 75123af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index"; 75133af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index"; 75143af6ab5fSopenharmony_ci+import * as typei from "inner/js/index"; 75153af6ab5fSopenharmony_ci+cjsi; 75163af6ab5fSopenharmony_ci+mjsi; 75173af6ab5fSopenharmony_ci+typei; 75183af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 75193af6ab5fSopenharmony_ci+// cjs format file 75203af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index"; 75213af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index"; 75223af6ab5fSopenharmony_ci+import * as type from "inner/js/index"; 75233af6ab5fSopenharmony_ci+export { cjs }; 75243af6ab5fSopenharmony_ci+export { mjs }; 75253af6ab5fSopenharmony_ci+export { type }; 75263af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.mts 75273af6ab5fSopenharmony_ci+// esm format file 75283af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index"; 75293af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index"; 75303af6ab5fSopenharmony_ci+import * as type from "inner/js/index"; 75313af6ab5fSopenharmony_ci+export { cjs }; 75323af6ab5fSopenharmony_ci+export { mjs }; 75333af6ab5fSopenharmony_ci+export { type }; 75343af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.cts 75353af6ab5fSopenharmony_ci+// cjs format file 75363af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index"; 75373af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index"; 75383af6ab5fSopenharmony_ci+import * as type from "inner/js/index"; 75393af6ab5fSopenharmony_ci+export { cjs }; 75403af6ab5fSopenharmony_ci+export { mjs }; 75413af6ab5fSopenharmony_ci+export { type }; 75423af6ab5fSopenharmony_ci+// @filename: package.json 75433af6ab5fSopenharmony_ci+{ 75443af6ab5fSopenharmony_ci+ "name": "package", 75453af6ab5fSopenharmony_ci+ "private": true, 75463af6ab5fSopenharmony_ci+ "type": "module", 75473af6ab5fSopenharmony_ci+} 75483af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 75493af6ab5fSopenharmony_ci+{ 75503af6ab5fSopenharmony_ci+ "name": "inner", 75513af6ab5fSopenharmony_ci+ "private": true, 75523af6ab5fSopenharmony_ci+ "exports": { 75533af6ab5fSopenharmony_ci+ "./cjs/*": "./*.cjs", 75543af6ab5fSopenharmony_ci+ "./mjs/*": "./*.mjs", 75553af6ab5fSopenharmony_ci+ "./js/*": "./*.js" 75563af6ab5fSopenharmony_ci+ } 75573af6ab5fSopenharmony_ci+} 75583af6ab5fSopenharmony_ci\ No newline at end of file 75593af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackagePatternExportsTrailers.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackagePatternExportsTrailers.ts 75603af6ab5fSopenharmony_cinew file mode 100644 75613af6ab5fSopenharmony_ciindex 0000000000..6b96f34758 75623af6ab5fSopenharmony_ci--- /dev/null 75633af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsPackagePatternExportsTrailers.ts 75643af6ab5fSopenharmony_ci@@ -0,0 +1,69 @@ 75653af6ab5fSopenharmony_ci+// @module: node12,nodenext 75663af6ab5fSopenharmony_ci+// @declaration: true 75673af6ab5fSopenharmony_ci+// @allowJs: true 75683af6ab5fSopenharmony_ci+// @checkJs: true 75693af6ab5fSopenharmony_ci+// @outDir: out 75703af6ab5fSopenharmony_ci+// @filename: index.js 75713af6ab5fSopenharmony_ci+// esm format file 75723af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index.cjs"; 75733af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index.mjs"; 75743af6ab5fSopenharmony_ci+import * as typei from "inner/js/index.js"; 75753af6ab5fSopenharmony_ci+cjsi; 75763af6ab5fSopenharmony_ci+mjsi; 75773af6ab5fSopenharmony_ci+typei; 75783af6ab5fSopenharmony_ci+// @filename: index.mjs 75793af6ab5fSopenharmony_ci+// esm format file 75803af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index.cjs"; 75813af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index.mjs"; 75823af6ab5fSopenharmony_ci+import * as typei from "inner/js/index.js"; 75833af6ab5fSopenharmony_ci+cjsi; 75843af6ab5fSopenharmony_ci+mjsi; 75853af6ab5fSopenharmony_ci+typei; 75863af6ab5fSopenharmony_ci+// @filename: index.cjs 75873af6ab5fSopenharmony_ci+// cjs format file 75883af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index.cjs"; 75893af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index.mjs"; 75903af6ab5fSopenharmony_ci+import * as typei from "inner/js/index.js"; 75913af6ab5fSopenharmony_ci+cjsi; 75923af6ab5fSopenharmony_ci+mjsi; 75933af6ab5fSopenharmony_ci+typei; 75943af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 75953af6ab5fSopenharmony_ci+// cjs format file 75963af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index.cjs"; 75973af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index.mjs"; 75983af6ab5fSopenharmony_ci+import * as type from "inner/js/index.js"; 75993af6ab5fSopenharmony_ci+export { cjs }; 76003af6ab5fSopenharmony_ci+export { mjs }; 76013af6ab5fSopenharmony_ci+export { type }; 76023af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.mts 76033af6ab5fSopenharmony_ci+// esm format file 76043af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index.cjs"; 76053af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index.mjs"; 76063af6ab5fSopenharmony_ci+import * as type from "inner/js/index.js"; 76073af6ab5fSopenharmony_ci+export { cjs }; 76083af6ab5fSopenharmony_ci+export { mjs }; 76093af6ab5fSopenharmony_ci+export { type }; 76103af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.cts 76113af6ab5fSopenharmony_ci+// cjs format file 76123af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index.cjs"; 76133af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index.mjs"; 76143af6ab5fSopenharmony_ci+import * as type from "inner/js/index.js"; 76153af6ab5fSopenharmony_ci+export { cjs }; 76163af6ab5fSopenharmony_ci+export { mjs }; 76173af6ab5fSopenharmony_ci+export { type }; 76183af6ab5fSopenharmony_ci+// @filename: package.json 76193af6ab5fSopenharmony_ci+{ 76203af6ab5fSopenharmony_ci+ "name": "package", 76213af6ab5fSopenharmony_ci+ "private": true, 76223af6ab5fSopenharmony_ci+ "type": "module", 76233af6ab5fSopenharmony_ci+} 76243af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 76253af6ab5fSopenharmony_ci+{ 76263af6ab5fSopenharmony_ci+ "name": "inner", 76273af6ab5fSopenharmony_ci+ "private": true, 76283af6ab5fSopenharmony_ci+ "exports": { 76293af6ab5fSopenharmony_ci+ "./cjs/*.cjs": "./*.cjs", 76303af6ab5fSopenharmony_ci+ "./mjs/*.mjs": "./*.mjs", 76313af6ab5fSopenharmony_ci+ "./js/*.js": "./*.js" 76323af6ab5fSopenharmony_ci+ } 76333af6ab5fSopenharmony_ci+} 76343af6ab5fSopenharmony_ci\ No newline at end of file 76353af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsSynchronousCallErrors.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsSynchronousCallErrors.ts 76363af6ab5fSopenharmony_cinew file mode 100644 76373af6ab5fSopenharmony_ciindex 0000000000..15892edbe3 76383af6ab5fSopenharmony_ci--- /dev/null 76393af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsSynchronousCallErrors.ts 76403af6ab5fSopenharmony_ci@@ -0,0 +1,37 @@ 76413af6ab5fSopenharmony_ci+// @module: node12,nodenext 76423af6ab5fSopenharmony_ci+// @declaration: true 76433af6ab5fSopenharmony_ci+// @allowJs: true 76443af6ab5fSopenharmony_ci+// @checkJs: true 76453af6ab5fSopenharmony_ci+// @outDir: out 76463af6ab5fSopenharmony_ci+// @filename: subfolder/index.js 76473af6ab5fSopenharmony_ci+// cjs format file 76483af6ab5fSopenharmony_ci+import {h} from "../index.js"; 76493af6ab5fSopenharmony_ci+import mod = require("../index.js"); 76503af6ab5fSopenharmony_ci+import {f as _f} from "./index.js"; 76513af6ab5fSopenharmony_ci+import mod2 = require("./index.js"); 76523af6ab5fSopenharmony_ci+export async function f() { 76533af6ab5fSopenharmony_ci+ const mod3 = await import ("../index.js"); 76543af6ab5fSopenharmony_ci+ const mod4 = await import ("./index.js"); 76553af6ab5fSopenharmony_ci+ h(); 76563af6ab5fSopenharmony_ci+} 76573af6ab5fSopenharmony_ci+// @filename: index.js 76583af6ab5fSopenharmony_ci+// esm format file 76593af6ab5fSopenharmony_ci+import {h as _h} from "./index.js"; 76603af6ab5fSopenharmony_ci+import mod = require("./index.js"); 76613af6ab5fSopenharmony_ci+import {f} from "./subfolder/index.js"; 76623af6ab5fSopenharmony_ci+import mod2 = require("./subfolder/index.js"); 76633af6ab5fSopenharmony_ci+export async function h() { 76643af6ab5fSopenharmony_ci+ const mod3 = await import ("./index.js"); 76653af6ab5fSopenharmony_ci+ const mod4 = await import ("./subfolder/index.js"); 76663af6ab5fSopenharmony_ci+ f(); 76673af6ab5fSopenharmony_ci+} 76683af6ab5fSopenharmony_ci+// @filename: package.json 76693af6ab5fSopenharmony_ci+{ 76703af6ab5fSopenharmony_ci+ "name": "package", 76713af6ab5fSopenharmony_ci+ "private": true, 76723af6ab5fSopenharmony_ci+ "type": "module" 76733af6ab5fSopenharmony_ci+} 76743af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 76753af6ab5fSopenharmony_ci+{ 76763af6ab5fSopenharmony_ci+ "type": "commonjs" 76773af6ab5fSopenharmony_ci+} 76783af6ab5fSopenharmony_ci\ No newline at end of file 76793af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/allowJs/nodeModulesAllowJsTopLevelAwait.ts b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsTopLevelAwait.ts 76803af6ab5fSopenharmony_cinew file mode 100644 76813af6ab5fSopenharmony_ciindex 0000000000..872cad71c9 76823af6ab5fSopenharmony_ci--- /dev/null 76833af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/allowJs/nodeModulesAllowJsTopLevelAwait.ts 76843af6ab5fSopenharmony_ci@@ -0,0 +1,25 @@ 76853af6ab5fSopenharmony_ci+// @module: node12,nodenext 76863af6ab5fSopenharmony_ci+// @declaration: true 76873af6ab5fSopenharmony_ci+// @allowJs: true 76883af6ab5fSopenharmony_ci+// @checkJs: true 76893af6ab5fSopenharmony_ci+// @outDir: out 76903af6ab5fSopenharmony_ci+// @filename: subfolder/index.js 76913af6ab5fSopenharmony_ci+// cjs format file 76923af6ab5fSopenharmony_ci+const x = await 1; 76933af6ab5fSopenharmony_ci+export {x}; 76943af6ab5fSopenharmony_ci+for await (const y of []) {} 76953af6ab5fSopenharmony_ci+// @filename: index.js 76963af6ab5fSopenharmony_ci+// esm format file 76973af6ab5fSopenharmony_ci+const x = await 1; 76983af6ab5fSopenharmony_ci+export {x}; 76993af6ab5fSopenharmony_ci+for await (const y of []) {} 77003af6ab5fSopenharmony_ci+// @filename: package.json 77013af6ab5fSopenharmony_ci+{ 77023af6ab5fSopenharmony_ci+ "name": "package", 77033af6ab5fSopenharmony_ci+ "private": true, 77043af6ab5fSopenharmony_ci+ "type": "module" 77053af6ab5fSopenharmony_ci+} 77063af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 77073af6ab5fSopenharmony_ci+{ 77083af6ab5fSopenharmony_ci+ "type": "commonjs" 77093af6ab5fSopenharmony_ci+} 77103af6ab5fSopenharmony_ci\ No newline at end of file 77113af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/legacyNodeModulesExportsSpecifierGenerationConditions.ts b/tests/cases/conformance/node/legacyNodeModulesExportsSpecifierGenerationConditions.ts 77123af6ab5fSopenharmony_cinew file mode 100644 77133af6ab5fSopenharmony_ciindex 0000000000..656465829e 77143af6ab5fSopenharmony_ci--- /dev/null 77153af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/legacyNodeModulesExportsSpecifierGenerationConditions.ts 77163af6ab5fSopenharmony_ci@@ -0,0 +1,33 @@ 77173af6ab5fSopenharmony_ci+// @module: commonjs 77183af6ab5fSopenharmony_ci+// @lib: es2020 77193af6ab5fSopenharmony_ci+// @declaration: true 77203af6ab5fSopenharmony_ci+// @filename: index.ts 77213af6ab5fSopenharmony_ci+export const a = async () => (await import("inner")).x(); 77223af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 77233af6ab5fSopenharmony_ci+export { x } from "./other.js"; 77243af6ab5fSopenharmony_ci+// @filename: node_modules/inner/other.d.ts 77253af6ab5fSopenharmony_ci+import { Thing } from "./private.js" 77263af6ab5fSopenharmony_ci+export const x: () => Thing; 77273af6ab5fSopenharmony_ci+// @filename: node_modules/inner/private.d.ts 77283af6ab5fSopenharmony_ci+export interface Thing {} // not exported in export map, inaccessible under new module modes 77293af6ab5fSopenharmony_ci+// @filename: package.json 77303af6ab5fSopenharmony_ci+{ 77313af6ab5fSopenharmony_ci+ "name": "package", 77323af6ab5fSopenharmony_ci+ "private": true, 77333af6ab5fSopenharmony_ci+ "type": "module", 77343af6ab5fSopenharmony_ci+ "exports": "./index.js" 77353af6ab5fSopenharmony_ci+} 77363af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 77373af6ab5fSopenharmony_ci+{ 77383af6ab5fSopenharmony_ci+ "name": "inner", 77393af6ab5fSopenharmony_ci+ "private": true, 77403af6ab5fSopenharmony_ci+ "type": "module", 77413af6ab5fSopenharmony_ci+ "exports": { 77423af6ab5fSopenharmony_ci+ ".": { 77433af6ab5fSopenharmony_ci+ "default": "./index.js" 77443af6ab5fSopenharmony_ci+ }, 77453af6ab5fSopenharmony_ci+ "./other": { 77463af6ab5fSopenharmony_ci+ "default": "./other.js" 77473af6ab5fSopenharmony_ci+ } 77483af6ab5fSopenharmony_ci+ } 77493af6ab5fSopenharmony_ci+} 77503af6ab5fSopenharmony_ci\ No newline at end of file 77513af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModules1.ts b/tests/cases/conformance/node/nodeModules1.ts 77523af6ab5fSopenharmony_cinew file mode 100644 77533af6ab5fSopenharmony_ciindex 0000000000..698a6efec1 77543af6ab5fSopenharmony_ci--- /dev/null 77553af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModules1.ts 77563af6ab5fSopenharmony_ci@@ -0,0 +1,321 @@ 77573af6ab5fSopenharmony_ci+// @module: node12,nodenext 77583af6ab5fSopenharmony_ci+// @declaration: true 77593af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 77603af6ab5fSopenharmony_ci+// cjs format file 77613af6ab5fSopenharmony_ci+const x = 1; 77623af6ab5fSopenharmony_ci+export {x}; 77633af6ab5fSopenharmony_ci+// @filename: subfolder/index.cts 77643af6ab5fSopenharmony_ci+// cjs format file 77653af6ab5fSopenharmony_ci+const x = 1; 77663af6ab5fSopenharmony_ci+export {x}; 77673af6ab5fSopenharmony_ci+// @filename: subfolder/index.mts 77683af6ab5fSopenharmony_ci+// esm format file 77693af6ab5fSopenharmony_ci+const x = 1; 77703af6ab5fSopenharmony_ci+export {x}; 77713af6ab5fSopenharmony_ci+// @filename: subfolder2/index.ts 77723af6ab5fSopenharmony_ci+// cjs format file 77733af6ab5fSopenharmony_ci+const x = 1; 77743af6ab5fSopenharmony_ci+export {x}; 77753af6ab5fSopenharmony_ci+// @filename: subfolder2/index.cts 77763af6ab5fSopenharmony_ci+// cjs format file 77773af6ab5fSopenharmony_ci+const x = 1; 77783af6ab5fSopenharmony_ci+export {x}; 77793af6ab5fSopenharmony_ci+// @filename: subfolder2/index.mts 77803af6ab5fSopenharmony_ci+// esm format file 77813af6ab5fSopenharmony_ci+const x = 1; 77823af6ab5fSopenharmony_ci+export {x}; 77833af6ab5fSopenharmony_ci+// @filename: subfolder2/another/index.ts 77843af6ab5fSopenharmony_ci+// esm format file 77853af6ab5fSopenharmony_ci+const x = 1; 77863af6ab5fSopenharmony_ci+export {x}; 77873af6ab5fSopenharmony_ci+// @filename: subfolder2/another/index.mts 77883af6ab5fSopenharmony_ci+// esm format file 77893af6ab5fSopenharmony_ci+const x = 1; 77903af6ab5fSopenharmony_ci+export {x}; 77913af6ab5fSopenharmony_ci+// @filename: subfolder2/another/index.cts 77923af6ab5fSopenharmony_ci+// cjs format file 77933af6ab5fSopenharmony_ci+const x = 1; 77943af6ab5fSopenharmony_ci+export {x}; 77953af6ab5fSopenharmony_ci+// @filename: index.mts 77963af6ab5fSopenharmony_ci+import * as m1 from "./index.js"; 77973af6ab5fSopenharmony_ci+import * as m2 from "./index.mjs"; 77983af6ab5fSopenharmony_ci+import * as m3 from "./index.cjs"; 77993af6ab5fSopenharmony_ci+import * as m4 from "./subfolder/index.js"; 78003af6ab5fSopenharmony_ci+import * as m5 from "./subfolder/index.mjs"; 78013af6ab5fSopenharmony_ci+import * as m6 from "./subfolder/index.cjs"; 78023af6ab5fSopenharmony_ci+import * as m7 from "./subfolder2/index.js"; 78033af6ab5fSopenharmony_ci+import * as m8 from "./subfolder2/index.mjs"; 78043af6ab5fSopenharmony_ci+import * as m9 from "./subfolder2/index.cjs"; 78053af6ab5fSopenharmony_ci+import * as m10 from "./subfolder2/another/index.js"; 78063af6ab5fSopenharmony_ci+import * as m11 from "./subfolder2/another/index.mjs"; 78073af6ab5fSopenharmony_ci+import * as m12 from "./subfolder2/another/index.cjs"; 78083af6ab5fSopenharmony_ci+// The next ones should all fail - esm format files have no index resolution or extension resolution 78093af6ab5fSopenharmony_ci+import * as m13 from "./"; 78103af6ab5fSopenharmony_ci+import * as m14 from "./index"; 78113af6ab5fSopenharmony_ci+import * as m15 from "./subfolder"; 78123af6ab5fSopenharmony_ci+import * as m16 from "./subfolder/"; 78133af6ab5fSopenharmony_ci+import * as m17 from "./subfolder/index"; 78143af6ab5fSopenharmony_ci+import * as m18 from "./subfolder2"; 78153af6ab5fSopenharmony_ci+import * as m19 from "./subfolder2/"; 78163af6ab5fSopenharmony_ci+import * as m20 from "./subfolder2/index"; 78173af6ab5fSopenharmony_ci+import * as m21 from "./subfolder2/another"; 78183af6ab5fSopenharmony_ci+import * as m22 from "./subfolder2/another/"; 78193af6ab5fSopenharmony_ci+import * as m23 from "./subfolder2/another/index"; 78203af6ab5fSopenharmony_ci+void m1; 78213af6ab5fSopenharmony_ci+void m2; 78223af6ab5fSopenharmony_ci+void m3; 78233af6ab5fSopenharmony_ci+void m4; 78243af6ab5fSopenharmony_ci+void m5; 78253af6ab5fSopenharmony_ci+void m6; 78263af6ab5fSopenharmony_ci+void m7; 78273af6ab5fSopenharmony_ci+void m8; 78283af6ab5fSopenharmony_ci+void m9; 78293af6ab5fSopenharmony_ci+void m10; 78303af6ab5fSopenharmony_ci+void m11; 78313af6ab5fSopenharmony_ci+void m12; 78323af6ab5fSopenharmony_ci+void m13; 78333af6ab5fSopenharmony_ci+void m14; 78343af6ab5fSopenharmony_ci+void m15; 78353af6ab5fSopenharmony_ci+void m16; 78363af6ab5fSopenharmony_ci+void m17; 78373af6ab5fSopenharmony_ci+void m18; 78383af6ab5fSopenharmony_ci+void m19; 78393af6ab5fSopenharmony_ci+void m20; 78403af6ab5fSopenharmony_ci+void m21; 78413af6ab5fSopenharmony_ci+void m22; 78423af6ab5fSopenharmony_ci+void m23; 78433af6ab5fSopenharmony_ci+ 78443af6ab5fSopenharmony_ci+// These should _mostly_ work - `import = require` always desugars to require calls, which do have extension and index resolution (but can't load anything that resolves to esm!) 78453af6ab5fSopenharmony_ci+import m24 = require("./"); 78463af6ab5fSopenharmony_ci+import m25 = require("./index"); 78473af6ab5fSopenharmony_ci+import m26 = require("./subfolder"); 78483af6ab5fSopenharmony_ci+import m27 = require("./subfolder/"); 78493af6ab5fSopenharmony_ci+import m28 = require("./subfolder/index"); 78503af6ab5fSopenharmony_ci+import m29 = require("./subfolder2"); 78513af6ab5fSopenharmony_ci+import m30 = require("./subfolder2/"); 78523af6ab5fSopenharmony_ci+import m31 = require("./subfolder2/index"); 78533af6ab5fSopenharmony_ci+import m32 = require("./subfolder2/another"); 78543af6ab5fSopenharmony_ci+import m33 = require("./subfolder2/another/"); 78553af6ab5fSopenharmony_ci+import m34 = require("./subfolder2/another/index"); 78563af6ab5fSopenharmony_ci+void m24; 78573af6ab5fSopenharmony_ci+void m25; 78583af6ab5fSopenharmony_ci+void m26; 78593af6ab5fSopenharmony_ci+void m27; 78603af6ab5fSopenharmony_ci+void m28; 78613af6ab5fSopenharmony_ci+void m29; 78623af6ab5fSopenharmony_ci+void m30; 78633af6ab5fSopenharmony_ci+void m31; 78643af6ab5fSopenharmony_ci+void m32; 78653af6ab5fSopenharmony_ci+void m33; 78663af6ab5fSopenharmony_ci+void m34; 78673af6ab5fSopenharmony_ci+ 78683af6ab5fSopenharmony_ci+// These shouldn't work - dynamic `import()` always uses the esm resolver, which does not have extension resolution 78693af6ab5fSopenharmony_ci+const _m35 = import("./"); 78703af6ab5fSopenharmony_ci+const _m36 = import("./index"); 78713af6ab5fSopenharmony_ci+const _m37 = import("./subfolder"); 78723af6ab5fSopenharmony_ci+const _m38 = import("./subfolder/"); 78733af6ab5fSopenharmony_ci+const _m39 = import("./subfolder/index"); 78743af6ab5fSopenharmony_ci+const _m40 = import("./subfolder2"); 78753af6ab5fSopenharmony_ci+const _m41 = import("./subfolder2/"); 78763af6ab5fSopenharmony_ci+const _m42 = import("./subfolder2/index"); 78773af6ab5fSopenharmony_ci+const _m43 = import("./subfolder2/another"); 78783af6ab5fSopenharmony_ci+const _m44 = import("./subfolder2/another/"); 78793af6ab5fSopenharmony_ci+const _m45 = import("./subfolder2/another/index"); 78803af6ab5fSopenharmony_ci+ 78813af6ab5fSopenharmony_ci+// esm format file 78823af6ab5fSopenharmony_ci+const x = 1; 78833af6ab5fSopenharmony_ci+export {x}; 78843af6ab5fSopenharmony_ci+// @filename: index.cts 78853af6ab5fSopenharmony_ci+// ESM-format imports below should issue errors 78863af6ab5fSopenharmony_ci+import * as m1 from "./index.js"; 78873af6ab5fSopenharmony_ci+import * as m2 from "./index.mjs"; 78883af6ab5fSopenharmony_ci+import * as m3 from "./index.cjs"; 78893af6ab5fSopenharmony_ci+import * as m4 from "./subfolder/index.js"; 78903af6ab5fSopenharmony_ci+import * as m5 from "./subfolder/index.mjs"; 78913af6ab5fSopenharmony_ci+import * as m6 from "./subfolder/index.cjs"; 78923af6ab5fSopenharmony_ci+import * as m7 from "./subfolder2/index.js"; 78933af6ab5fSopenharmony_ci+import * as m8 from "./subfolder2/index.mjs"; 78943af6ab5fSopenharmony_ci+import * as m9 from "./subfolder2/index.cjs"; 78953af6ab5fSopenharmony_ci+import * as m10 from "./subfolder2/another/index.js"; 78963af6ab5fSopenharmony_ci+import * as m11 from "./subfolder2/another/index.mjs"; 78973af6ab5fSopenharmony_ci+import * as m12 from "./subfolder2/another/index.cjs"; 78983af6ab5fSopenharmony_ci+// The next ones should _mostly_ work - cjs format files have index resolution and extension resolution (except for those which resolve to an esm format file) 78993af6ab5fSopenharmony_ci+import * as m13 from "./"; 79003af6ab5fSopenharmony_ci+import * as m14 from "./index"; 79013af6ab5fSopenharmony_ci+import * as m15 from "./subfolder"; 79023af6ab5fSopenharmony_ci+import * as m16 from "./subfolder/"; 79033af6ab5fSopenharmony_ci+import * as m17 from "./subfolder/index"; 79043af6ab5fSopenharmony_ci+import * as m18 from "./subfolder2"; 79053af6ab5fSopenharmony_ci+import * as m19 from "./subfolder2/"; 79063af6ab5fSopenharmony_ci+import * as m20 from "./subfolder2/index"; 79073af6ab5fSopenharmony_ci+import * as m21 from "./subfolder2/another"; 79083af6ab5fSopenharmony_ci+import * as m22 from "./subfolder2/another/"; 79093af6ab5fSopenharmony_ci+import * as m23 from "./subfolder2/another/index"; 79103af6ab5fSopenharmony_ci+void m1; 79113af6ab5fSopenharmony_ci+void m2; 79123af6ab5fSopenharmony_ci+void m3; 79133af6ab5fSopenharmony_ci+void m4; 79143af6ab5fSopenharmony_ci+void m5; 79153af6ab5fSopenharmony_ci+void m6; 79163af6ab5fSopenharmony_ci+void m7; 79173af6ab5fSopenharmony_ci+void m8; 79183af6ab5fSopenharmony_ci+void m9; 79193af6ab5fSopenharmony_ci+void m10; 79203af6ab5fSopenharmony_ci+void m11; 79213af6ab5fSopenharmony_ci+void m12; 79223af6ab5fSopenharmony_ci+void m13; 79233af6ab5fSopenharmony_ci+void m14; 79243af6ab5fSopenharmony_ci+void m15; 79253af6ab5fSopenharmony_ci+void m16; 79263af6ab5fSopenharmony_ci+void m17; 79273af6ab5fSopenharmony_ci+void m18; 79283af6ab5fSopenharmony_ci+void m19; 79293af6ab5fSopenharmony_ci+void m20; 79303af6ab5fSopenharmony_ci+void m21; 79313af6ab5fSopenharmony_ci+void m22; 79323af6ab5fSopenharmony_ci+void m23; 79333af6ab5fSopenharmony_ci+ 79343af6ab5fSopenharmony_ci+// These should _mostly_ work - `import = require` always desugars to require calls, which do have extension and index resolution (but can't load anything that resolves to esm!) 79353af6ab5fSopenharmony_ci+import m24 = require("./"); 79363af6ab5fSopenharmony_ci+import m25 = require("./index"); 79373af6ab5fSopenharmony_ci+import m26 = require("./subfolder"); 79383af6ab5fSopenharmony_ci+import m27 = require("./subfolder/"); 79393af6ab5fSopenharmony_ci+import m28 = require("./subfolder/index"); 79403af6ab5fSopenharmony_ci+import m29 = require("./subfolder2"); 79413af6ab5fSopenharmony_ci+import m30 = require("./subfolder2/"); 79423af6ab5fSopenharmony_ci+import m31 = require("./subfolder2/index"); 79433af6ab5fSopenharmony_ci+import m32 = require("./subfolder2/another"); 79443af6ab5fSopenharmony_ci+import m33 = require("./subfolder2/another/"); 79453af6ab5fSopenharmony_ci+import m34 = require("./subfolder2/another/index"); 79463af6ab5fSopenharmony_ci+void m24; 79473af6ab5fSopenharmony_ci+void m25; 79483af6ab5fSopenharmony_ci+void m26; 79493af6ab5fSopenharmony_ci+void m27; 79503af6ab5fSopenharmony_ci+void m28; 79513af6ab5fSopenharmony_ci+void m29; 79523af6ab5fSopenharmony_ci+void m30; 79533af6ab5fSopenharmony_ci+void m31; 79543af6ab5fSopenharmony_ci+void m32; 79553af6ab5fSopenharmony_ci+void m33; 79563af6ab5fSopenharmony_ci+void m34; 79573af6ab5fSopenharmony_ci+ 79583af6ab5fSopenharmony_ci+// These shouldn't work - dynamic `import()` always uses the esm resolver, which does not have extension resolution 79593af6ab5fSopenharmony_ci+const _m35 = import("./"); 79603af6ab5fSopenharmony_ci+const _m36 = import("./index"); 79613af6ab5fSopenharmony_ci+const _m37 = import("./subfolder"); 79623af6ab5fSopenharmony_ci+const _m38 = import("./subfolder/"); 79633af6ab5fSopenharmony_ci+const _m39 = import("./subfolder/index"); 79643af6ab5fSopenharmony_ci+const _m40 = import("./subfolder2"); 79653af6ab5fSopenharmony_ci+const _m41 = import("./subfolder2/"); 79663af6ab5fSopenharmony_ci+const _m42 = import("./subfolder2/index"); 79673af6ab5fSopenharmony_ci+const _m43 = import("./subfolder2/another"); 79683af6ab5fSopenharmony_ci+const _m44 = import("./subfolder2/another/"); 79693af6ab5fSopenharmony_ci+const _m45 = import("./subfolder2/another/index"); 79703af6ab5fSopenharmony_ci+// cjs format file 79713af6ab5fSopenharmony_ci+const x = 1; 79723af6ab5fSopenharmony_ci+export {x}; 79733af6ab5fSopenharmony_ci+// @filename: index.ts 79743af6ab5fSopenharmony_ci+import * as m1 from "./index.js"; 79753af6ab5fSopenharmony_ci+import * as m2 from "./index.mjs"; 79763af6ab5fSopenharmony_ci+import * as m3 from "./index.cjs"; 79773af6ab5fSopenharmony_ci+import * as m4 from "./subfolder/index.js"; 79783af6ab5fSopenharmony_ci+import * as m5 from "./subfolder/index.mjs"; 79793af6ab5fSopenharmony_ci+import * as m6 from "./subfolder/index.cjs"; 79803af6ab5fSopenharmony_ci+import * as m7 from "./subfolder2/index.js"; 79813af6ab5fSopenharmony_ci+import * as m8 from "./subfolder2/index.mjs"; 79823af6ab5fSopenharmony_ci+import * as m9 from "./subfolder2/index.cjs"; 79833af6ab5fSopenharmony_ci+import * as m10 from "./subfolder2/another/index.js"; 79843af6ab5fSopenharmony_ci+import * as m11 from "./subfolder2/another/index.mjs"; 79853af6ab5fSopenharmony_ci+import * as m12 from "./subfolder2/another/index.cjs"; 79863af6ab5fSopenharmony_ci+// The next ones shouldn't all work - esm format files have no index resolution or extension resolution 79873af6ab5fSopenharmony_ci+import * as m13 from "./"; 79883af6ab5fSopenharmony_ci+import * as m14 from "./index"; 79893af6ab5fSopenharmony_ci+import * as m15 from "./subfolder"; 79903af6ab5fSopenharmony_ci+import * as m16 from "./subfolder/"; 79913af6ab5fSopenharmony_ci+import * as m17 from "./subfolder/index"; 79923af6ab5fSopenharmony_ci+import * as m18 from "./subfolder2"; 79933af6ab5fSopenharmony_ci+import * as m19 from "./subfolder2/"; 79943af6ab5fSopenharmony_ci+import * as m20 from "./subfolder2/index"; 79953af6ab5fSopenharmony_ci+import * as m21 from "./subfolder2/another"; 79963af6ab5fSopenharmony_ci+import * as m22 from "./subfolder2/another/"; 79973af6ab5fSopenharmony_ci+import * as m23 from "./subfolder2/another/index"; 79983af6ab5fSopenharmony_ci+void m1; 79993af6ab5fSopenharmony_ci+void m2; 80003af6ab5fSopenharmony_ci+void m3; 80013af6ab5fSopenharmony_ci+void m4; 80023af6ab5fSopenharmony_ci+void m5; 80033af6ab5fSopenharmony_ci+void m6; 80043af6ab5fSopenharmony_ci+void m7; 80053af6ab5fSopenharmony_ci+void m8; 80063af6ab5fSopenharmony_ci+void m9; 80073af6ab5fSopenharmony_ci+void m10; 80083af6ab5fSopenharmony_ci+void m11; 80093af6ab5fSopenharmony_ci+void m12; 80103af6ab5fSopenharmony_ci+void m13; 80113af6ab5fSopenharmony_ci+void m14; 80123af6ab5fSopenharmony_ci+void m15; 80133af6ab5fSopenharmony_ci+void m16; 80143af6ab5fSopenharmony_ci+void m17; 80153af6ab5fSopenharmony_ci+void m18; 80163af6ab5fSopenharmony_ci+void m19; 80173af6ab5fSopenharmony_ci+void m20; 80183af6ab5fSopenharmony_ci+void m21; 80193af6ab5fSopenharmony_ci+void m22; 80203af6ab5fSopenharmony_ci+void m23; 80213af6ab5fSopenharmony_ci+ 80223af6ab5fSopenharmony_ci+// These should _mostly_ work - `import = require` always desugars to require calls, which do have extension and index resolution (but can't load anything that resolves to esm!) 80233af6ab5fSopenharmony_ci+import m24 = require("./"); 80243af6ab5fSopenharmony_ci+import m25 = require("./index"); 80253af6ab5fSopenharmony_ci+import m26 = require("./subfolder"); 80263af6ab5fSopenharmony_ci+import m27 = require("./subfolder/"); 80273af6ab5fSopenharmony_ci+import m28 = require("./subfolder/index"); 80283af6ab5fSopenharmony_ci+import m29 = require("./subfolder2"); 80293af6ab5fSopenharmony_ci+import m30 = require("./subfolder2/"); 80303af6ab5fSopenharmony_ci+import m31 = require("./subfolder2/index"); 80313af6ab5fSopenharmony_ci+import m32 = require("./subfolder2/another"); 80323af6ab5fSopenharmony_ci+import m33 = require("./subfolder2/another/"); 80333af6ab5fSopenharmony_ci+import m34 = require("./subfolder2/another/index"); 80343af6ab5fSopenharmony_ci+void m24; 80353af6ab5fSopenharmony_ci+void m25; 80363af6ab5fSopenharmony_ci+void m26; 80373af6ab5fSopenharmony_ci+void m27; 80383af6ab5fSopenharmony_ci+void m28; 80393af6ab5fSopenharmony_ci+void m29; 80403af6ab5fSopenharmony_ci+void m30; 80413af6ab5fSopenharmony_ci+void m31; 80423af6ab5fSopenharmony_ci+void m32; 80433af6ab5fSopenharmony_ci+void m33; 80443af6ab5fSopenharmony_ci+void m34; 80453af6ab5fSopenharmony_ci+ 80463af6ab5fSopenharmony_ci+// These shouldn't work - dynamic `import()` always uses the esm resolver, which does not have extension resolution 80473af6ab5fSopenharmony_ci+const _m35 = import("./"); 80483af6ab5fSopenharmony_ci+const _m36 = import("./index"); 80493af6ab5fSopenharmony_ci+const _m37 = import("./subfolder"); 80503af6ab5fSopenharmony_ci+const _m38 = import("./subfolder/"); 80513af6ab5fSopenharmony_ci+const _m39 = import("./subfolder/index"); 80523af6ab5fSopenharmony_ci+const _m40 = import("./subfolder2"); 80533af6ab5fSopenharmony_ci+const _m41 = import("./subfolder2/"); 80543af6ab5fSopenharmony_ci+const _m42 = import("./subfolder2/index"); 80553af6ab5fSopenharmony_ci+const _m43 = import("./subfolder2/another"); 80563af6ab5fSopenharmony_ci+const _m44 = import("./subfolder2/another/"); 80573af6ab5fSopenharmony_ci+const _m45 = import("./subfolder2/another/index"); 80583af6ab5fSopenharmony_ci+// esm format file 80593af6ab5fSopenharmony_ci+const x = 1; 80603af6ab5fSopenharmony_ci+export {x}; 80613af6ab5fSopenharmony_ci+// @filename: package.json 80623af6ab5fSopenharmony_ci+{ 80633af6ab5fSopenharmony_ci+ "name": "package", 80643af6ab5fSopenharmony_ci+ "private": true, 80653af6ab5fSopenharmony_ci+ "type": "module" 80663af6ab5fSopenharmony_ci+} 80673af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 80683af6ab5fSopenharmony_ci+{ 80693af6ab5fSopenharmony_ci+ "type": "commonjs" 80703af6ab5fSopenharmony_ci+} 80713af6ab5fSopenharmony_ci+// @filename: subfolder2/package.json 80723af6ab5fSopenharmony_ci+{ 80733af6ab5fSopenharmony_ci+} 80743af6ab5fSopenharmony_ci+// @filename: subfolder2/another/package.json 80753af6ab5fSopenharmony_ci+{ 80763af6ab5fSopenharmony_ci+ "type": "module" 80773af6ab5fSopenharmony_ci+} 80783af6ab5fSopenharmony_ci\ No newline at end of file 80793af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesCjsFormatFileAlwaysHasDefault.ts b/tests/cases/conformance/node/nodeModulesCjsFormatFileAlwaysHasDefault.ts 80803af6ab5fSopenharmony_cinew file mode 100644 80813af6ab5fSopenharmony_ciindex 0000000000..06c6320d77 80823af6ab5fSopenharmony_ci--- /dev/null 80833af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesCjsFormatFileAlwaysHasDefault.ts 80843af6ab5fSopenharmony_ci@@ -0,0 +1,19 @@ 80853af6ab5fSopenharmony_ci+// @module: node12,nodenext 80863af6ab5fSopenharmony_ci+// @declaration: true 80873af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 80883af6ab5fSopenharmony_ci+// cjs format file 80893af6ab5fSopenharmony_ci+export const a = 1; 80903af6ab5fSopenharmony_ci+// @filename: index.ts 80913af6ab5fSopenharmony_ci+// esm format file 80923af6ab5fSopenharmony_ci+import mod from "./subfolder/index.js"; 80933af6ab5fSopenharmony_ci+mod; 80943af6ab5fSopenharmony_ci+// @filename: package.json 80953af6ab5fSopenharmony_ci+{ 80963af6ab5fSopenharmony_ci+ "name": "package", 80973af6ab5fSopenharmony_ci+ "private": true, 80983af6ab5fSopenharmony_ci+ "type": "module" 80993af6ab5fSopenharmony_ci+} 81003af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 81013af6ab5fSopenharmony_ci+{ 81023af6ab5fSopenharmony_ci+ "type": "commonjs" 81033af6ab5fSopenharmony_ci+} 81043af6ab5fSopenharmony_ci\ No newline at end of file 81053af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesConditionalPackageExports.ts b/tests/cases/conformance/node/nodeModulesConditionalPackageExports.ts 81063af6ab5fSopenharmony_cinew file mode 100644 81073af6ab5fSopenharmony_ciindex 0000000000..07bf9d9724 81083af6ab5fSopenharmony_ci--- /dev/null 81093af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesConditionalPackageExports.ts 81103af6ab5fSopenharmony_ci@@ -0,0 +1,124 @@ 81113af6ab5fSopenharmony_ci+// @module: node12,nodenext 81123af6ab5fSopenharmony_ci+// @declaration: true 81133af6ab5fSopenharmony_ci+// @outDir: out 81143af6ab5fSopenharmony_ci+// @filename: index.ts 81153af6ab5fSopenharmony_ci+// esm format file 81163af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 81173af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 81183af6ab5fSopenharmony_ci+import * as type from "package"; 81193af6ab5fSopenharmony_ci+cjs; 81203af6ab5fSopenharmony_ci+mjs; 81213af6ab5fSopenharmony_ci+type; 81223af6ab5fSopenharmony_ci+import * as cjsi from "inner/a"; 81233af6ab5fSopenharmony_ci+import * as mjsi from "inner/b"; 81243af6ab5fSopenharmony_ci+import * as typei from "inner"; 81253af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 81263af6ab5fSopenharmony_ci+cjsi.mjsSource; 81273af6ab5fSopenharmony_ci+mjsi.mjsSource; 81283af6ab5fSopenharmony_ci+typei.mjsSource; 81293af6ab5fSopenharmony_ci+ts.mjsSource; 81303af6ab5fSopenharmony_ci+// @filename: index.mts 81313af6ab5fSopenharmony_ci+// esm format file 81323af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 81333af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 81343af6ab5fSopenharmony_ci+import * as type from "package"; 81353af6ab5fSopenharmony_ci+cjs; 81363af6ab5fSopenharmony_ci+mjs; 81373af6ab5fSopenharmony_ci+type; 81383af6ab5fSopenharmony_ci+import * as cjsi from "inner/a"; 81393af6ab5fSopenharmony_ci+import * as mjsi from "inner/b"; 81403af6ab5fSopenharmony_ci+import * as typei from "inner"; 81413af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 81423af6ab5fSopenharmony_ci+cjsi.mjsSource; 81433af6ab5fSopenharmony_ci+mjsi.mjsSource; 81443af6ab5fSopenharmony_ci+typei.mjsSource; 81453af6ab5fSopenharmony_ci+ts.mjsSource; 81463af6ab5fSopenharmony_ci+// @filename: index.cts 81473af6ab5fSopenharmony_ci+// cjs format file 81483af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 81493af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 81503af6ab5fSopenharmony_ci+import * as type from "package"; 81513af6ab5fSopenharmony_ci+cjs; 81523af6ab5fSopenharmony_ci+mjs; 81533af6ab5fSopenharmony_ci+type; 81543af6ab5fSopenharmony_ci+import * as cjsi from "inner/a"; 81553af6ab5fSopenharmony_ci+import * as mjsi from "inner/b"; 81563af6ab5fSopenharmony_ci+import * as typei from "inner"; 81573af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 81583af6ab5fSopenharmony_ci+cjsi.cjsSource; 81593af6ab5fSopenharmony_ci+mjsi.cjsSource; 81603af6ab5fSopenharmony_ci+typei.implicitCjsSource; 81613af6ab5fSopenharmony_ci+ts.cjsSource; 81623af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 81633af6ab5fSopenharmony_ci+// cjs format file 81643af6ab5fSopenharmony_ci+import * as cjs from "inner/a"; 81653af6ab5fSopenharmony_ci+import * as mjs from "inner/b"; 81663af6ab5fSopenharmony_ci+import * as type from "inner"; 81673af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 81683af6ab5fSopenharmony_ci+export { cjs }; 81693af6ab5fSopenharmony_ci+export { mjs }; 81703af6ab5fSopenharmony_ci+export { type }; 81713af6ab5fSopenharmony_ci+export { ts }; 81723af6ab5fSopenharmony_ci+export const implicitCjsSource = true; 81733af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.mts 81743af6ab5fSopenharmony_ci+// esm format file 81753af6ab5fSopenharmony_ci+import * as cjs from "inner/a"; 81763af6ab5fSopenharmony_ci+import * as mjs from "inner/b"; 81773af6ab5fSopenharmony_ci+import * as type from "inner"; 81783af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 81793af6ab5fSopenharmony_ci+export { cjs }; 81803af6ab5fSopenharmony_ci+export { mjs }; 81813af6ab5fSopenharmony_ci+export { type }; 81823af6ab5fSopenharmony_ci+export { ts }; 81833af6ab5fSopenharmony_ci+export const mjsSource = true; 81843af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.cts 81853af6ab5fSopenharmony_ci+// cjs format file 81863af6ab5fSopenharmony_ci+import * as cjs from "inner/a"; 81873af6ab5fSopenharmony_ci+import * as mjs from "inner/b"; 81883af6ab5fSopenharmony_ci+import * as type from "inner"; 81893af6ab5fSopenharmony_ci+import * as ts from "inner/types"; 81903af6ab5fSopenharmony_ci+export { cjs }; 81913af6ab5fSopenharmony_ci+export { mjs }; 81923af6ab5fSopenharmony_ci+export { type }; 81933af6ab5fSopenharmony_ci+export { ts }; 81943af6ab5fSopenharmony_ci+export const cjsSource = true; 81953af6ab5fSopenharmony_ci+// @filename: package.json 81963af6ab5fSopenharmony_ci+{ 81973af6ab5fSopenharmony_ci+ "name": "package", 81983af6ab5fSopenharmony_ci+ "private": true, 81993af6ab5fSopenharmony_ci+ "type": "module", 82003af6ab5fSopenharmony_ci+ "exports": { 82013af6ab5fSopenharmony_ci+ "./cjs": "./index.cjs", 82023af6ab5fSopenharmony_ci+ "./mjs": "./index.mjs", 82033af6ab5fSopenharmony_ci+ ".": "./index.js" 82043af6ab5fSopenharmony_ci+ } 82053af6ab5fSopenharmony_ci+} 82063af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 82073af6ab5fSopenharmony_ci+{ 82083af6ab5fSopenharmony_ci+ "name": "inner", 82093af6ab5fSopenharmony_ci+ "private": true, 82103af6ab5fSopenharmony_ci+ "exports": { 82113af6ab5fSopenharmony_ci+ "./a": { 82123af6ab5fSopenharmony_ci+ "require": "./index.cjs", 82133af6ab5fSopenharmony_ci+ "node": "./index.mjs" 82143af6ab5fSopenharmony_ci+ }, 82153af6ab5fSopenharmony_ci+ "./b": { 82163af6ab5fSopenharmony_ci+ "import": "./index.mjs", 82173af6ab5fSopenharmony_ci+ "node": "./index.cjs" 82183af6ab5fSopenharmony_ci+ }, 82193af6ab5fSopenharmony_ci+ ".": { 82203af6ab5fSopenharmony_ci+ "import": "./index.mjs", 82213af6ab5fSopenharmony_ci+ "node": "./index.js" 82223af6ab5fSopenharmony_ci+ }, 82233af6ab5fSopenharmony_ci+ "./types": { 82243af6ab5fSopenharmony_ci+ "types": { 82253af6ab5fSopenharmony_ci+ "import": "./index.d.mts", 82263af6ab5fSopenharmony_ci+ "require": "./index.d.cts", 82273af6ab5fSopenharmony_ci+ }, 82283af6ab5fSopenharmony_ci+ "node": { 82293af6ab5fSopenharmony_ci+ "import": "./index.mjs", 82303af6ab5fSopenharmony_ci+ "require": "./index.cjs" 82313af6ab5fSopenharmony_ci+ } 82323af6ab5fSopenharmony_ci+ } 82333af6ab5fSopenharmony_ci+ } 82343af6ab5fSopenharmony_ci+} 82353af6ab5fSopenharmony_ci\ No newline at end of file 82363af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesDeclarationEmitDynamicImportWithPackageExports.ts b/tests/cases/conformance/node/nodeModulesDeclarationEmitDynamicImportWithPackageExports.ts 82373af6ab5fSopenharmony_cinew file mode 100644 82383af6ab5fSopenharmony_ciindex 0000000000..3f8bae7ffc 82393af6ab5fSopenharmony_ci--- /dev/null 82403af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesDeclarationEmitDynamicImportWithPackageExports.ts 82413af6ab5fSopenharmony_ci@@ -0,0 +1,71 @@ 82423af6ab5fSopenharmony_ci+// @module: nodenext 82433af6ab5fSopenharmony_ci+// @declaration: true 82443af6ab5fSopenharmony_ci+// @filename: index.ts 82453af6ab5fSopenharmony_ci+// esm format file 82463af6ab5fSopenharmony_ci+export {}; 82473af6ab5fSopenharmony_ci+// @filename: index.mts 82483af6ab5fSopenharmony_ci+// esm format file 82493af6ab5fSopenharmony_ci+export {}; 82503af6ab5fSopenharmony_ci+// @filename: index.cts 82513af6ab5fSopenharmony_ci+// cjs format file 82523af6ab5fSopenharmony_ci+export {}; 82533af6ab5fSopenharmony_ci+// @filename: other.ts 82543af6ab5fSopenharmony_ci+// esm format file 82553af6ab5fSopenharmony_ci+export const a = await import("package/cjs"); 82563af6ab5fSopenharmony_ci+export const b = await import("package/mjs"); 82573af6ab5fSopenharmony_ci+export const c = await import("package"); 82583af6ab5fSopenharmony_ci+export const f = await import("inner"); 82593af6ab5fSopenharmony_ci+// @filename: other2.ts 82603af6ab5fSopenharmony_ci+// esm format file 82613af6ab5fSopenharmony_ci+export const d = await import("inner/cjs"); 82623af6ab5fSopenharmony_ci+export const e = await import("inner/mjs"); 82633af6ab5fSopenharmony_ci+// @filename: other.mts 82643af6ab5fSopenharmony_ci+// esm format file 82653af6ab5fSopenharmony_ci+export const a = await import("package/cjs"); 82663af6ab5fSopenharmony_ci+export const b = await import("package/mjs"); 82673af6ab5fSopenharmony_ci+export const c = await import("package"); 82683af6ab5fSopenharmony_ci+export const f = await import("inner"); 82693af6ab5fSopenharmony_ci+// @filename: other2.mts 82703af6ab5fSopenharmony_ci+// esm format file 82713af6ab5fSopenharmony_ci+export const d = await import("inner/cjs"); 82723af6ab5fSopenharmony_ci+export const e = await import("inner/mjs"); 82733af6ab5fSopenharmony_ci+// @filename: other.cts 82743af6ab5fSopenharmony_ci+// cjs format file, no TLA 82753af6ab5fSopenharmony_ci+export const a = import("package/cjs"); 82763af6ab5fSopenharmony_ci+export const b = import("package/mjs"); 82773af6ab5fSopenharmony_ci+export const c = import("package"); 82783af6ab5fSopenharmony_ci+export const f = import("inner"); 82793af6ab5fSopenharmony_ci+// @filename: other2.cts 82803af6ab5fSopenharmony_ci+// cjs format file, no TLA 82813af6ab5fSopenharmony_ci+export const d = import("inner/cjs"); 82823af6ab5fSopenharmony_ci+export const e = import("inner/mjs"); 82833af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 82843af6ab5fSopenharmony_ci+// cjs format file 82853af6ab5fSopenharmony_ci+export const cjsMain = true; 82863af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.mts 82873af6ab5fSopenharmony_ci+// esm format file 82883af6ab5fSopenharmony_ci+export const esm = true; 82893af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.cts 82903af6ab5fSopenharmony_ci+// cjs format file 82913af6ab5fSopenharmony_ci+export const cjsNonmain = true; 82923af6ab5fSopenharmony_ci+// @filename: package.json 82933af6ab5fSopenharmony_ci+{ 82943af6ab5fSopenharmony_ci+ "name": "package", 82953af6ab5fSopenharmony_ci+ "private": true, 82963af6ab5fSopenharmony_ci+ "type": "module", 82973af6ab5fSopenharmony_ci+ "exports": { 82983af6ab5fSopenharmony_ci+ "./cjs": "./index.cjs", 82993af6ab5fSopenharmony_ci+ "./mjs": "./index.mjs", 83003af6ab5fSopenharmony_ci+ ".": "./index.js" 83013af6ab5fSopenharmony_ci+ } 83023af6ab5fSopenharmony_ci+} 83033af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 83043af6ab5fSopenharmony_ci+{ 83053af6ab5fSopenharmony_ci+ "name": "inner", 83063af6ab5fSopenharmony_ci+ "private": true, 83073af6ab5fSopenharmony_ci+ "exports": { 83083af6ab5fSopenharmony_ci+ "./cjs": "./index.cjs", 83093af6ab5fSopenharmony_ci+ "./mjs": "./index.mjs", 83103af6ab5fSopenharmony_ci+ ".": "./index.js" 83113af6ab5fSopenharmony_ci+ } 83123af6ab5fSopenharmony_ci+} 83133af6ab5fSopenharmony_ci\ No newline at end of file 83143af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesDeclarationEmitWithPackageExports.ts b/tests/cases/conformance/node/nodeModulesDeclarationEmitWithPackageExports.ts 83153af6ab5fSopenharmony_cinew file mode 100644 83163af6ab5fSopenharmony_ciindex 0000000000..2599ff429f 83173af6ab5fSopenharmony_ci--- /dev/null 83183af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesDeclarationEmitWithPackageExports.ts 83193af6ab5fSopenharmony_ci@@ -0,0 +1,93 @@ 83203af6ab5fSopenharmony_ci+// @module: node12,nodenext 83213af6ab5fSopenharmony_ci+// @declaration: true 83223af6ab5fSopenharmony_ci+// @outDir: out 83233af6ab5fSopenharmony_ci+// @filename: index.ts 83243af6ab5fSopenharmony_ci+// esm format file 83253af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 83263af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 83273af6ab5fSopenharmony_ci+import * as type from "package"; 83283af6ab5fSopenharmony_ci+export const a = cjs; 83293af6ab5fSopenharmony_ci+export const b = mjs; 83303af6ab5fSopenharmony_ci+export const c = type; 83313af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs"; 83323af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs"; 83333af6ab5fSopenharmony_ci+import * as typei from "inner"; 83343af6ab5fSopenharmony_ci+export const d = cjsi; 83353af6ab5fSopenharmony_ci+export const e = mjsi; 83363af6ab5fSopenharmony_ci+export const f = typei; 83373af6ab5fSopenharmony_ci+// @filename: index.mts 83383af6ab5fSopenharmony_ci+// esm format file 83393af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 83403af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 83413af6ab5fSopenharmony_ci+import * as type from "package"; 83423af6ab5fSopenharmony_ci+export const a = cjs; 83433af6ab5fSopenharmony_ci+export const b = mjs; 83443af6ab5fSopenharmony_ci+export const c = type; 83453af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs"; 83463af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs"; 83473af6ab5fSopenharmony_ci+import * as typei from "inner"; 83483af6ab5fSopenharmony_ci+export const d = cjsi; 83493af6ab5fSopenharmony_ci+export const e = mjsi; 83503af6ab5fSopenharmony_ci+export const f = typei; 83513af6ab5fSopenharmony_ci+// @filename: index.cts 83523af6ab5fSopenharmony_ci+// cjs format file 83533af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 83543af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 83553af6ab5fSopenharmony_ci+import * as type from "package"; 83563af6ab5fSopenharmony_ci+export const a = cjs; 83573af6ab5fSopenharmony_ci+export const b = mjs; 83583af6ab5fSopenharmony_ci+export const c = type; 83593af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs"; 83603af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs"; 83613af6ab5fSopenharmony_ci+import * as typei from "inner"; 83623af6ab5fSopenharmony_ci+export const d = cjsi; 83633af6ab5fSopenharmony_ci+export const e = mjsi; 83643af6ab5fSopenharmony_ci+export const f = typei; 83653af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 83663af6ab5fSopenharmony_ci+// cjs format file 83673af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs"; 83683af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs"; 83693af6ab5fSopenharmony_ci+import * as type from "inner"; 83703af6ab5fSopenharmony_ci+cjs; 83713af6ab5fSopenharmony_ci+mjs; 83723af6ab5fSopenharmony_ci+type; 83733af6ab5fSopenharmony_ci+export const cjsMain = true; 83743af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.mts 83753af6ab5fSopenharmony_ci+// esm format file 83763af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs"; 83773af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs"; 83783af6ab5fSopenharmony_ci+import * as type from "inner"; 83793af6ab5fSopenharmony_ci+cjs; 83803af6ab5fSopenharmony_ci+mjs; 83813af6ab5fSopenharmony_ci+type; 83823af6ab5fSopenharmony_ci+export const esm = true; 83833af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.cts 83843af6ab5fSopenharmony_ci+// cjs format file 83853af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs"; 83863af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs"; 83873af6ab5fSopenharmony_ci+import * as type from "inner"; 83883af6ab5fSopenharmony_ci+cjs; 83893af6ab5fSopenharmony_ci+mjs; 83903af6ab5fSopenharmony_ci+type; 83913af6ab5fSopenharmony_ci+export const cjsNonmain = true; 83923af6ab5fSopenharmony_ci+// @filename: package.json 83933af6ab5fSopenharmony_ci+{ 83943af6ab5fSopenharmony_ci+ "name": "package", 83953af6ab5fSopenharmony_ci+ "private": true, 83963af6ab5fSopenharmony_ci+ "type": "module", 83973af6ab5fSopenharmony_ci+ "exports": { 83983af6ab5fSopenharmony_ci+ "./cjs": "./index.cjs", 83993af6ab5fSopenharmony_ci+ "./mjs": "./index.mjs", 84003af6ab5fSopenharmony_ci+ ".": "./index.js" 84013af6ab5fSopenharmony_ci+ } 84023af6ab5fSopenharmony_ci+} 84033af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 84043af6ab5fSopenharmony_ci+{ 84053af6ab5fSopenharmony_ci+ "name": "inner", 84063af6ab5fSopenharmony_ci+ "private": true, 84073af6ab5fSopenharmony_ci+ "exports": { 84083af6ab5fSopenharmony_ci+ "./cjs": "./index.cjs", 84093af6ab5fSopenharmony_ci+ "./mjs": "./index.mjs", 84103af6ab5fSopenharmony_ci+ ".": "./index.js" 84113af6ab5fSopenharmony_ci+ } 84123af6ab5fSopenharmony_ci+} 84133af6ab5fSopenharmony_ci\ No newline at end of file 84143af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesDynamicImport.ts b/tests/cases/conformance/node/nodeModulesDynamicImport.ts 84153af6ab5fSopenharmony_cinew file mode 100644 84163af6ab5fSopenharmony_ciindex 0000000000..46b317ca52 84173af6ab5fSopenharmony_ci--- /dev/null 84183af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesDynamicImport.ts 84193af6ab5fSopenharmony_ci@@ -0,0 +1,24 @@ 84203af6ab5fSopenharmony_ci+// @module: node12,nodenext 84213af6ab5fSopenharmony_ci+// @declaration: true 84223af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 84233af6ab5fSopenharmony_ci+// cjs format file 84243af6ab5fSopenharmony_ci+export async function main() { 84253af6ab5fSopenharmony_ci+ const { readFile } = await import("fs"); 84263af6ab5fSopenharmony_ci+} 84273af6ab5fSopenharmony_ci+// @filename: index.ts 84283af6ab5fSopenharmony_ci+// esm format file 84293af6ab5fSopenharmony_ci+export async function main() { 84303af6ab5fSopenharmony_ci+ const { readFile } = await import("fs"); 84313af6ab5fSopenharmony_ci+} 84323af6ab5fSopenharmony_ci+// @filename: package.json 84333af6ab5fSopenharmony_ci+{ 84343af6ab5fSopenharmony_ci+ "name": "package", 84353af6ab5fSopenharmony_ci+ "private": true, 84363af6ab5fSopenharmony_ci+ "type": "module" 84373af6ab5fSopenharmony_ci+} 84383af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 84393af6ab5fSopenharmony_ci+{ 84403af6ab5fSopenharmony_ci+ "type": "commonjs" 84413af6ab5fSopenharmony_ci+} 84423af6ab5fSopenharmony_ci+// @filename: types.d.ts 84433af6ab5fSopenharmony_ci+declare module "fs"; 84443af6ab5fSopenharmony_ci\ No newline at end of file 84453af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesExportAssignments.ts b/tests/cases/conformance/node/nodeModulesExportAssignments.ts 84463af6ab5fSopenharmony_cinew file mode 100644 84473af6ab5fSopenharmony_ciindex 0000000000..7cbcd200d9 84483af6ab5fSopenharmony_ci--- /dev/null 84493af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesExportAssignments.ts 84503af6ab5fSopenharmony_ci@@ -0,0 +1,20 @@ 84513af6ab5fSopenharmony_ci+// @module: node12,nodenext 84523af6ab5fSopenharmony_ci+// @declaration: true 84533af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 84543af6ab5fSopenharmony_ci+// cjs format file 84553af6ab5fSopenharmony_ci+const a = {}; 84563af6ab5fSopenharmony_ci+export = a; 84573af6ab5fSopenharmony_ci+// @filename: index.ts 84583af6ab5fSopenharmony_ci+// esm format file 84593af6ab5fSopenharmony_ci+const a = {}; 84603af6ab5fSopenharmony_ci+export = a; 84613af6ab5fSopenharmony_ci+// @filename: package.json 84623af6ab5fSopenharmony_ci+{ 84633af6ab5fSopenharmony_ci+ "name": "package", 84643af6ab5fSopenharmony_ci+ "private": true, 84653af6ab5fSopenharmony_ci+ "type": "module" 84663af6ab5fSopenharmony_ci+} 84673af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 84683af6ab5fSopenharmony_ci+{ 84693af6ab5fSopenharmony_ci+ "type": "commonjs" 84703af6ab5fSopenharmony_ci+} 84713af6ab5fSopenharmony_ci\ No newline at end of file 84723af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesExportsBlocksSpecifierResolution.ts b/tests/cases/conformance/node/nodeModulesExportsBlocksSpecifierResolution.ts 84733af6ab5fSopenharmony_cinew file mode 100644 84743af6ab5fSopenharmony_ciindex 0000000000..ffc5adf8e0 84753af6ab5fSopenharmony_ci--- /dev/null 84763af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesExportsBlocksSpecifierResolution.ts 84773af6ab5fSopenharmony_ci@@ -0,0 +1,27 @@ 84783af6ab5fSopenharmony_ci+// @module: node12,nodenext 84793af6ab5fSopenharmony_ci+// @declaration: true 84803af6ab5fSopenharmony_ci+// @filename: index.ts 84813af6ab5fSopenharmony_ci+// esm format file 84823af6ab5fSopenharmony_ci+import { Thing } from "inner/other"; 84833af6ab5fSopenharmony_ci+export const a = (await import("inner")).x(); 84843af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 84853af6ab5fSopenharmony_ci+// esm format file 84863af6ab5fSopenharmony_ci+export { x } from "./other.js"; 84873af6ab5fSopenharmony_ci+// @filename: node_modules/inner/other.d.ts 84883af6ab5fSopenharmony_ci+// esm format file 84893af6ab5fSopenharmony_ci+export interface Thing {} 84903af6ab5fSopenharmony_ci+export const x: () => Thing; 84913af6ab5fSopenharmony_ci+// @filename: package.json 84923af6ab5fSopenharmony_ci+{ 84933af6ab5fSopenharmony_ci+ "name": "package", 84943af6ab5fSopenharmony_ci+ "private": true, 84953af6ab5fSopenharmony_ci+ "type": "module", 84963af6ab5fSopenharmony_ci+ "exports": "./index.js" 84973af6ab5fSopenharmony_ci+} 84983af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 84993af6ab5fSopenharmony_ci+{ 85003af6ab5fSopenharmony_ci+ "name": "inner", 85013af6ab5fSopenharmony_ci+ "private": true, 85023af6ab5fSopenharmony_ci+ "type": "module", 85033af6ab5fSopenharmony_ci+ "exports": "./index.js" 85043af6ab5fSopenharmony_ci+} 85053af6ab5fSopenharmony_ci\ No newline at end of file 85063af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationConditions.ts b/tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationConditions.ts 85073af6ab5fSopenharmony_cinew file mode 100644 85083af6ab5fSopenharmony_ciindex 0000000000..2562c7a4a1 85093af6ab5fSopenharmony_ci--- /dev/null 85103af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationConditions.ts 85113af6ab5fSopenharmony_ci@@ -0,0 +1,34 @@ 85123af6ab5fSopenharmony_ci+// @module: node12,nodenext 85133af6ab5fSopenharmony_ci+// @declaration: true 85143af6ab5fSopenharmony_ci+// @filename: index.ts 85153af6ab5fSopenharmony_ci+// esm format file 85163af6ab5fSopenharmony_ci+import { Thing } from "inner/other.js"; // should fail 85173af6ab5fSopenharmony_ci+export const a = (await import("inner")).x(); 85183af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 85193af6ab5fSopenharmony_ci+// esm format file 85203af6ab5fSopenharmony_ci+export { x } from "./other.js"; 85213af6ab5fSopenharmony_ci+// @filename: node_modules/inner/other.d.ts 85223af6ab5fSopenharmony_ci+// esm format file 85233af6ab5fSopenharmony_ci+export interface Thing {} 85243af6ab5fSopenharmony_ci+export const x: () => Thing; 85253af6ab5fSopenharmony_ci+// @filename: package.json 85263af6ab5fSopenharmony_ci+{ 85273af6ab5fSopenharmony_ci+ "name": "package", 85283af6ab5fSopenharmony_ci+ "private": true, 85293af6ab5fSopenharmony_ci+ "type": "module", 85303af6ab5fSopenharmony_ci+ "exports": "./index.js" 85313af6ab5fSopenharmony_ci+} 85323af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 85333af6ab5fSopenharmony_ci+{ 85343af6ab5fSopenharmony_ci+ "name": "inner", 85353af6ab5fSopenharmony_ci+ "private": true, 85363af6ab5fSopenharmony_ci+ "type": "module", 85373af6ab5fSopenharmony_ci+ "exports": { 85383af6ab5fSopenharmony_ci+ ".": { 85393af6ab5fSopenharmony_ci+ "default": "./index.js" 85403af6ab5fSopenharmony_ci+ }, 85413af6ab5fSopenharmony_ci+ "./other": { 85423af6ab5fSopenharmony_ci+ "default": "./other.js" 85433af6ab5fSopenharmony_ci+ } 85443af6ab5fSopenharmony_ci+ } 85453af6ab5fSopenharmony_ci+} 85463af6ab5fSopenharmony_ci\ No newline at end of file 85473af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationDirectory.ts b/tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationDirectory.ts 85483af6ab5fSopenharmony_cinew file mode 100644 85493af6ab5fSopenharmony_ciindex 0000000000..2eb8ac58e6 85503af6ab5fSopenharmony_ci--- /dev/null 85513af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationDirectory.ts 85523af6ab5fSopenharmony_ci@@ -0,0 +1,29 @@ 85533af6ab5fSopenharmony_ci+// @module: node12,nodenext 85543af6ab5fSopenharmony_ci+// @declaration: true 85553af6ab5fSopenharmony_ci+// @filename: index.ts 85563af6ab5fSopenharmony_ci+// esm format file 85573af6ab5fSopenharmony_ci+import { Thing } from "inner/other"; 85583af6ab5fSopenharmony_ci+export const a = (await import("inner/index.js")).x(); 85593af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 85603af6ab5fSopenharmony_ci+// esm format file 85613af6ab5fSopenharmony_ci+export { x } from "./other.js"; 85623af6ab5fSopenharmony_ci+// @filename: node_modules/inner/other.d.ts 85633af6ab5fSopenharmony_ci+// esm format file 85643af6ab5fSopenharmony_ci+export interface Thing {} 85653af6ab5fSopenharmony_ci+export const x: () => Thing; 85663af6ab5fSopenharmony_ci+// @filename: package.json 85673af6ab5fSopenharmony_ci+{ 85683af6ab5fSopenharmony_ci+ "name": "package", 85693af6ab5fSopenharmony_ci+ "private": true, 85703af6ab5fSopenharmony_ci+ "type": "module", 85713af6ab5fSopenharmony_ci+ "exports": "./index.js" 85723af6ab5fSopenharmony_ci+} 85733af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 85743af6ab5fSopenharmony_ci+{ 85753af6ab5fSopenharmony_ci+ "name": "inner", 85763af6ab5fSopenharmony_ci+ "private": true, 85773af6ab5fSopenharmony_ci+ "type": "module", 85783af6ab5fSopenharmony_ci+ "exports": { 85793af6ab5fSopenharmony_ci+ "./": "./" 85803af6ab5fSopenharmony_ci+ } 85813af6ab5fSopenharmony_ci+} 85823af6ab5fSopenharmony_ci\ No newline at end of file 85833af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationPattern.ts b/tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationPattern.ts 85843af6ab5fSopenharmony_cinew file mode 100644 85853af6ab5fSopenharmony_ciindex 0000000000..97812da5b5 85863af6ab5fSopenharmony_ci--- /dev/null 85873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesExportsSpecifierGenerationPattern.ts 85883af6ab5fSopenharmony_ci@@ -0,0 +1,29 @@ 85893af6ab5fSopenharmony_ci+// @module: node12,nodenext 85903af6ab5fSopenharmony_ci+// @declaration: true 85913af6ab5fSopenharmony_ci+// @filename: index.ts 85923af6ab5fSopenharmony_ci+// esm format file 85933af6ab5fSopenharmony_ci+import { Thing } from "inner/other"; 85943af6ab5fSopenharmony_ci+export const a = (await import("inner/index.js")).x(); 85953af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 85963af6ab5fSopenharmony_ci+// esm format file 85973af6ab5fSopenharmony_ci+export { x } from "./other.js"; 85983af6ab5fSopenharmony_ci+// @filename: node_modules/inner/other.d.ts 85993af6ab5fSopenharmony_ci+// esm format file 86003af6ab5fSopenharmony_ci+export interface Thing {} 86013af6ab5fSopenharmony_ci+export const x: () => Thing; 86023af6ab5fSopenharmony_ci+// @filename: package.json 86033af6ab5fSopenharmony_ci+{ 86043af6ab5fSopenharmony_ci+ "name": "package", 86053af6ab5fSopenharmony_ci+ "private": true, 86063af6ab5fSopenharmony_ci+ "type": "module", 86073af6ab5fSopenharmony_ci+ "exports": "./index.js" 86083af6ab5fSopenharmony_ci+} 86093af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 86103af6ab5fSopenharmony_ci+{ 86113af6ab5fSopenharmony_ci+ "name": "inner", 86123af6ab5fSopenharmony_ci+ "private": true, 86133af6ab5fSopenharmony_ci+ "type": "module", 86143af6ab5fSopenharmony_ci+ "exports": { 86153af6ab5fSopenharmony_ci+ "./*.js": "./*.js" 86163af6ab5fSopenharmony_ci+ } 86173af6ab5fSopenharmony_ci+} 86183af6ab5fSopenharmony_ci\ No newline at end of file 86193af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesForbidenSyntax.ts b/tests/cases/conformance/node/nodeModulesForbidenSyntax.ts 86203af6ab5fSopenharmony_cinew file mode 100644 86213af6ab5fSopenharmony_ciindex 0000000000..d441627d7d 86223af6ab5fSopenharmony_ci--- /dev/null 86233af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesForbidenSyntax.ts 86243af6ab5fSopenharmony_ci@@ -0,0 +1,67 @@ 86253af6ab5fSopenharmony_ci+// @module: node12,nodenext 86263af6ab5fSopenharmony_ci+// @declaration: true 86273af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 86283af6ab5fSopenharmony_ci+// cjs format file 86293af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86303af6ab5fSopenharmony_ci+export {x}; 86313af6ab5fSopenharmony_ci+// @filename: subfolder/index.cts 86323af6ab5fSopenharmony_ci+// cjs format file 86333af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86343af6ab5fSopenharmony_ci+export {x}; 86353af6ab5fSopenharmony_ci+// @filename: subfolder/index.mts 86363af6ab5fSopenharmony_ci+// esm format file 86373af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86383af6ab5fSopenharmony_ci+export {x}; 86393af6ab5fSopenharmony_ci+// @filename: subfolder2/index.ts 86403af6ab5fSopenharmony_ci+// cjs format file 86413af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86423af6ab5fSopenharmony_ci+export {x}; 86433af6ab5fSopenharmony_ci+// @filename: subfolder2/index.cts 86443af6ab5fSopenharmony_ci+// cjs format file 86453af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86463af6ab5fSopenharmony_ci+export {x}; 86473af6ab5fSopenharmony_ci+// @filename: subfolder2/index.mts 86483af6ab5fSopenharmony_ci+// esm format file 86493af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86503af6ab5fSopenharmony_ci+export {x}; 86513af6ab5fSopenharmony_ci+// @filename: subfolder2/another/index.ts 86523af6ab5fSopenharmony_ci+// esm format file 86533af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86543af6ab5fSopenharmony_ci+export {x}; 86553af6ab5fSopenharmony_ci+// @filename: subfolder2/another/index.mts 86563af6ab5fSopenharmony_ci+// esm format file 86573af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86583af6ab5fSopenharmony_ci+export {x}; 86593af6ab5fSopenharmony_ci+// @filename: subfolder2/another/index.cts 86603af6ab5fSopenharmony_ci+// cjs format file 86613af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86623af6ab5fSopenharmony_ci+export {x}; 86633af6ab5fSopenharmony_ci+// @filename: index.mts 86643af6ab5fSopenharmony_ci+// esm format file 86653af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86663af6ab5fSopenharmony_ci+export {x}; 86673af6ab5fSopenharmony_ci+// @filename: index.cts 86683af6ab5fSopenharmony_ci+// cjs format file 86693af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86703af6ab5fSopenharmony_ci+export {x}; 86713af6ab5fSopenharmony_ci+// @filename: index.ts 86723af6ab5fSopenharmony_ci+// esm format file 86733af6ab5fSopenharmony_ci+const x = <T>() => <T><any>(void 0); 86743af6ab5fSopenharmony_ci+export {x}; 86753af6ab5fSopenharmony_ci+// @filename: package.json 86763af6ab5fSopenharmony_ci+{ 86773af6ab5fSopenharmony_ci+ "name": "package", 86783af6ab5fSopenharmony_ci+ "private": true, 86793af6ab5fSopenharmony_ci+ "type": "module" 86803af6ab5fSopenharmony_ci+} 86813af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 86823af6ab5fSopenharmony_ci+{ 86833af6ab5fSopenharmony_ci+ "type": "commonjs" 86843af6ab5fSopenharmony_ci+} 86853af6ab5fSopenharmony_ci+// @filename: subfolder2/package.json 86863af6ab5fSopenharmony_ci+{ 86873af6ab5fSopenharmony_ci+} 86883af6ab5fSopenharmony_ci+// @filename: subfolder2/another/package.json 86893af6ab5fSopenharmony_ci+{ 86903af6ab5fSopenharmony_ci+ "type": "module" 86913af6ab5fSopenharmony_ci+} 86923af6ab5fSopenharmony_ci\ No newline at end of file 86933af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesGeneratedNameCollisions.ts b/tests/cases/conformance/node/nodeModulesGeneratedNameCollisions.ts 86943af6ab5fSopenharmony_cinew file mode 100644 86953af6ab5fSopenharmony_ciindex 0000000000..e9a9b9d9ed 86963af6ab5fSopenharmony_ci--- /dev/null 86973af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesGeneratedNameCollisions.ts 86983af6ab5fSopenharmony_ci@@ -0,0 +1,26 @@ 86993af6ab5fSopenharmony_ci+// @module: node12,nodenext 87003af6ab5fSopenharmony_ci+// @declaration: true 87013af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 87023af6ab5fSopenharmony_ci+// cjs format file 87033af6ab5fSopenharmony_ci+function require() {} 87043af6ab5fSopenharmony_ci+const exports = {}; 87053af6ab5fSopenharmony_ci+class Object {} 87063af6ab5fSopenharmony_ci+export const __esModule = false; 87073af6ab5fSopenharmony_ci+export {require, exports, Object}; 87083af6ab5fSopenharmony_ci+// @filename: index.ts 87093af6ab5fSopenharmony_ci+// esm format file 87103af6ab5fSopenharmony_ci+function require() {} 87113af6ab5fSopenharmony_ci+const exports = {}; 87123af6ab5fSopenharmony_ci+class Object {} 87133af6ab5fSopenharmony_ci+export const __esModule = false; 87143af6ab5fSopenharmony_ci+export {require, exports, Object}; 87153af6ab5fSopenharmony_ci+// @filename: package.json 87163af6ab5fSopenharmony_ci+{ 87173af6ab5fSopenharmony_ci+ "name": "package", 87183af6ab5fSopenharmony_ci+ "private": true, 87193af6ab5fSopenharmony_ci+ "type": "module" 87203af6ab5fSopenharmony_ci+} 87213af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 87223af6ab5fSopenharmony_ci+{ 87233af6ab5fSopenharmony_ci+ "type": "commonjs" 87243af6ab5fSopenharmony_ci+} 87253af6ab5fSopenharmony_ci\ No newline at end of file 87263af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesImportAssertions.ts b/tests/cases/conformance/node/nodeModulesImportAssertions.ts 87273af6ab5fSopenharmony_cinew file mode 100644 87283af6ab5fSopenharmony_ciindex 0000000000..0fe1ccdf82 87293af6ab5fSopenharmony_ci--- /dev/null 87303af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesImportAssertions.ts 87313af6ab5fSopenharmony_ci@@ -0,0 +1,13 @@ 87323af6ab5fSopenharmony_ci+// @module: node12,nodenext 87333af6ab5fSopenharmony_ci+// @resolveJsonModule: true 87343af6ab5fSopenharmony_ci+// @filename: index.ts 87353af6ab5fSopenharmony_ci+import json from "./package.json" assert { type: "json" }; 87363af6ab5fSopenharmony_ci+// @filename: otherc.cts 87373af6ab5fSopenharmony_ci+import json from "./package.json" assert { type: "json" }; // should error, cjs mode imports don't support assertions 87383af6ab5fSopenharmony_ci+const json2 = import("./package.json", { assert: { type: "json" } }); // should be fine 87393af6ab5fSopenharmony_ci+// @filename: package.json 87403af6ab5fSopenharmony_ci+{ 87413af6ab5fSopenharmony_ci+ "name": "pkg", 87423af6ab5fSopenharmony_ci+ "private": true, 87433af6ab5fSopenharmony_ci+ "type": "module" 87443af6ab5fSopenharmony_ci+} 87453af6ab5fSopenharmony_ci\ No newline at end of file 87463af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesImportAssignments.ts b/tests/cases/conformance/node/nodeModulesImportAssignments.ts 87473af6ab5fSopenharmony_cinew file mode 100644 87483af6ab5fSopenharmony_ciindex 0000000000..6c22fe83e0 87493af6ab5fSopenharmony_ci--- /dev/null 87503af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesImportAssignments.ts 87513af6ab5fSopenharmony_ci@@ -0,0 +1,31 @@ 87523af6ab5fSopenharmony_ci+// @module: node12,nodenext 87533af6ab5fSopenharmony_ci+// @declaration: true 87543af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 87553af6ab5fSopenharmony_ci+// cjs format file 87563af6ab5fSopenharmony_ci+import fs = require("fs"); 87573af6ab5fSopenharmony_ci+fs.readFile; 87583af6ab5fSopenharmony_ci+export import fs2 = require("fs"); 87593af6ab5fSopenharmony_ci+// @filename: index.ts 87603af6ab5fSopenharmony_ci+// esm format file 87613af6ab5fSopenharmony_ci+import fs = require("fs"); 87623af6ab5fSopenharmony_ci+fs.readFile; 87633af6ab5fSopenharmony_ci+export import fs2 = require("fs"); 87643af6ab5fSopenharmony_ci+// @filename: file.ts 87653af6ab5fSopenharmony_ci+// esm format file 87663af6ab5fSopenharmony_ci+const __require = null; 87673af6ab5fSopenharmony_ci+const _createRequire = null; 87683af6ab5fSopenharmony_ci+import fs = require("fs"); 87693af6ab5fSopenharmony_ci+fs.readFile; 87703af6ab5fSopenharmony_ci+export import fs2 = require("fs"); 87713af6ab5fSopenharmony_ci+// @filename: package.json 87723af6ab5fSopenharmony_ci+{ 87733af6ab5fSopenharmony_ci+ "name": "package", 87743af6ab5fSopenharmony_ci+ "private": true, 87753af6ab5fSopenharmony_ci+ "type": "module" 87763af6ab5fSopenharmony_ci+} 87773af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 87783af6ab5fSopenharmony_ci+{ 87793af6ab5fSopenharmony_ci+ "type": "commonjs" 87803af6ab5fSopenharmony_ci+} 87813af6ab5fSopenharmony_ci+// @filename: types.d.ts 87823af6ab5fSopenharmony_ci+declare module "fs"; 87833af6ab5fSopenharmony_ci\ No newline at end of file 87843af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesImportHelpersCollisions.ts b/tests/cases/conformance/node/nodeModulesImportHelpersCollisions.ts 87853af6ab5fSopenharmony_cinew file mode 100644 87863af6ab5fSopenharmony_ciindex 0000000000..103b583712 87873af6ab5fSopenharmony_ci--- /dev/null 87883af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesImportHelpersCollisions.ts 87893af6ab5fSopenharmony_ci@@ -0,0 +1,31 @@ 87903af6ab5fSopenharmony_ci+// @module: node12,nodenext 87913af6ab5fSopenharmony_ci+// @declaration: true 87923af6ab5fSopenharmony_ci+// @importHelpers: true 87933af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 87943af6ab5fSopenharmony_ci+// cjs format file 87953af6ab5fSopenharmony_ci+import {default as _fs} from "fs"; 87963af6ab5fSopenharmony_ci+_fs.readFile; 87973af6ab5fSopenharmony_ci+import * as fs from "fs"; 87983af6ab5fSopenharmony_ci+fs.readFile; 87993af6ab5fSopenharmony_ci+// @filename: index.ts 88003af6ab5fSopenharmony_ci+// esm format file 88013af6ab5fSopenharmony_ci+import {default as _fs} from "fs"; 88023af6ab5fSopenharmony_ci+_fs.readFile; 88033af6ab5fSopenharmony_ci+import * as fs from "fs"; 88043af6ab5fSopenharmony_ci+fs.readFile; 88053af6ab5fSopenharmony_ci+// @filename: package.json 88063af6ab5fSopenharmony_ci+{ 88073af6ab5fSopenharmony_ci+ "name": "package", 88083af6ab5fSopenharmony_ci+ "private": true, 88093af6ab5fSopenharmony_ci+ "type": "module" 88103af6ab5fSopenharmony_ci+} 88113af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 88123af6ab5fSopenharmony_ci+{ 88133af6ab5fSopenharmony_ci+ "type": "commonjs" 88143af6ab5fSopenharmony_ci+} 88153af6ab5fSopenharmony_ci+// @filename: types.d.ts 88163af6ab5fSopenharmony_ci+declare module "fs"; 88173af6ab5fSopenharmony_ci+declare module "tslib" { 88183af6ab5fSopenharmony_ci+ export {}; 88193af6ab5fSopenharmony_ci+ // intentionally missing all helpers 88203af6ab5fSopenharmony_ci+} 88213af6ab5fSopenharmony_ci\ No newline at end of file 88223af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesImportHelpersCollisions2.ts b/tests/cases/conformance/node/nodeModulesImportHelpersCollisions2.ts 88233af6ab5fSopenharmony_cinew file mode 100644 88243af6ab5fSopenharmony_ciindex 0000000000..7f90947a5f 88253af6ab5fSopenharmony_ci--- /dev/null 88263af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesImportHelpersCollisions2.ts 88273af6ab5fSopenharmony_ci@@ -0,0 +1,27 @@ 88283af6ab5fSopenharmony_ci+// @module: node12,nodenext 88293af6ab5fSopenharmony_ci+// @declaration: true 88303af6ab5fSopenharmony_ci+// @importHelpers: true 88313af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 88323af6ab5fSopenharmony_ci+// cjs format file 88333af6ab5fSopenharmony_ci+export * from "fs"; 88343af6ab5fSopenharmony_ci+export * as fs from "fs"; 88353af6ab5fSopenharmony_ci+// @filename: index.ts 88363af6ab5fSopenharmony_ci+// esm format file 88373af6ab5fSopenharmony_ci+export * from "fs"; 88383af6ab5fSopenharmony_ci+export * as fs from "fs"; 88393af6ab5fSopenharmony_ci+// @filename: package.json 88403af6ab5fSopenharmony_ci+{ 88413af6ab5fSopenharmony_ci+ "name": "package", 88423af6ab5fSopenharmony_ci+ "private": true, 88433af6ab5fSopenharmony_ci+ "type": "module" 88443af6ab5fSopenharmony_ci+} 88453af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 88463af6ab5fSopenharmony_ci+{ 88473af6ab5fSopenharmony_ci+ "type": "commonjs" 88483af6ab5fSopenharmony_ci+} 88493af6ab5fSopenharmony_ci+// @filename: types.d.ts 88503af6ab5fSopenharmony_ci+declare module "fs"; 88513af6ab5fSopenharmony_ci+declare module "tslib" { 88523af6ab5fSopenharmony_ci+ export {}; 88533af6ab5fSopenharmony_ci+ // intentionally missing all helpers 88543af6ab5fSopenharmony_ci+} 88553af6ab5fSopenharmony_ci\ No newline at end of file 88563af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesImportHelpersCollisions3.ts b/tests/cases/conformance/node/nodeModulesImportHelpersCollisions3.ts 88573af6ab5fSopenharmony_cinew file mode 100644 88583af6ab5fSopenharmony_ciindex 0000000000..5f6984ad1f 88593af6ab5fSopenharmony_ci--- /dev/null 88603af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesImportHelpersCollisions3.ts 88613af6ab5fSopenharmony_ci@@ -0,0 +1,25 @@ 88623af6ab5fSopenharmony_ci+// @module: node12,nodenext 88633af6ab5fSopenharmony_ci+// @declaration: true 88643af6ab5fSopenharmony_ci+// @importHelpers: true 88653af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 88663af6ab5fSopenharmony_ci+// cjs format file 88673af6ab5fSopenharmony_ci+export {default} from "fs"; 88683af6ab5fSopenharmony_ci+// @filename: index.ts 88693af6ab5fSopenharmony_ci+// esm format file 88703af6ab5fSopenharmony_ci+export {default} from "fs"; 88713af6ab5fSopenharmony_ci+// @filename: package.json 88723af6ab5fSopenharmony_ci+{ 88733af6ab5fSopenharmony_ci+ "name": "package", 88743af6ab5fSopenharmony_ci+ "private": true, 88753af6ab5fSopenharmony_ci+ "type": "module" 88763af6ab5fSopenharmony_ci+} 88773af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 88783af6ab5fSopenharmony_ci+{ 88793af6ab5fSopenharmony_ci+ "type": "commonjs" 88803af6ab5fSopenharmony_ci+} 88813af6ab5fSopenharmony_ci+// @filename: types.d.ts 88823af6ab5fSopenharmony_ci+declare module "fs"; 88833af6ab5fSopenharmony_ci+declare module "tslib" { 88843af6ab5fSopenharmony_ci+ export {}; 88853af6ab5fSopenharmony_ci+ // intentionally missing all helpers 88863af6ab5fSopenharmony_ci+} 88873af6ab5fSopenharmony_ci\ No newline at end of file 88883af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesImportMeta.ts b/tests/cases/conformance/node/nodeModulesImportMeta.ts 88893af6ab5fSopenharmony_cinew file mode 100644 88903af6ab5fSopenharmony_ciindex 0000000000..d684c7b5cb 88913af6ab5fSopenharmony_ci--- /dev/null 88923af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesImportMeta.ts 88933af6ab5fSopenharmony_ci@@ -0,0 +1,20 @@ 88943af6ab5fSopenharmony_ci+// @module: node12,nodenext 88953af6ab5fSopenharmony_ci+// @declaration: true 88963af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 88973af6ab5fSopenharmony_ci+// cjs format file 88983af6ab5fSopenharmony_ci+const x = import.meta.url; 88993af6ab5fSopenharmony_ci+export {x}; 89003af6ab5fSopenharmony_ci+// @filename: index.ts 89013af6ab5fSopenharmony_ci+// esm format file 89023af6ab5fSopenharmony_ci+const x = import.meta.url; 89033af6ab5fSopenharmony_ci+export {x}; 89043af6ab5fSopenharmony_ci+// @filename: package.json 89053af6ab5fSopenharmony_ci+{ 89063af6ab5fSopenharmony_ci+ "name": "package", 89073af6ab5fSopenharmony_ci+ "private": true, 89083af6ab5fSopenharmony_ci+ "type": "module" 89093af6ab5fSopenharmony_ci+} 89103af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 89113af6ab5fSopenharmony_ci+{ 89123af6ab5fSopenharmony_ci+ "type": "commonjs" 89133af6ab5fSopenharmony_ci+} 89143af6ab5fSopenharmony_ci\ No newline at end of file 89153af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesImportResolutionIntoExport.ts b/tests/cases/conformance/node/nodeModulesImportResolutionIntoExport.ts 89163af6ab5fSopenharmony_cinew file mode 100644 89173af6ab5fSopenharmony_ciindex 0000000000..2a407b2bc6 89183af6ab5fSopenharmony_ci--- /dev/null 89193af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesImportResolutionIntoExport.ts 89203af6ab5fSopenharmony_ci@@ -0,0 +1,24 @@ 89213af6ab5fSopenharmony_ci+// @module: node12,nodenext 89223af6ab5fSopenharmony_ci+// @declaration: true 89233af6ab5fSopenharmony_ci+// @filename: index.ts 89243af6ab5fSopenharmony_ci+// esm format file 89253af6ab5fSopenharmony_ci+import * as type from "#type"; 89263af6ab5fSopenharmony_ci+type; 89273af6ab5fSopenharmony_ci+// @filename: index.mts 89283af6ab5fSopenharmony_ci+// esm format file 89293af6ab5fSopenharmony_ci+import * as type from "#type"; 89303af6ab5fSopenharmony_ci+type; 89313af6ab5fSopenharmony_ci+// @filename: index.cts 89323af6ab5fSopenharmony_ci+// esm format file 89333af6ab5fSopenharmony_ci+import * as type from "#type"; 89343af6ab5fSopenharmony_ci+type; 89353af6ab5fSopenharmony_ci+// @filename: package.json 89363af6ab5fSopenharmony_ci+{ 89373af6ab5fSopenharmony_ci+ "name": "package", 89383af6ab5fSopenharmony_ci+ "private": true, 89393af6ab5fSopenharmony_ci+ "type": "module", 89403af6ab5fSopenharmony_ci+ "exports": "./index.cjs", 89413af6ab5fSopenharmony_ci+ "imports": { 89423af6ab5fSopenharmony_ci+ "#type": "package" 89433af6ab5fSopenharmony_ci+ } 89443af6ab5fSopenharmony_ci+} 89453af6ab5fSopenharmony_ci\ No newline at end of file 89463af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesImportResolutionNoCycle.ts b/tests/cases/conformance/node/nodeModulesImportResolutionNoCycle.ts 89473af6ab5fSopenharmony_cinew file mode 100644 89483af6ab5fSopenharmony_ciindex 0000000000..c0482c86ec 89493af6ab5fSopenharmony_ci--- /dev/null 89503af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesImportResolutionNoCycle.ts 89513af6ab5fSopenharmony_ci@@ -0,0 +1,24 @@ 89523af6ab5fSopenharmony_ci+// @module: node12,nodenext 89533af6ab5fSopenharmony_ci+// @declaration: true 89543af6ab5fSopenharmony_ci+// @filename: index.ts 89553af6ab5fSopenharmony_ci+// esm format file 89563af6ab5fSopenharmony_ci+import * as type from "#type"; 89573af6ab5fSopenharmony_ci+type; 89583af6ab5fSopenharmony_ci+// @filename: index.mts 89593af6ab5fSopenharmony_ci+// esm format file 89603af6ab5fSopenharmony_ci+import * as type from "#type"; 89613af6ab5fSopenharmony_ci+type; 89623af6ab5fSopenharmony_ci+// @filename: index.cts 89633af6ab5fSopenharmony_ci+// esm format file 89643af6ab5fSopenharmony_ci+import * as type from "#type"; 89653af6ab5fSopenharmony_ci+type; 89663af6ab5fSopenharmony_ci+// @filename: package.json 89673af6ab5fSopenharmony_ci+{ 89683af6ab5fSopenharmony_ci+ "name": "package", 89693af6ab5fSopenharmony_ci+ "private": true, 89703af6ab5fSopenharmony_ci+ "type": "module", 89713af6ab5fSopenharmony_ci+ "exports": "package", 89723af6ab5fSopenharmony_ci+ "imports": { 89733af6ab5fSopenharmony_ci+ "#type": "package" 89743af6ab5fSopenharmony_ci+ } 89753af6ab5fSopenharmony_ci+} 89763af6ab5fSopenharmony_ci\ No newline at end of file 89773af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesPackageExports.ts b/tests/cases/conformance/node/nodeModulesPackageExports.ts 89783af6ab5fSopenharmony_cinew file mode 100644 89793af6ab5fSopenharmony_ciindex 0000000000..897d01b07d 89803af6ab5fSopenharmony_ci--- /dev/null 89813af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesPackageExports.ts 89823af6ab5fSopenharmony_ci@@ -0,0 +1,90 @@ 89833af6ab5fSopenharmony_ci+// @module: node12,nodenext 89843af6ab5fSopenharmony_ci+// @declaration: true 89853af6ab5fSopenharmony_ci+// @outDir: out 89863af6ab5fSopenharmony_ci+// @filename: index.ts 89873af6ab5fSopenharmony_ci+// esm format file 89883af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 89893af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 89903af6ab5fSopenharmony_ci+import * as type from "package"; 89913af6ab5fSopenharmony_ci+cjs; 89923af6ab5fSopenharmony_ci+mjs; 89933af6ab5fSopenharmony_ci+type; 89943af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs"; 89953af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs"; 89963af6ab5fSopenharmony_ci+import * as typei from "inner"; 89973af6ab5fSopenharmony_ci+cjsi; 89983af6ab5fSopenharmony_ci+mjsi; 89993af6ab5fSopenharmony_ci+typei; 90003af6ab5fSopenharmony_ci+// @filename: index.mts 90013af6ab5fSopenharmony_ci+// esm format file 90023af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 90033af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 90043af6ab5fSopenharmony_ci+import * as type from "package"; 90053af6ab5fSopenharmony_ci+cjs; 90063af6ab5fSopenharmony_ci+mjs; 90073af6ab5fSopenharmony_ci+type; 90083af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs"; 90093af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs"; 90103af6ab5fSopenharmony_ci+import * as typei from "inner"; 90113af6ab5fSopenharmony_ci+cjsi; 90123af6ab5fSopenharmony_ci+mjsi; 90133af6ab5fSopenharmony_ci+typei; 90143af6ab5fSopenharmony_ci+// @filename: index.cts 90153af6ab5fSopenharmony_ci+// cjs format file 90163af6ab5fSopenharmony_ci+import * as cjs from "package/cjs"; 90173af6ab5fSopenharmony_ci+import * as mjs from "package/mjs"; 90183af6ab5fSopenharmony_ci+import * as type from "package"; 90193af6ab5fSopenharmony_ci+cjs; 90203af6ab5fSopenharmony_ci+mjs; 90213af6ab5fSopenharmony_ci+type; 90223af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs"; 90233af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs"; 90243af6ab5fSopenharmony_ci+import * as typei from "inner"; 90253af6ab5fSopenharmony_ci+cjsi; 90263af6ab5fSopenharmony_ci+mjsi; 90273af6ab5fSopenharmony_ci+typei; 90283af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 90293af6ab5fSopenharmony_ci+// cjs format file 90303af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs"; 90313af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs"; 90323af6ab5fSopenharmony_ci+import * as type from "inner"; 90333af6ab5fSopenharmony_ci+export { cjs }; 90343af6ab5fSopenharmony_ci+export { mjs }; 90353af6ab5fSopenharmony_ci+export { type }; 90363af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.mts 90373af6ab5fSopenharmony_ci+// esm format file 90383af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs"; 90393af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs"; 90403af6ab5fSopenharmony_ci+import * as type from "inner"; 90413af6ab5fSopenharmony_ci+export { cjs }; 90423af6ab5fSopenharmony_ci+export { mjs }; 90433af6ab5fSopenharmony_ci+export { type }; 90443af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.cts 90453af6ab5fSopenharmony_ci+// cjs format file 90463af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs"; 90473af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs"; 90483af6ab5fSopenharmony_ci+import * as type from "inner"; 90493af6ab5fSopenharmony_ci+export { cjs }; 90503af6ab5fSopenharmony_ci+export { mjs }; 90513af6ab5fSopenharmony_ci+export { type }; 90523af6ab5fSopenharmony_ci+// @filename: package.json 90533af6ab5fSopenharmony_ci+{ 90543af6ab5fSopenharmony_ci+ "name": "package", 90553af6ab5fSopenharmony_ci+ "private": true, 90563af6ab5fSopenharmony_ci+ "type": "module", 90573af6ab5fSopenharmony_ci+ "exports": { 90583af6ab5fSopenharmony_ci+ "./cjs": "./index.cjs", 90593af6ab5fSopenharmony_ci+ "./mjs": "./index.mjs", 90603af6ab5fSopenharmony_ci+ ".": "./index.js" 90613af6ab5fSopenharmony_ci+ } 90623af6ab5fSopenharmony_ci+} 90633af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 90643af6ab5fSopenharmony_ci+{ 90653af6ab5fSopenharmony_ci+ "name": "inner", 90663af6ab5fSopenharmony_ci+ "private": true, 90673af6ab5fSopenharmony_ci+ "exports": { 90683af6ab5fSopenharmony_ci+ "./cjs": "./index.cjs", 90693af6ab5fSopenharmony_ci+ "./mjs": "./index.mjs", 90703af6ab5fSopenharmony_ci+ ".": "./index.js" 90713af6ab5fSopenharmony_ci+ } 90723af6ab5fSopenharmony_ci+} 90733af6ab5fSopenharmony_ci\ No newline at end of file 90743af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesPackageImports.ts b/tests/cases/conformance/node/nodeModulesPackageImports.ts 90753af6ab5fSopenharmony_cinew file mode 100644 90763af6ab5fSopenharmony_ciindex 0000000000..cccf930098 90773af6ab5fSopenharmony_ci--- /dev/null 90783af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesPackageImports.ts 90793af6ab5fSopenharmony_ci@@ -0,0 +1,38 @@ 90803af6ab5fSopenharmony_ci+// @module: node12,nodenext 90813af6ab5fSopenharmony_ci+// @declaration: true 90823af6ab5fSopenharmony_ci+// @filename: index.ts 90833af6ab5fSopenharmony_ci+// esm format file 90843af6ab5fSopenharmony_ci+import * as cjs from "#cjs"; 90853af6ab5fSopenharmony_ci+import * as mjs from "#mjs"; 90863af6ab5fSopenharmony_ci+import * as type from "#type"; 90873af6ab5fSopenharmony_ci+cjs; 90883af6ab5fSopenharmony_ci+mjs; 90893af6ab5fSopenharmony_ci+type; 90903af6ab5fSopenharmony_ci+// @filename: index.mts 90913af6ab5fSopenharmony_ci+// esm format file 90923af6ab5fSopenharmony_ci+import * as cjs from "#cjs"; 90933af6ab5fSopenharmony_ci+import * as mjs from "#mjs"; 90943af6ab5fSopenharmony_ci+import * as type from "#type"; 90953af6ab5fSopenharmony_ci+cjs; 90963af6ab5fSopenharmony_ci+mjs; 90973af6ab5fSopenharmony_ci+type; 90983af6ab5fSopenharmony_ci+// @filename: index.cts 90993af6ab5fSopenharmony_ci+// esm format file 91003af6ab5fSopenharmony_ci+import * as cjs from "#cjs"; 91013af6ab5fSopenharmony_ci+import * as mjs from "#mjs"; 91023af6ab5fSopenharmony_ci+import * as type from "#type"; 91033af6ab5fSopenharmony_ci+cjs; 91043af6ab5fSopenharmony_ci+mjs; 91053af6ab5fSopenharmony_ci+type; 91063af6ab5fSopenharmony_ci+// @filename: package.json 91073af6ab5fSopenharmony_ci+{ 91083af6ab5fSopenharmony_ci+ "name": "package", 91093af6ab5fSopenharmony_ci+ "private": true, 91103af6ab5fSopenharmony_ci+ "type": "module", 91113af6ab5fSopenharmony_ci+ "exports": "./index.js", 91123af6ab5fSopenharmony_ci+ "imports": { 91133af6ab5fSopenharmony_ci+ "#cjs": "./index.cjs", 91143af6ab5fSopenharmony_ci+ "#mjs": "./index.mjs", 91153af6ab5fSopenharmony_ci+ "#type": "./index.js" 91163af6ab5fSopenharmony_ci+ } 91173af6ab5fSopenharmony_ci+} 91183af6ab5fSopenharmony_ci\ No newline at end of file 91193af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesPackagePatternExports.ts b/tests/cases/conformance/node/nodeModulesPackagePatternExports.ts 91203af6ab5fSopenharmony_cinew file mode 100644 91213af6ab5fSopenharmony_ciindex 0000000000..e22e497a94 91223af6ab5fSopenharmony_ci--- /dev/null 91233af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesPackagePatternExports.ts 91243af6ab5fSopenharmony_ci@@ -0,0 +1,67 @@ 91253af6ab5fSopenharmony_ci+// @module: node12,nodenext 91263af6ab5fSopenharmony_ci+// @declaration: true 91273af6ab5fSopenharmony_ci+// @outDir: out 91283af6ab5fSopenharmony_ci+// @filename: index.ts 91293af6ab5fSopenharmony_ci+// esm format file 91303af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index"; 91313af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index"; 91323af6ab5fSopenharmony_ci+import * as typei from "inner/js/index"; 91333af6ab5fSopenharmony_ci+cjsi; 91343af6ab5fSopenharmony_ci+mjsi; 91353af6ab5fSopenharmony_ci+typei; 91363af6ab5fSopenharmony_ci+// @filename: index.mts 91373af6ab5fSopenharmony_ci+// esm format file 91383af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index"; 91393af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index"; 91403af6ab5fSopenharmony_ci+import * as typei from "inner/js/index"; 91413af6ab5fSopenharmony_ci+cjsi; 91423af6ab5fSopenharmony_ci+mjsi; 91433af6ab5fSopenharmony_ci+typei; 91443af6ab5fSopenharmony_ci+// @filename: index.cts 91453af6ab5fSopenharmony_ci+// cjs format file 91463af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index"; 91473af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index"; 91483af6ab5fSopenharmony_ci+import * as typei from "inner/js/index"; 91493af6ab5fSopenharmony_ci+cjsi; 91503af6ab5fSopenharmony_ci+mjsi; 91513af6ab5fSopenharmony_ci+typei; 91523af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 91533af6ab5fSopenharmony_ci+// cjs format file 91543af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index"; 91553af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index"; 91563af6ab5fSopenharmony_ci+import * as type from "inner/js/index"; 91573af6ab5fSopenharmony_ci+export { cjs }; 91583af6ab5fSopenharmony_ci+export { mjs }; 91593af6ab5fSopenharmony_ci+export { type }; 91603af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.mts 91613af6ab5fSopenharmony_ci+// esm format file 91623af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index"; 91633af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index"; 91643af6ab5fSopenharmony_ci+import * as type from "inner/js/index"; 91653af6ab5fSopenharmony_ci+export { cjs }; 91663af6ab5fSopenharmony_ci+export { mjs }; 91673af6ab5fSopenharmony_ci+export { type }; 91683af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.cts 91693af6ab5fSopenharmony_ci+// cjs format file 91703af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index"; 91713af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index"; 91723af6ab5fSopenharmony_ci+import * as type from "inner/js/index"; 91733af6ab5fSopenharmony_ci+export { cjs }; 91743af6ab5fSopenharmony_ci+export { mjs }; 91753af6ab5fSopenharmony_ci+export { type }; 91763af6ab5fSopenharmony_ci+// @filename: package.json 91773af6ab5fSopenharmony_ci+{ 91783af6ab5fSopenharmony_ci+ "name": "package", 91793af6ab5fSopenharmony_ci+ "private": true, 91803af6ab5fSopenharmony_ci+ "type": "module", 91813af6ab5fSopenharmony_ci+} 91823af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 91833af6ab5fSopenharmony_ci+{ 91843af6ab5fSopenharmony_ci+ "name": "inner", 91853af6ab5fSopenharmony_ci+ "private": true, 91863af6ab5fSopenharmony_ci+ "exports": { 91873af6ab5fSopenharmony_ci+ "./cjs/*": "./*.cjs", 91883af6ab5fSopenharmony_ci+ "./mjs/*": "./*.mjs", 91893af6ab5fSopenharmony_ci+ "./js/*": "./*.js" 91903af6ab5fSopenharmony_ci+ } 91913af6ab5fSopenharmony_ci+} 91923af6ab5fSopenharmony_ci\ No newline at end of file 91933af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesPackagePatternExportsTrailers.ts b/tests/cases/conformance/node/nodeModulesPackagePatternExportsTrailers.ts 91943af6ab5fSopenharmony_cinew file mode 100644 91953af6ab5fSopenharmony_ciindex 0000000000..3abe36e0d6 91963af6ab5fSopenharmony_ci--- /dev/null 91973af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesPackagePatternExportsTrailers.ts 91983af6ab5fSopenharmony_ci@@ -0,0 +1,67 @@ 91993af6ab5fSopenharmony_ci+// @module: node12,nodenext 92003af6ab5fSopenharmony_ci+// @declaration: true 92013af6ab5fSopenharmony_ci+// @outDir: out 92023af6ab5fSopenharmony_ci+// @filename: index.ts 92033af6ab5fSopenharmony_ci+// esm format file 92043af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index.cjs"; 92053af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index.mjs"; 92063af6ab5fSopenharmony_ci+import * as typei from "inner/js/index.js"; 92073af6ab5fSopenharmony_ci+cjsi; 92083af6ab5fSopenharmony_ci+mjsi; 92093af6ab5fSopenharmony_ci+typei; 92103af6ab5fSopenharmony_ci+// @filename: index.mts 92113af6ab5fSopenharmony_ci+// esm format file 92123af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index.cjs"; 92133af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index.mjs"; 92143af6ab5fSopenharmony_ci+import * as typei from "inner/js/index.js"; 92153af6ab5fSopenharmony_ci+cjsi; 92163af6ab5fSopenharmony_ci+mjsi; 92173af6ab5fSopenharmony_ci+typei; 92183af6ab5fSopenharmony_ci+// @filename: index.cts 92193af6ab5fSopenharmony_ci+// cjs format file 92203af6ab5fSopenharmony_ci+import * as cjsi from "inner/cjs/index.cjs"; 92213af6ab5fSopenharmony_ci+import * as mjsi from "inner/mjs/index.mjs"; 92223af6ab5fSopenharmony_ci+import * as typei from "inner/js/index.js"; 92233af6ab5fSopenharmony_ci+cjsi; 92243af6ab5fSopenharmony_ci+mjsi; 92253af6ab5fSopenharmony_ci+typei; 92263af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 92273af6ab5fSopenharmony_ci+// cjs format file 92283af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index.cjs"; 92293af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index.mjs"; 92303af6ab5fSopenharmony_ci+import * as type from "inner/js/index.js"; 92313af6ab5fSopenharmony_ci+export { cjs }; 92323af6ab5fSopenharmony_ci+export { mjs }; 92333af6ab5fSopenharmony_ci+export { type }; 92343af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.mts 92353af6ab5fSopenharmony_ci+// esm format file 92363af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index.cjs"; 92373af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index.mjs"; 92383af6ab5fSopenharmony_ci+import * as type from "inner/js/index.js"; 92393af6ab5fSopenharmony_ci+export { cjs }; 92403af6ab5fSopenharmony_ci+export { mjs }; 92413af6ab5fSopenharmony_ci+export { type }; 92423af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.cts 92433af6ab5fSopenharmony_ci+// cjs format file 92443af6ab5fSopenharmony_ci+import * as cjs from "inner/cjs/index.cjs"; 92453af6ab5fSopenharmony_ci+import * as mjs from "inner/mjs/index.mjs"; 92463af6ab5fSopenharmony_ci+import * as type from "inner/js/index.js"; 92473af6ab5fSopenharmony_ci+export { cjs }; 92483af6ab5fSopenharmony_ci+export { mjs }; 92493af6ab5fSopenharmony_ci+export { type }; 92503af6ab5fSopenharmony_ci+// @filename: package.json 92513af6ab5fSopenharmony_ci+{ 92523af6ab5fSopenharmony_ci+ "name": "package", 92533af6ab5fSopenharmony_ci+ "private": true, 92543af6ab5fSopenharmony_ci+ "type": "module", 92553af6ab5fSopenharmony_ci+} 92563af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 92573af6ab5fSopenharmony_ci+{ 92583af6ab5fSopenharmony_ci+ "name": "inner", 92593af6ab5fSopenharmony_ci+ "private": true, 92603af6ab5fSopenharmony_ci+ "exports": { 92613af6ab5fSopenharmony_ci+ "./cjs/*.cjs": "./*.cjs", 92623af6ab5fSopenharmony_ci+ "./mjs/*.mjs": "./*.mjs", 92633af6ab5fSopenharmony_ci+ "./js/*.js": "./*.js" 92643af6ab5fSopenharmony_ci+ } 92653af6ab5fSopenharmony_ci+} 92663af6ab5fSopenharmony_ci\ No newline at end of file 92673af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesResolveJsonModule.ts b/tests/cases/conformance/node/nodeModulesResolveJsonModule.ts 92683af6ab5fSopenharmony_cinew file mode 100644 92693af6ab5fSopenharmony_ciindex 0000000000..c298685c22 92703af6ab5fSopenharmony_ci--- /dev/null 92713af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesResolveJsonModule.ts 92723af6ab5fSopenharmony_ci@@ -0,0 +1,29 @@ 92733af6ab5fSopenharmony_ci+// @module: node12,nodenext 92743af6ab5fSopenharmony_ci+// @resolveJsonModule: true 92753af6ab5fSopenharmony_ci+// @outDir: ./out 92763af6ab5fSopenharmony_ci+// @declaration: true 92773af6ab5fSopenharmony_ci+// @filename: index.ts 92783af6ab5fSopenharmony_ci+import pkg from "./package.json" 92793af6ab5fSopenharmony_ci+export const name = pkg.name; 92803af6ab5fSopenharmony_ci+import * as ns from "./package.json"; 92813af6ab5fSopenharmony_ci+export const thing = ns; 92823af6ab5fSopenharmony_ci+export const name2 = ns.default.name; 92833af6ab5fSopenharmony_ci+// @filename: index.cts 92843af6ab5fSopenharmony_ci+import pkg from "./package.json" 92853af6ab5fSopenharmony_ci+export const name = pkg.name; 92863af6ab5fSopenharmony_ci+import * as ns from "./package.json"; 92873af6ab5fSopenharmony_ci+export const thing = ns; 92883af6ab5fSopenharmony_ci+export const name2 = ns.default.name; 92893af6ab5fSopenharmony_ci+// @filename: index.mts 92903af6ab5fSopenharmony_ci+import pkg from "./package.json" 92913af6ab5fSopenharmony_ci+export const name = pkg.name; 92923af6ab5fSopenharmony_ci+import * as ns from "./package.json"; 92933af6ab5fSopenharmony_ci+export const thing = ns; 92943af6ab5fSopenharmony_ci+export const name2 = ns.default.name; 92953af6ab5fSopenharmony_ci+// @filename: package.json 92963af6ab5fSopenharmony_ci+{ 92973af6ab5fSopenharmony_ci+ "name": "pkg", 92983af6ab5fSopenharmony_ci+ "version": "0.0.1", 92993af6ab5fSopenharmony_ci+ "type": "module", 93003af6ab5fSopenharmony_ci+ "default": "misedirection" 93013af6ab5fSopenharmony_ci+} 93023af6ab5fSopenharmony_ci\ No newline at end of file 93033af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesSynchronousCallErrors.ts b/tests/cases/conformance/node/nodeModulesSynchronousCallErrors.ts 93043af6ab5fSopenharmony_cinew file mode 100644 93053af6ab5fSopenharmony_ciindex 0000000000..78aa93ee17 93063af6ab5fSopenharmony_ci--- /dev/null 93073af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesSynchronousCallErrors.ts 93083af6ab5fSopenharmony_ci@@ -0,0 +1,34 @@ 93093af6ab5fSopenharmony_ci+// @module: node12,nodenext 93103af6ab5fSopenharmony_ci+// @declaration: true 93113af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 93123af6ab5fSopenharmony_ci+// cjs format file 93133af6ab5fSopenharmony_ci+import {h} from "../index.js"; 93143af6ab5fSopenharmony_ci+import mod = require("../index.js"); 93153af6ab5fSopenharmony_ci+import {f as _f} from "./index.js"; 93163af6ab5fSopenharmony_ci+import mod2 = require("./index.js"); 93173af6ab5fSopenharmony_ci+export async function f() { 93183af6ab5fSopenharmony_ci+ const mod3 = await import ("../index.js"); 93193af6ab5fSopenharmony_ci+ const mod4 = await import ("./index.js"); 93203af6ab5fSopenharmony_ci+ h(); 93213af6ab5fSopenharmony_ci+} 93223af6ab5fSopenharmony_ci+// @filename: index.ts 93233af6ab5fSopenharmony_ci+// esm format file 93243af6ab5fSopenharmony_ci+import {h as _h} from "./index.js"; 93253af6ab5fSopenharmony_ci+import mod = require("./index.js"); 93263af6ab5fSopenharmony_ci+import {f} from "./subfolder/index.js"; 93273af6ab5fSopenharmony_ci+import mod2 = require("./subfolder/index.js"); 93283af6ab5fSopenharmony_ci+export async function h() { 93293af6ab5fSopenharmony_ci+ const mod3 = await import ("./index.js"); 93303af6ab5fSopenharmony_ci+ const mod4 = await import ("./subfolder/index.js"); 93313af6ab5fSopenharmony_ci+ f(); 93323af6ab5fSopenharmony_ci+} 93333af6ab5fSopenharmony_ci+// @filename: package.json 93343af6ab5fSopenharmony_ci+{ 93353af6ab5fSopenharmony_ci+ "name": "package", 93363af6ab5fSopenharmony_ci+ "private": true, 93373af6ab5fSopenharmony_ci+ "type": "module" 93383af6ab5fSopenharmony_ci+} 93393af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 93403af6ab5fSopenharmony_ci+{ 93413af6ab5fSopenharmony_ci+ "type": "commonjs" 93423af6ab5fSopenharmony_ci+} 93433af6ab5fSopenharmony_ci\ No newline at end of file 93443af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesTopLevelAwait.ts b/tests/cases/conformance/node/nodeModulesTopLevelAwait.ts 93453af6ab5fSopenharmony_cinew file mode 100644 93463af6ab5fSopenharmony_ciindex 0000000000..2fbd5d3b0c 93473af6ab5fSopenharmony_ci--- /dev/null 93483af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesTopLevelAwait.ts 93493af6ab5fSopenharmony_ci@@ -0,0 +1,22 @@ 93503af6ab5fSopenharmony_ci+// @module: node12,nodenext 93513af6ab5fSopenharmony_ci+// @declaration: true 93523af6ab5fSopenharmony_ci+// @filename: subfolder/index.ts 93533af6ab5fSopenharmony_ci+// cjs format file 93543af6ab5fSopenharmony_ci+const x = await 1; 93553af6ab5fSopenharmony_ci+export {x}; 93563af6ab5fSopenharmony_ci+for await (const y of []) {} 93573af6ab5fSopenharmony_ci+// @filename: index.ts 93583af6ab5fSopenharmony_ci+// esm format file 93593af6ab5fSopenharmony_ci+const x = await 1; 93603af6ab5fSopenharmony_ci+export {x}; 93613af6ab5fSopenharmony_ci+for await (const y of []) {} 93623af6ab5fSopenharmony_ci+// @filename: package.json 93633af6ab5fSopenharmony_ci+{ 93643af6ab5fSopenharmony_ci+ "name": "package", 93653af6ab5fSopenharmony_ci+ "private": true, 93663af6ab5fSopenharmony_ci+ "type": "module" 93673af6ab5fSopenharmony_ci+} 93683af6ab5fSopenharmony_ci+// @filename: subfolder/package.json 93693af6ab5fSopenharmony_ci+{ 93703af6ab5fSopenharmony_ci+ "type": "commonjs" 93713af6ab5fSopenharmony_ci+} 93723af6ab5fSopenharmony_ci\ No newline at end of file 93733af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodeModulesTypesVersionPackageExports.ts b/tests/cases/conformance/node/nodeModulesTypesVersionPackageExports.ts 93743af6ab5fSopenharmony_cinew file mode 100644 93753af6ab5fSopenharmony_ciindex 0000000000..52cda091b3 93763af6ab5fSopenharmony_ci--- /dev/null 93773af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodeModulesTypesVersionPackageExports.ts 93783af6ab5fSopenharmony_ci@@ -0,0 +1,53 @@ 93793af6ab5fSopenharmony_ci+// @module: node12,nodenext 93803af6ab5fSopenharmony_ci+// @declaration: true 93813af6ab5fSopenharmony_ci+// @outDir: out 93823af6ab5fSopenharmony_ci+// @filename: index.ts 93833af6ab5fSopenharmony_ci+// esm format file 93843af6ab5fSopenharmony_ci+import * as mod from "inner"; 93853af6ab5fSopenharmony_ci+mod.correctVersionApplied; 93863af6ab5fSopenharmony_ci+ 93873af6ab5fSopenharmony_ci+// @filename: index.mts 93883af6ab5fSopenharmony_ci+// esm format file 93893af6ab5fSopenharmony_ci+import * as mod from "inner"; 93903af6ab5fSopenharmony_ci+mod.correctVersionApplied; 93913af6ab5fSopenharmony_ci+ 93923af6ab5fSopenharmony_ci+// @filename: index.cts 93933af6ab5fSopenharmony_ci+// cjs format file 93943af6ab5fSopenharmony_ci+import * as mod from "inner"; 93953af6ab5fSopenharmony_ci+mod.correctVersionApplied; 93963af6ab5fSopenharmony_ci+ 93973af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.ts 93983af6ab5fSopenharmony_ci+// cjs format file 93993af6ab5fSopenharmony_ci+export const noConditionsApplied = true; 94003af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.mts 94013af6ab5fSopenharmony_ci+// esm format file 94023af6ab5fSopenharmony_ci+export const importConditionApplied = true; 94033af6ab5fSopenharmony_ci+// @filename: node_modules/inner/index.d.cts 94043af6ab5fSopenharmony_ci+// cjs format file 94053af6ab5fSopenharmony_ci+export const wrongConditionApplied = true; 94063af6ab5fSopenharmony_ci+// @filename: node_modules/inner/old-types.d.ts 94073af6ab5fSopenharmony_ci+export const noVersionApplied = true; 94083af6ab5fSopenharmony_ci+// @filename: node_modules/inner/new-types.d.ts 94093af6ab5fSopenharmony_ci+export const correctVersionApplied = true; 94103af6ab5fSopenharmony_ci+// @filename: node_modules/inner/future-types.d.ts 94113af6ab5fSopenharmony_ci+export const futureVersionApplied = true; 94123af6ab5fSopenharmony_ci+// @filename: package.json 94133af6ab5fSopenharmony_ci+{ 94143af6ab5fSopenharmony_ci+ "name": "package", 94153af6ab5fSopenharmony_ci+ "private": true, 94163af6ab5fSopenharmony_ci+ "type": "module", 94173af6ab5fSopenharmony_ci+} 94183af6ab5fSopenharmony_ci+// @filename: node_modules/inner/package.json 94193af6ab5fSopenharmony_ci+{ 94203af6ab5fSopenharmony_ci+ "name": "inner", 94213af6ab5fSopenharmony_ci+ "private": true, 94223af6ab5fSopenharmony_ci+ "exports": { 94233af6ab5fSopenharmony_ci+ ".": { 94243af6ab5fSopenharmony_ci+ "types@>=10000": "./future-types.d.ts", 94253af6ab5fSopenharmony_ci+ "types@>=1": "./new-types.d.ts", 94263af6ab5fSopenharmony_ci+ "types": "./old-types.d.ts", 94273af6ab5fSopenharmony_ci+ "import": "./index.mjs", 94283af6ab5fSopenharmony_ci+ "node": "./index.js" 94293af6ab5fSopenharmony_ci+ }, 94303af6ab5fSopenharmony_ci+ } 94313af6ab5fSopenharmony_ci+} 94323af6ab5fSopenharmony_ci\ No newline at end of file 94333af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodePackageSelfName.ts b/tests/cases/conformance/node/nodePackageSelfName.ts 94343af6ab5fSopenharmony_cinew file mode 100644 94353af6ab5fSopenharmony_ciindex 0000000000..099d9c424e 94363af6ab5fSopenharmony_ci--- /dev/null 94373af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodePackageSelfName.ts 94383af6ab5fSopenharmony_ci@@ -0,0 +1,21 @@ 94393af6ab5fSopenharmony_ci+// @module: node12,nodenext 94403af6ab5fSopenharmony_ci+// @declaration: true 94413af6ab5fSopenharmony_ci+// @filename: index.ts 94423af6ab5fSopenharmony_ci+// esm format file 94433af6ab5fSopenharmony_ci+import * as self from "package"; 94443af6ab5fSopenharmony_ci+self; 94453af6ab5fSopenharmony_ci+// @filename: index.mts 94463af6ab5fSopenharmony_ci+// esm format file 94473af6ab5fSopenharmony_ci+import * as self from "package"; 94483af6ab5fSopenharmony_ci+self; 94493af6ab5fSopenharmony_ci+// @filename: index.cts 94503af6ab5fSopenharmony_ci+// esm format file 94513af6ab5fSopenharmony_ci+import * as self from "package"; 94523af6ab5fSopenharmony_ci+self; 94533af6ab5fSopenharmony_ci+// @filename: package.json 94543af6ab5fSopenharmony_ci+{ 94553af6ab5fSopenharmony_ci+ "name": "package", 94563af6ab5fSopenharmony_ci+ "private": true, 94573af6ab5fSopenharmony_ci+ "type": "module", 94583af6ab5fSopenharmony_ci+ "exports": "./index.js" 94593af6ab5fSopenharmony_ci+} 94603af6ab5fSopenharmony_ci\ No newline at end of file 94613af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/node/nodePackageSelfNameScoped.ts b/tests/cases/conformance/node/nodePackageSelfNameScoped.ts 94623af6ab5fSopenharmony_cinew file mode 100644 94633af6ab5fSopenharmony_ciindex 0000000000..f4ef1e3798 94643af6ab5fSopenharmony_ci--- /dev/null 94653af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/node/nodePackageSelfNameScoped.ts 94663af6ab5fSopenharmony_ci@@ -0,0 +1,21 @@ 94673af6ab5fSopenharmony_ci+// @module: node12,nodenext 94683af6ab5fSopenharmony_ci+// @declaration: true 94693af6ab5fSopenharmony_ci+// @filename: index.ts 94703af6ab5fSopenharmony_ci+// esm format file 94713af6ab5fSopenharmony_ci+import * as self from "@scope/package"; 94723af6ab5fSopenharmony_ci+self; 94733af6ab5fSopenharmony_ci+// @filename: index.mts 94743af6ab5fSopenharmony_ci+// esm format file 94753af6ab5fSopenharmony_ci+import * as self from "@scope/package"; 94763af6ab5fSopenharmony_ci+self; 94773af6ab5fSopenharmony_ci+// @filename: index.cts 94783af6ab5fSopenharmony_ci+// cjs format file 94793af6ab5fSopenharmony_ci+import * as self from "@scope/package"; 94803af6ab5fSopenharmony_ci+self; 94813af6ab5fSopenharmony_ci+// @filename: package.json 94823af6ab5fSopenharmony_ci+{ 94833af6ab5fSopenharmony_ci+ "name": "@scope/package", 94843af6ab5fSopenharmony_ci+ "private": true, 94853af6ab5fSopenharmony_ci+ "type": "module", 94863af6ab5fSopenharmony_ci+ "exports": "./index.js" 94873af6ab5fSopenharmony_ci+} 94883af6ab5fSopenharmony_ci\ No newline at end of file 94893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/override/override10.ts b/tests/cases/conformance/override/override10.ts 94903af6ab5fSopenharmony_ciindex 3a8eca1632..31b904811c 100644 94913af6ab5fSopenharmony_ci--- a/tests/cases/conformance/override/override10.ts 94923af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/override/override10.ts 94933af6ab5fSopenharmony_ci@@ -9,4 +9,5 @@ abstract class Base { 94943af6ab5fSopenharmony_ci abstract class Sub extends Base { 94953af6ab5fSopenharmony_ci abstract override foo(): number; 94963af6ab5fSopenharmony_ci bar() { } 94973af6ab5fSopenharmony_ci-} 94983af6ab5fSopenharmony_ci\ No newline at end of file 94993af6ab5fSopenharmony_ci+} 95003af6ab5fSopenharmony_ci+let aa =new Sub(); 95013af6ab5fSopenharmony_ci\ No newline at end of file 95023af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/override/override12.ts b/tests/cases/conformance/override/override12.ts 95033af6ab5fSopenharmony_ciindex 304caf1627..084c248b37 100644 95043af6ab5fSopenharmony_ci--- a/tests/cases/conformance/override/override12.ts 95053af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/override/override12.ts 95063af6ab5fSopenharmony_ci@@ -24,3 +24,4 @@ class B extends A { 95073af6ab5fSopenharmony_ci 95083af6ab5fSopenharmony_ci override m3(): void {} 95093af6ab5fSopenharmony_ci } 95103af6ab5fSopenharmony_ci+let qq13 = new B(); 95113af6ab5fSopenharmony_ci\ No newline at end of file 95123af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/override/override15.ts b/tests/cases/conformance/override/override15.ts 95133af6ab5fSopenharmony_cinew file mode 100644 95143af6ab5fSopenharmony_ciindex 0000000000..882cc7eb97 95153af6ab5fSopenharmony_ci--- /dev/null 95163af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/override/override15.ts 95173af6ab5fSopenharmony_ci@@ -0,0 +1,9 @@ 95183af6ab5fSopenharmony_ci+// @noImplicitOverride: true 95193af6ab5fSopenharmony_ci+ 95203af6ab5fSopenharmony_ci+class A { 95213af6ab5fSopenharmony_ci+ doSomething() {} 95223af6ab5fSopenharmony_ci+} 95233af6ab5fSopenharmony_ci+ 95243af6ab5fSopenharmony_ci+class B extends A { 95253af6ab5fSopenharmony_ci+ override doSomethang() {} 95263af6ab5fSopenharmony_ci+} 95273af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/override/override16.ts b/tests/cases/conformance/override/override16.ts 95283af6ab5fSopenharmony_ciindex 4468edfdc4..b869c89311 100644 95293af6ab5fSopenharmony_ci--- a/tests/cases/conformance/override/override16.ts 95303af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/override/override16.ts 95313af6ab5fSopenharmony_ci@@ -8,3 +8,4 @@ class A { 95323af6ab5fSopenharmony_ci class B extends A { 95333af6ab5fSopenharmony_ci override foo = "string"; 95343af6ab5fSopenharmony_ci } 95353af6ab5fSopenharmony_ci+let qq12 = new B(); 95363af6ab5fSopenharmony_ci\ No newline at end of file 95373af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/override/override17.ts b/tests/cases/conformance/override/override17.ts 95383af6ab5fSopenharmony_ciindex edabe9816d..a5f92ef955 100644 95393af6ab5fSopenharmony_ci--- a/tests/cases/conformance/override/override17.ts 95403af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/override/override17.ts 95413af6ab5fSopenharmony_ci@@ -25,3 +25,4 @@ class B extends A { 95423af6ab5fSopenharmony_ci 95433af6ab5fSopenharmony_ci override m3(): void {} 95443af6ab5fSopenharmony_ci } 95453af6ab5fSopenharmony_ci+let qq11 = new B(); 95463af6ab5fSopenharmony_ci\ No newline at end of file 95473af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/override/override18.ts b/tests/cases/conformance/override/override18.ts 95483af6ab5fSopenharmony_ciindex 2527449e74..6d4d132193 100644 95493af6ab5fSopenharmony_ci--- a/tests/cases/conformance/override/override18.ts 95503af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/override/override18.ts 95513af6ab5fSopenharmony_ci@@ -9,3 +9,4 @@ class A { 95523af6ab5fSopenharmony_ci class B extends A { 95533af6ab5fSopenharmony_ci override foo = "string"; 95543af6ab5fSopenharmony_ci } 95553af6ab5fSopenharmony_ci+let qq7 = new B(); 95563af6ab5fSopenharmony_ci\ No newline at end of file 95573af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/override/override19.ts b/tests/cases/conformance/override/override19.ts 95583af6ab5fSopenharmony_cinew file mode 100644 95593af6ab5fSopenharmony_ciindex 0000000000..63e5cd9994 95603af6ab5fSopenharmony_ci--- /dev/null 95613af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/override/override19.ts 95623af6ab5fSopenharmony_ci@@ -0,0 +1,20 @@ 95633af6ab5fSopenharmony_ci+// @target: esnext 95643af6ab5fSopenharmony_ci+// @noImplicitOverride: true 95653af6ab5fSopenharmony_ci+ 95663af6ab5fSopenharmony_ci+type Foo = abstract new(...args: any) => any; 95673af6ab5fSopenharmony_ci+declare function CreateMixin<C extends Foo, T extends Foo>(Context: C, Base: T): T & { 95683af6ab5fSopenharmony_ci+ new (...args: any[]): { context: InstanceType<C> } 95693af6ab5fSopenharmony_ci+} 95703af6ab5fSopenharmony_ci+class Context {} 95713af6ab5fSopenharmony_ci+ 95723af6ab5fSopenharmony_ci+class A { 95733af6ab5fSopenharmony_ci+ doSomething() {} 95743af6ab5fSopenharmony_ci+} 95753af6ab5fSopenharmony_ci+ 95763af6ab5fSopenharmony_ci+class B extends CreateMixin(Context, A) { 95773af6ab5fSopenharmony_ci+ override foo() {} // Remove override 95783af6ab5fSopenharmony_ci+} 95793af6ab5fSopenharmony_ci+ 95803af6ab5fSopenharmony_ci+class C extends CreateMixin(Context, A) { 95813af6ab5fSopenharmony_ci+ override doSomethang() {} // Suggestion 'doSomething' 95823af6ab5fSopenharmony_ci+} 95833af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/override/override20.ts b/tests/cases/conformance/override/override20.ts 95843af6ab5fSopenharmony_cinew file mode 100644 95853af6ab5fSopenharmony_ciindex 0000000000..9835cd9135 95863af6ab5fSopenharmony_ci--- /dev/null 95873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/override/override20.ts 95883af6ab5fSopenharmony_ci@@ -0,0 +1,34 @@ 95893af6ab5fSopenharmony_ci+// @target: esnext 95903af6ab5fSopenharmony_ci+// @noImplicitOverride: true 95913af6ab5fSopenharmony_ci+ 95923af6ab5fSopenharmony_ci+const Foo: C1 & C2 = 95933af6ab5fSopenharmony_ci+ class { 95943af6ab5fSopenharmony_ci+ m1() { } 95953af6ab5fSopenharmony_ci+ m2() { } 95963af6ab5fSopenharmony_ci+ } 95973af6ab5fSopenharmony_ci+ 95983af6ab5fSopenharmony_ci+interface I1 { 95993af6ab5fSopenharmony_ci+ m1(): void; 96003af6ab5fSopenharmony_ci+} 96013af6ab5fSopenharmony_ci+ 96023af6ab5fSopenharmony_ci+interface I2 { 96033af6ab5fSopenharmony_ci+ m1(): void; 96043af6ab5fSopenharmony_ci+ m2(): void; 96053af6ab5fSopenharmony_ci+} 96063af6ab5fSopenharmony_ci+ 96073af6ab5fSopenharmony_ci+interface C1 { 96083af6ab5fSopenharmony_ci+ new(...args: any[]): I1; 96093af6ab5fSopenharmony_ci+} 96103af6ab5fSopenharmony_ci+ 96113af6ab5fSopenharmony_ci+interface C2 { 96123af6ab5fSopenharmony_ci+ new(...args: any[]): I2; 96133af6ab5fSopenharmony_ci+} 96143af6ab5fSopenharmony_ci+ 96153af6ab5fSopenharmony_ci+export class Bar extends Foo { 96163af6ab5fSopenharmony_ci+ m1() { 96173af6ab5fSopenharmony_ci+ super.m1(); 96183af6ab5fSopenharmony_ci+ } 96193af6ab5fSopenharmony_ci+ m2() { 96203af6ab5fSopenharmony_ci+ super.m2(); 96213af6ab5fSopenharmony_ci+ } 96223af6ab5fSopenharmony_ci+} 96233af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/override/override_js1.ts b/tests/cases/conformance/override/override_js1.ts 96243af6ab5fSopenharmony_ciindex 75df72695e..d327d1dbcf 100644 96253af6ab5fSopenharmony_ci--- a/tests/cases/conformance/override/override_js1.ts 96263af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/override/override_js1.ts 96273af6ab5fSopenharmony_ci@@ -22,4 +22,6 @@ class C { 96283af6ab5fSopenharmony_ci fooo (v) {} 96293af6ab5fSopenharmony_ci /** @override */ 96303af6ab5fSopenharmony_ci bar(v) {} 96313af6ab5fSopenharmony_ci-} 96323af6ab5fSopenharmony_ci\ No newline at end of file 96333af6ab5fSopenharmony_ci+} 96343af6ab5fSopenharmony_ci+let qq8 = new D(); 96353af6ab5fSopenharmony_ci+let qq9 = new C(); 96363af6ab5fSopenharmony_ci\ No newline at end of file 96373af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/override/override_js4.ts b/tests/cases/conformance/override/override_js4.ts 96383af6ab5fSopenharmony_cinew file mode 100644 96393af6ab5fSopenharmony_ciindex 0000000000..f5a7f1b6c4 96403af6ab5fSopenharmony_ci--- /dev/null 96413af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/override/override_js4.ts 96423af6ab5fSopenharmony_ci@@ -0,0 +1,14 @@ 96433af6ab5fSopenharmony_ci+// @noImplicitOverride: true 96443af6ab5fSopenharmony_ci+// @allowJs: true 96453af6ab5fSopenharmony_ci+// @checkJs: true 96463af6ab5fSopenharmony_ci+// @noEmit: true 96473af6ab5fSopenharmony_ci+ 96483af6ab5fSopenharmony_ci+// @Filename: a.js 96493af6ab5fSopenharmony_ci+class A { 96503af6ab5fSopenharmony_ci+ doSomething() {} 96513af6ab5fSopenharmony_ci+} 96523af6ab5fSopenharmony_ci+ 96533af6ab5fSopenharmony_ci+class B extends A { 96543af6ab5fSopenharmony_ci+ /** @override */ 96553af6ab5fSopenharmony_ci+ doSomethang() {} 96563af6ab5fSopenharmony_ci+} 96573af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration16.ts b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration16.ts 96583af6ab5fSopenharmony_ciindex b345892ec2..39a09037ca 100644 96593af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration16.ts 96603af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration16.ts 96613af6ab5fSopenharmony_ci@@ -1,4 +1,5 @@ 96623af6ab5fSopenharmony_ci class C { 96633af6ab5fSopenharmony_ci foo(); 96643af6ab5fSopenharmony_ci foo() { } 96653af6ab5fSopenharmony_ci-} 96663af6ab5fSopenharmony_ci\ No newline at end of file 96673af6ab5fSopenharmony_ci+} 96683af6ab5fSopenharmony_ci+let q19 = new C(); 96693af6ab5fSopenharmony_ci\ No newline at end of file 96703af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration17.ts b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration17.ts 96713af6ab5fSopenharmony_ciindex a709f7d7bc..08f7560759 100644 96723af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration17.ts 96733af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration17.ts 96743af6ab5fSopenharmony_ci@@ -5,3 +5,4 @@ declare class Enumerator { 96753af6ab5fSopenharmony_ci public item(): any; 96763af6ab5fSopenharmony_ci constructor (o: any); 96773af6ab5fSopenharmony_ci } 96783af6ab5fSopenharmony_ci+let q22 = new Enumerator(); 96793af6ab5fSopenharmony_ci\ No newline at end of file 96803af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration19.ts b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration19.ts 96813af6ab5fSopenharmony_ciindex 65d9bd0a57..5ed5520812 100644 96823af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration19.ts 96833af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration19.ts 96843af6ab5fSopenharmony_ci@@ -1,4 +1,5 @@ 96853af6ab5fSopenharmony_ci class C { 96863af6ab5fSopenharmony_ci foo(); 96873af6ab5fSopenharmony_ci "foo"() { } 96883af6ab5fSopenharmony_ci-} 96893af6ab5fSopenharmony_ci\ No newline at end of file 96903af6ab5fSopenharmony_ci+} 96913af6ab5fSopenharmony_ci+let q18 = new C(); 96923af6ab5fSopenharmony_ci\ No newline at end of file 96933af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration20.ts b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration20.ts 96943af6ab5fSopenharmony_ciindex 6c8540e833..a2025ab46f 100644 96953af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration20.ts 96963af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration20.ts 96973af6ab5fSopenharmony_ci@@ -1,4 +1,5 @@ 96983af6ab5fSopenharmony_ci class C { 96993af6ab5fSopenharmony_ci 0(); 97003af6ab5fSopenharmony_ci "0"() { } 97013af6ab5fSopenharmony_ci-} 97023af6ab5fSopenharmony_ci\ No newline at end of file 97033af6ab5fSopenharmony_ci+} 97043af6ab5fSopenharmony_ci+let q23 = new C(); 97053af6ab5fSopenharmony_ci\ No newline at end of file 97063af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration23.ts b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration23.ts 97073af6ab5fSopenharmony_ciindex 5720f935a6..7ff1604575 100644 97083af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration23.ts 97093af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration23.ts 97103af6ab5fSopenharmony_ci@@ -1,2 +1,3 @@ 97113af6ab5fSopenharmony_ci class C\u0032 { 97123af6ab5fSopenharmony_ci-} 97133af6ab5fSopenharmony_ci\ No newline at end of file 97143af6ab5fSopenharmony_ci+} 97153af6ab5fSopenharmony_ci+let q17 = new C\u0032(); 97163af6ab5fSopenharmony_ci\ No newline at end of file 97173af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration26.ts b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration26.ts 97183af6ab5fSopenharmony_ciindex 4d5395733a..fbefb55710 100644 97193af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration26.ts 97203af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration26.ts 97213af6ab5fSopenharmony_ci@@ -1,4 +1,5 @@ 97223af6ab5fSopenharmony_ci class C { 97233af6ab5fSopenharmony_ci var 97243af6ab5fSopenharmony_ci public 97253af6ab5fSopenharmony_ci-} 97263af6ab5fSopenharmony_ci\ No newline at end of file 97273af6ab5fSopenharmony_ci+} 97283af6ab5fSopenharmony_ci+let q20 = new C(); 97293af6ab5fSopenharmony_ci\ No newline at end of file 97303af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclarationIndexSignature1.ts b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclarationIndexSignature1.ts 97313af6ab5fSopenharmony_ciindex b99c0c6f48..bae31847e0 100644 97323af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclarationIndexSignature1.ts 97333af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclarationIndexSignature1.ts 97343af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 97353af6ab5fSopenharmony_ci class C { 97363af6ab5fSopenharmony_ci [index:number]:number 97373af6ab5fSopenharmony_ci-} 97383af6ab5fSopenharmony_ci\ No newline at end of file 97393af6ab5fSopenharmony_ci+} 97403af6ab5fSopenharmony_ci+let q21 = new C(); 97413af6ab5fSopenharmony_ci\ No newline at end of file 97423af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration1.ts b/tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration1.ts 97433af6ab5fSopenharmony_ciindex b845118647..024f143cad 100644 97443af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration1.ts 97453af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration1.ts 97463af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 97473af6ab5fSopenharmony_ci class C { 97483af6ab5fSopenharmony_ci public constructor() { } 97493af6ab5fSopenharmony_ci-} 97503af6ab5fSopenharmony_ci\ No newline at end of file 97513af6ab5fSopenharmony_ci+} 97523af6ab5fSopenharmony_ci+let q24 = new C(); 97533af6ab5fSopenharmony_ci\ No newline at end of file 97543af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration5.ts b/tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration5.ts 97553af6ab5fSopenharmony_ciindex f445d70c88..7305a4098d 100644 97563af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration5.ts 97573af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ConstructorDeclarations/parserConstructorDeclaration5.ts 97583af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 97593af6ab5fSopenharmony_ci class C { 97603af6ab5fSopenharmony_ci private constructor() { } 97613af6ab5fSopenharmony_ci-} 97623af6ab5fSopenharmony_ci\ No newline at end of file 97633af6ab5fSopenharmony_ci+} 97643af6ab5fSopenharmony_ci+let q25 = new C(); 97653af6ab5fSopenharmony_ci\ No newline at end of file 97663af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic11.ts b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic11.ts 97673af6ab5fSopenharmony_ciindex 5ebd8f13ae..bd99e7cfb1 100644 97683af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic11.ts 97693af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic11.ts 97703af6ab5fSopenharmony_ci@@ -2,3 +2,4 @@ class Outer 97713af6ab5fSopenharmony_ci { 97723af6ab5fSopenharmony_ci static public() {} 97733af6ab5fSopenharmony_ci } 97743af6ab5fSopenharmony_ci+let q12 = new Outer(); 97753af6ab5fSopenharmony_ci\ No newline at end of file 97763af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic14.ts b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic14.ts 97773af6ab5fSopenharmony_ciindex 23fb870f86..474e281b08 100644 97783af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic14.ts 97793af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic14.ts 97803af6ab5fSopenharmony_ci@@ -2,3 +2,4 @@ class Outer 97813af6ab5fSopenharmony_ci { 97823af6ab5fSopenharmony_ci static public<T>() {} 97833af6ab5fSopenharmony_ci } 97843af6ab5fSopenharmony_ci+let q14 = new Outer(); 97853af6ab5fSopenharmony_ci\ No newline at end of file 97863af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic2.ts b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic2.ts 97873af6ab5fSopenharmony_ciindex 30045cf9f0..dfc01652e7 100644 97883af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic2.ts 97893af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic2.ts 97903af6ab5fSopenharmony_ci@@ -2,3 +2,4 @@ class Outer 97913af6ab5fSopenharmony_ci { 97923af6ab5fSopenharmony_ci static public; 97933af6ab5fSopenharmony_ci } 97943af6ab5fSopenharmony_ci+let q11 = new Outer(); 97953af6ab5fSopenharmony_ci\ No newline at end of file 97963af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic3.ts b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic3.ts 97973af6ab5fSopenharmony_ciindex c2f462b71a..f38fc7ee97 100644 97983af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic3.ts 97993af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic3.ts 98003af6ab5fSopenharmony_ci@@ -2,3 +2,4 @@ class Outer 98013af6ab5fSopenharmony_ci { 98023af6ab5fSopenharmony_ci static public = 1; 98033af6ab5fSopenharmony_ci } 98043af6ab5fSopenharmony_ci+let q9 = new Outer(); 98053af6ab5fSopenharmony_ci\ No newline at end of file 98063af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic4.ts b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic4.ts 98073af6ab5fSopenharmony_ciindex fe0ed44cf0..41f075c30c 100644 98083af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic4.ts 98093af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic4.ts 98103af6ab5fSopenharmony_ci@@ -2,3 +2,4 @@ class Outer 98113af6ab5fSopenharmony_ci { 98123af6ab5fSopenharmony_ci static public: number; 98133af6ab5fSopenharmony_ci } 98143af6ab5fSopenharmony_ci+let q13 = new Outer(); 98153af6ab5fSopenharmony_ci\ No newline at end of file 98163af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic5.ts b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic5.ts 98173af6ab5fSopenharmony_ciindex 49db39132c..ea9593bb53 100644 98183af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic5.ts 98193af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic5.ts 98203af6ab5fSopenharmony_ci@@ -2,3 +2,4 @@ class Outer 98213af6ab5fSopenharmony_ci { 98223af6ab5fSopenharmony_ci static public 98233af6ab5fSopenharmony_ci } 98243af6ab5fSopenharmony_ci+let q0 = new Outer(); 98253af6ab5fSopenharmony_ci\ No newline at end of file 98263af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericClass1.ts b/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericClass1.ts 98273af6ab5fSopenharmony_ciindex 237910839d..a814947c9e 100644 98283af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericClass1.ts 98293af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericClass1.ts 98303af6ab5fSopenharmony_ci@@ -1,2 +1,3 @@ 98313af6ab5fSopenharmony_ci class C<T> { 98323af6ab5fSopenharmony_ci-} 98333af6ab5fSopenharmony_ci\ No newline at end of file 98343af6ab5fSopenharmony_ci+} 98353af6ab5fSopenharmony_ci+let q38 = new C(); 98363af6ab5fSopenharmony_ci\ No newline at end of file 98373af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericClass2.ts b/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericClass2.ts 98383af6ab5fSopenharmony_ciindex 949f220fbd..f4f517c52c 100644 98393af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericClass2.ts 98403af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericClass2.ts 98413af6ab5fSopenharmony_ci@@ -1,2 +1,3 @@ 98423af6ab5fSopenharmony_ci class C<K,V> { 98433af6ab5fSopenharmony_ci-} 98443af6ab5fSopenharmony_ci\ No newline at end of file 98453af6ab5fSopenharmony_ci+} 98463af6ab5fSopenharmony_ci+let q40 = new C(); 98473af6ab5fSopenharmony_ci\ No newline at end of file 98483af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint1.ts b/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint1.ts 98493af6ab5fSopenharmony_ciindex 585fa7dbe1..78a9ffb4db 100644 98503af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint1.ts 98513af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint1.ts 98523af6ab5fSopenharmony_ci@@ -1,2 +1,3 @@ 98533af6ab5fSopenharmony_ci class C<T extends number> { 98543af6ab5fSopenharmony_ci-} 98553af6ab5fSopenharmony_ci\ No newline at end of file 98563af6ab5fSopenharmony_ci+} 98573af6ab5fSopenharmony_ci+let q39 = new C(); 98583af6ab5fSopenharmony_ci\ No newline at end of file 98593af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration1.ts b/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration1.ts 98603af6ab5fSopenharmony_ciindex 56ba0579b0..7de740ebab 100644 98613af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration1.ts 98623af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration1.ts 98633af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 98643af6ab5fSopenharmony_ci class C { 98653af6ab5fSopenharmony_ci [a: string]: number 98663af6ab5fSopenharmony_ci-} 98673af6ab5fSopenharmony_ci\ No newline at end of file 98683af6ab5fSopenharmony_ci+} 98693af6ab5fSopenharmony_ci+let q27 = new C(); 98703af6ab5fSopenharmony_ci\ No newline at end of file 98713af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration2.ts b/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration2.ts 98723af6ab5fSopenharmony_ciindex 34108a6e71..f0224e9379 100644 98733af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration2.ts 98743af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration2.ts 98753af6ab5fSopenharmony_ci@@ -1,4 +1,5 @@ 98763af6ab5fSopenharmony_ci class C { 98773af6ab5fSopenharmony_ci [a: string]: number 98783af6ab5fSopenharmony_ci public v: number 98793af6ab5fSopenharmony_ci-} 98803af6ab5fSopenharmony_ci\ No newline at end of file 98813af6ab5fSopenharmony_ci+} 98823af6ab5fSopenharmony_ci+let q29 = new C(); 98833af6ab5fSopenharmony_ci\ No newline at end of file 98843af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration3.ts b/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration3.ts 98853af6ab5fSopenharmony_ciindex f2180413ca..25ea575259 100644 98863af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration3.ts 98873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration3.ts 98883af6ab5fSopenharmony_ci@@ -1,4 +1,5 @@ 98893af6ab5fSopenharmony_ci class C { 98903af6ab5fSopenharmony_ci [a: string]: number; 98913af6ab5fSopenharmony_ci public v: number 98923af6ab5fSopenharmony_ci-} 98933af6ab5fSopenharmony_ci\ No newline at end of file 98943af6ab5fSopenharmony_ci+} 98953af6ab5fSopenharmony_ci+let q30 = new C(); 98963af6ab5fSopenharmony_ci\ No newline at end of file 98973af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration4.ts b/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration4.ts 98983af6ab5fSopenharmony_ciindex 498ad89d82..42622da3af 100644 98993af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration4.ts 99003af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration4.ts 99013af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 99023af6ab5fSopenharmony_ci class C { 99033af6ab5fSopenharmony_ci [a: string]: number; public v: number 99043af6ab5fSopenharmony_ci-} 99053af6ab5fSopenharmony_ci\ No newline at end of file 99063af6ab5fSopenharmony_ci+} 99073af6ab5fSopenharmony_ci+let q28 = new C(); 99083af6ab5fSopenharmony_ci\ No newline at end of file 99093af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration6.ts b/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration6.ts 99103af6ab5fSopenharmony_ciindex af180f585f..b89c199246 100644 99113af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration6.ts 99123af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/IndexMemberDeclarations/parserIndexMemberDeclaration6.ts 99133af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 99143af6ab5fSopenharmony_ci class C { 99153af6ab5fSopenharmony_ci static [x: string]: string; 99163af6ab5fSopenharmony_ci-} 99173af6ab5fSopenharmony_ci\ No newline at end of file 99183af6ab5fSopenharmony_ci+} 99193af6ab5fSopenharmony_ci+let q26 = new C(); 99203af6ab5fSopenharmony_ci\ No newline at end of file 99213af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/MemberVariableDeclarations/parserMemberVariableDeclaration5.ts b/tests/cases/conformance/parser/ecmascript5/MemberVariableDeclarations/parserMemberVariableDeclaration5.ts 99223af6ab5fSopenharmony_ciindex 98c4f9a75b..62e5062755 100644 99233af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/MemberVariableDeclarations/parserMemberVariableDeclaration5.ts 99243af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/MemberVariableDeclarations/parserMemberVariableDeclaration5.ts 99253af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 99263af6ab5fSopenharmony_ci class C { 99273af6ab5fSopenharmony_ci declare Foo; 99283af6ab5fSopenharmony_ci-} 99293af6ab5fSopenharmony_ci\ No newline at end of file 99303af6ab5fSopenharmony_ci+} 99313af6ab5fSopenharmony_ci+let q8 = new C(); 99323af6ab5fSopenharmony_ci\ No newline at end of file 99333af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/Protected/Protected3.ts b/tests/cases/conformance/parser/ecmascript5/Protected/Protected3.ts 99343af6ab5fSopenharmony_ciindex 2b07e1ca9a..765e7b650a 100644 99353af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/Protected/Protected3.ts 99363af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/Protected/Protected3.ts 99373af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 99383af6ab5fSopenharmony_ci class C { 99393af6ab5fSopenharmony_ci protected constructor() { } 99403af6ab5fSopenharmony_ci-} 99413af6ab5fSopenharmony_ci\ No newline at end of file 99423af6ab5fSopenharmony_ci+} 99433af6ab5fSopenharmony_ci+let q37 = new C(); 99443af6ab5fSopenharmony_ci\ No newline at end of file 99453af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/Protected/Protected5.ts b/tests/cases/conformance/parser/ecmascript5/Protected/Protected5.ts 99463af6ab5fSopenharmony_ciindex f0bf235a03..c1d4944d1e 100644 99473af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/Protected/Protected5.ts 99483af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/Protected/Protected5.ts 99493af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 99503af6ab5fSopenharmony_ci class C { 99513af6ab5fSopenharmony_ci protected static m() { } 99523af6ab5fSopenharmony_ci-} 99533af6ab5fSopenharmony_ci\ No newline at end of file 99543af6ab5fSopenharmony_ci+} 99553af6ab5fSopenharmony_ci+let q34 = new C(); 99563af6ab5fSopenharmony_ci\ No newline at end of file 99573af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/Protected/Protected9.ts b/tests/cases/conformance/parser/ecmascript5/Protected/Protected9.ts 99583af6ab5fSopenharmony_ciindex 4e24e28ec1..5ce2aa474a 100644 99593af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/Protected/Protected9.ts 99603af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/Protected/Protected9.ts 99613af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 99623af6ab5fSopenharmony_ci class C { 99633af6ab5fSopenharmony_ci constructor(protected p) { } 99643af6ab5fSopenharmony_ci-} 99653af6ab5fSopenharmony_ci\ No newline at end of file 99663af6ab5fSopenharmony_ci+} 99673af6ab5fSopenharmony_ci+let q35 = new C(null); 99683af6ab5fSopenharmony_ci\ No newline at end of file 99693af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546.ts b/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546.ts 99703af6ab5fSopenharmony_ciindex bfb48ee0e3..29d488ffbc 100644 99713af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546.ts 99723af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546.ts 99733af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 99743af6ab5fSopenharmony_ci export class Logger { 99753af6ab5fSopenharmony_ci public 99763af6ab5fSopenharmony_ci } 99773af6ab5fSopenharmony_ci+let q32 = new Logger(); 99783af6ab5fSopenharmony_ci\ No newline at end of file 99793af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546_1.ts b/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546_1.ts 99803af6ab5fSopenharmony_ciindex bfb48ee0e3..18eeed1a6d 100644 99813af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546_1.ts 99823af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546_1.ts 99833af6ab5fSopenharmony_ci@@ -1,3 +1,4 @@ 99843af6ab5fSopenharmony_ci export class Logger { 99853af6ab5fSopenharmony_ci public 99863af6ab5fSopenharmony_ci } 99873af6ab5fSopenharmony_ci+let q31 = new Logger(); 99883af6ab5fSopenharmony_ci\ No newline at end of file 99893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546_2.ts b/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546_2.ts 99903af6ab5fSopenharmony_ciindex ca1a460120..a4609ba88c 100644 99913af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546_2.ts 99923af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509546_2.ts 99933af6ab5fSopenharmony_ci@@ -3,3 +3,4 @@ 99943af6ab5fSopenharmony_ci export class Logger { 99953af6ab5fSopenharmony_ci public 99963af6ab5fSopenharmony_ci } 99973af6ab5fSopenharmony_ci+let q23 = new Logger(); 99983af6ab5fSopenharmony_ci\ No newline at end of file 99993af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript5/parserUnicode3.ts b/tests/cases/conformance/parser/ecmascript5/parserUnicode3.ts 100003af6ab5fSopenharmony_ciindex bb5f00ea71..99802e72b5 100644 100013af6ab5fSopenharmony_ci--- a/tests/cases/conformance/parser/ecmascript5/parserUnicode3.ts 100023af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript5/parserUnicode3.ts 100033af6ab5fSopenharmony_ci@@ -1,2 +1,3 @@ 100043af6ab5fSopenharmony_ci class 剩下 { 100053af6ab5fSopenharmony_ci-} 100063af6ab5fSopenharmony_ci\ No newline at end of file 100073af6ab5fSopenharmony_ci+} 100083af6ab5fSopenharmony_ci+let q5 = new 剩下(); 100093af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement22.ts b/tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement22.ts 100103af6ab5fSopenharmony_cinew file mode 100644 100113af6ab5fSopenharmony_ciindex 0000000000..87f569dbfb 100123af6ab5fSopenharmony_ci--- /dev/null 100133af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement22.ts 100143af6ab5fSopenharmony_ci@@ -0,0 +1,4 @@ 100153af6ab5fSopenharmony_ci+// @target: esnext 100163af6ab5fSopenharmony_ci+ 100173af6ab5fSopenharmony_ci+var async; 100183af6ab5fSopenharmony_ci+for (async of [1, 2]) {} 100193af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement23.ts b/tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement23.ts 100203af6ab5fSopenharmony_cinew file mode 100644 100213af6ab5fSopenharmony_ciindex 0000000000..5a3601380b 100223af6ab5fSopenharmony_ci--- /dev/null 100233af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement23.ts 100243af6ab5fSopenharmony_ci@@ -0,0 +1,6 @@ 100253af6ab5fSopenharmony_ci+// @target: esnext 100263af6ab5fSopenharmony_ci+ 100273af6ab5fSopenharmony_ci+async function foo(x: any) { 100283af6ab5fSopenharmony_ci+ var async; 100293af6ab5fSopenharmony_ci+ for await (async of x) {} 100303af6ab5fSopenharmony_ci+} 100313af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement24.ts b/tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement24.ts 100323af6ab5fSopenharmony_cinew file mode 100644 100333af6ab5fSopenharmony_ciindex 0000000000..3846bd0a91 100343af6ab5fSopenharmony_ci--- /dev/null 100353af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement24.ts 100363af6ab5fSopenharmony_ci@@ -0,0 +1,4 @@ 100373af6ab5fSopenharmony_ci+// @target: esnext 100383af6ab5fSopenharmony_ci+ 100393af6ab5fSopenharmony_ci+var async; 100403af6ab5fSopenharmony_ci+for ((async) of [1, 2]); 100413af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/salsa/inferringClassMembersFromAssignments3.ts b/tests/cases/conformance/salsa/inferringClassMembersFromAssignments3.ts 100423af6ab5fSopenharmony_ciindex 800bd368db..f713920ad5 100644 100433af6ab5fSopenharmony_ci--- a/tests/cases/conformance/salsa/inferringClassMembersFromAssignments3.ts 100443af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/salsa/inferringClassMembersFromAssignments3.ts 100453af6ab5fSopenharmony_ci@@ -14,3 +14,4 @@ class Derived extends Base { 100463af6ab5fSopenharmony_ci this.p = 1 100473af6ab5fSopenharmony_ci } 100483af6ab5fSopenharmony_ci } 100493af6ab5fSopenharmony_ci+let w1 = new Derived(); 100503af6ab5fSopenharmony_ci\ No newline at end of file 100513af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/salsa/plainJSBinderErrors.ts b/tests/cases/conformance/salsa/plainJSBinderErrors.ts 100523af6ab5fSopenharmony_cinew file mode 100644 100533af6ab5fSopenharmony_ciindex 0000000000..d2019e3f78 100543af6ab5fSopenharmony_ci--- /dev/null 100553af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/salsa/plainJSBinderErrors.ts 100563af6ab5fSopenharmony_ci@@ -0,0 +1,44 @@ 100573af6ab5fSopenharmony_ci+// @outdir: out/ 100583af6ab5fSopenharmony_ci+// @target: esnext 100593af6ab5fSopenharmony_ci+// @allowJS: true 100603af6ab5fSopenharmony_ci+// @filename: plainJSBinderErrors.js 100613af6ab5fSopenharmony_ci+export default 12 100623af6ab5fSopenharmony_ci+export default 13 100633af6ab5fSopenharmony_ci+const await = 1 100643af6ab5fSopenharmony_ci+const yield = 2 100653af6ab5fSopenharmony_ci+async function f() { 100663af6ab5fSopenharmony_ci+ const await = 3 100673af6ab5fSopenharmony_ci+} 100683af6ab5fSopenharmony_ci+function* g() { 100693af6ab5fSopenharmony_ci+ const yield = 4 100703af6ab5fSopenharmony_ci+} 100713af6ab5fSopenharmony_ci+class C { 100723af6ab5fSopenharmony_ci+ #constructor = 5 100733af6ab5fSopenharmony_ci+ deleted() { 100743af6ab5fSopenharmony_ci+ function container(f) { 100753af6ab5fSopenharmony_ci+ delete f 100763af6ab5fSopenharmony_ci+ } 100773af6ab5fSopenharmony_ci+ var g = 6 100783af6ab5fSopenharmony_ci+ delete g 100793af6ab5fSopenharmony_ci+ delete container 100803af6ab5fSopenharmony_ci+ } 100813af6ab5fSopenharmony_ci+ evalArguments() { 100823af6ab5fSopenharmony_ci+ const eval = 7 100833af6ab5fSopenharmony_ci+ const arguments = 8 100843af6ab5fSopenharmony_ci+ } 100853af6ab5fSopenharmony_ci+ withOctal() { 100863af6ab5fSopenharmony_ci+ const redundant = 010 100873af6ab5fSopenharmony_ci+ with (redundant) { 100883af6ab5fSopenharmony_ci+ return toFixed() 100893af6ab5fSopenharmony_ci+ } 100903af6ab5fSopenharmony_ci+ } 100913af6ab5fSopenharmony_ci+ label() { 100923af6ab5fSopenharmony_ci+ for(;;) { 100933af6ab5fSopenharmony_ci+ label: var x = 1 100943af6ab5fSopenharmony_ci+ break label 100953af6ab5fSopenharmony_ci+ } 100963af6ab5fSopenharmony_ci+ return x 100973af6ab5fSopenharmony_ci+ } 100983af6ab5fSopenharmony_ci+} 100993af6ab5fSopenharmony_ci+const eval = 9 101003af6ab5fSopenharmony_ci+const arguments = 10 101013af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/salsa/plainJSRedeclare.ts b/tests/cases/conformance/salsa/plainJSRedeclare.ts 101023af6ab5fSopenharmony_cinew file mode 100644 101033af6ab5fSopenharmony_ciindex 0000000000..be6831d0cd 101043af6ab5fSopenharmony_ci--- /dev/null 101053af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/salsa/plainJSRedeclare.ts 101063af6ab5fSopenharmony_ci@@ -0,0 +1,6 @@ 101073af6ab5fSopenharmony_ci+// @outdir: out/ 101083af6ab5fSopenharmony_ci+// @allowJS: true 101093af6ab5fSopenharmony_ci+// @filename: plainJSRedeclare.js 101103af6ab5fSopenharmony_ci+const orbitol = 1 101113af6ab5fSopenharmony_ci+var orbitol = 1 + false 101123af6ab5fSopenharmony_ci+orbitol.toExponential() 101133af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/salsa/plainJSRedeclare2.ts b/tests/cases/conformance/salsa/plainJSRedeclare2.ts 101143af6ab5fSopenharmony_cinew file mode 100644 101153af6ab5fSopenharmony_ciindex 0000000000..7409b6c8fe 101163af6ab5fSopenharmony_ci--- /dev/null 101173af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/salsa/plainJSRedeclare2.ts 101183af6ab5fSopenharmony_ci@@ -0,0 +1,7 @@ 101193af6ab5fSopenharmony_ci+// @outdir: out/ 101203af6ab5fSopenharmony_ci+// @allowJS: true 101213af6ab5fSopenharmony_ci+// @checkJS: true 101223af6ab5fSopenharmony_ci+// @filename: plainJSRedeclare.js 101233af6ab5fSopenharmony_ci+const orbitol = 1 101243af6ab5fSopenharmony_ci+var orbitol = 1 + false 101253af6ab5fSopenharmony_ci+orbitol.toExponential() 101263af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/salsa/plainJSRedeclare3.ts b/tests/cases/conformance/salsa/plainJSRedeclare3.ts 101273af6ab5fSopenharmony_cinew file mode 100644 101283af6ab5fSopenharmony_ciindex 0000000000..1327fcfc17 101293af6ab5fSopenharmony_ci--- /dev/null 101303af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/salsa/plainJSRedeclare3.ts 101313af6ab5fSopenharmony_ci@@ -0,0 +1,7 @@ 101323af6ab5fSopenharmony_ci+// @outdir: out/ 101333af6ab5fSopenharmony_ci+// @allowJS: true 101343af6ab5fSopenharmony_ci+// @checkJS: false 101353af6ab5fSopenharmony_ci+// @filename: plainJSRedeclare.js 101363af6ab5fSopenharmony_ci+const orbitol = 1 101373af6ab5fSopenharmony_ci+var orbitol = 1 + false 101383af6ab5fSopenharmony_ci+orbitol.toExponential() 101393af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/salsa/plainJSReservedStrict.ts b/tests/cases/conformance/salsa/plainJSReservedStrict.ts 101403af6ab5fSopenharmony_cinew file mode 100644 101413af6ab5fSopenharmony_ciindex 0000000000..fbd654927d 101423af6ab5fSopenharmony_ci--- /dev/null 101433af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/salsa/plainJSReservedStrict.ts 101443af6ab5fSopenharmony_ci@@ -0,0 +1,7 @@ 101453af6ab5fSopenharmony_ci+// @outdir: out/ 101463af6ab5fSopenharmony_ci+// @target: esnext 101473af6ab5fSopenharmony_ci+// @allowJS: true 101483af6ab5fSopenharmony_ci+// @filename: plainJSReservedStrict.js 101493af6ab5fSopenharmony_ci+"use strict" 101503af6ab5fSopenharmony_ci+const eval = 1 101513af6ab5fSopenharmony_ci+const arguments = 2 101523af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/salsa/spellingUncheckedJS.ts b/tests/cases/conformance/salsa/spellingUncheckedJS.ts 101533af6ab5fSopenharmony_cinew file mode 100644 101543af6ab5fSopenharmony_ciindex 0000000000..d5a1e8ac56 101553af6ab5fSopenharmony_ci--- /dev/null 101563af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/salsa/spellingUncheckedJS.ts 101573af6ab5fSopenharmony_ci@@ -0,0 +1,51 @@ 101583af6ab5fSopenharmony_ci+// @noEmit: true 101593af6ab5fSopenharmony_ci+// @allowJs: true 101603af6ab5fSopenharmony_ci+// @filename: spellingUncheckedJS.js 101613af6ab5fSopenharmony_ci+export var inModule = 1 101623af6ab5fSopenharmony_ci+inmodule.toFixed() 101633af6ab5fSopenharmony_ci+ 101643af6ab5fSopenharmony_ci+function f() { 101653af6ab5fSopenharmony_ci+ var locals = 2 + true 101663af6ab5fSopenharmony_ci+ locale.toFixed() 101673af6ab5fSopenharmony_ci+ // @ts-expect-error 101683af6ab5fSopenharmony_ci+ localf.toExponential() 101693af6ab5fSopenharmony_ci+ // @ts-expect-error 101703af6ab5fSopenharmony_ci+ "this is fine" 101713af6ab5fSopenharmony_ci+} 101723af6ab5fSopenharmony_ci+class Classe { 101733af6ab5fSopenharmony_ci+ non = 'oui' 101743af6ab5fSopenharmony_ci+ methode() { 101753af6ab5fSopenharmony_ci+ // no error on 'this' references 101763af6ab5fSopenharmony_ci+ return this.none 101773af6ab5fSopenharmony_ci+ } 101783af6ab5fSopenharmony_ci+} 101793af6ab5fSopenharmony_ci+class Derivee extends Classe { 101803af6ab5fSopenharmony_ci+ methode() { 101813af6ab5fSopenharmony_ci+ // no error on 'super' references 101823af6ab5fSopenharmony_ci+ return super.none 101833af6ab5fSopenharmony_ci+ } 101843af6ab5fSopenharmony_ci+} 101853af6ab5fSopenharmony_ci+ 101863af6ab5fSopenharmony_ci+ 101873af6ab5fSopenharmony_ci+var object = { 101883af6ab5fSopenharmony_ci+ spaaace: 3 101893af6ab5fSopenharmony_ci+} 101903af6ab5fSopenharmony_ci+object.spaaaace // error on read 101913af6ab5fSopenharmony_ci+object.spaace = 12 // error on write 101923af6ab5fSopenharmony_ci+object.fresh = 12 // OK 101933af6ab5fSopenharmony_ci+other.puuuce // OK, from another file 101943af6ab5fSopenharmony_ci+new Date().getGMTDate() // OK, from another file 101953af6ab5fSopenharmony_ci+ 101963af6ab5fSopenharmony_ci+// No suggestions for globals from other files 101973af6ab5fSopenharmony_ci+const atoc = setIntegral(() => console.log('ok'), 500) 101983af6ab5fSopenharmony_ci+AudioBuffin // etc 101993af6ab5fSopenharmony_ci+Jimmy 102003af6ab5fSopenharmony_ci+Jon 102013af6ab5fSopenharmony_ci+ 102023af6ab5fSopenharmony_ci+// @filename: other.js 102033af6ab5fSopenharmony_ci+var Jimmy = 1 102043af6ab5fSopenharmony_ci+var John = 2 102053af6ab5fSopenharmony_ci+Jon // error, it's from the same file 102063af6ab5fSopenharmony_ci+var other = { 102073af6ab5fSopenharmony_ci+ puuce: 4 102083af6ab5fSopenharmony_ci+} 102093af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/salsa/typeFromJSInitializer2.ts b/tests/cases/conformance/salsa/typeFromJSInitializer2.ts 102103af6ab5fSopenharmony_cinew file mode 100644 102113af6ab5fSopenharmony_ciindex 0000000000..c1d5857624 102123af6ab5fSopenharmony_ci--- /dev/null 102133af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/salsa/typeFromJSInitializer2.ts 102143af6ab5fSopenharmony_ci@@ -0,0 +1,18 @@ 102153af6ab5fSopenharmony_ci+// @allowJs: true 102163af6ab5fSopenharmony_ci+// @checkJs: true 102173af6ab5fSopenharmony_ci+// @noEmit: true 102183af6ab5fSopenharmony_ci+// @strictNullChecks: true 102193af6ab5fSopenharmony_ci+// @noImplicitAny: true 102203af6ab5fSopenharmony_ci+// @Filename: a.js 102213af6ab5fSopenharmony_ci+ 102223af6ab5fSopenharmony_ci+/** @type {() => undefined} */ 102233af6ab5fSopenharmony_ci+function f1() { 102243af6ab5fSopenharmony_ci+ return undefined; 102253af6ab5fSopenharmony_ci+} 102263af6ab5fSopenharmony_ci+const a = f1() 102273af6ab5fSopenharmony_ci+ 102283af6ab5fSopenharmony_ci+/** @type {() => null} */ 102293af6ab5fSopenharmony_ci+function f2() { 102303af6ab5fSopenharmony_ci+ return null; 102313af6ab5fSopenharmony_ci+} 102323af6ab5fSopenharmony_ci+const b = f2() 102333af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/salsa/typeFromJSInitializer3.ts b/tests/cases/conformance/salsa/typeFromJSInitializer3.ts 102343af6ab5fSopenharmony_cinew file mode 100644 102353af6ab5fSopenharmony_ciindex 0000000000..c5100df43d 102363af6ab5fSopenharmony_ci--- /dev/null 102373af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/salsa/typeFromJSInitializer3.ts 102383af6ab5fSopenharmony_ci@@ -0,0 +1,18 @@ 102393af6ab5fSopenharmony_ci+// @allowJs: true 102403af6ab5fSopenharmony_ci+// @checkJs: true 102413af6ab5fSopenharmony_ci+// @noEmit: true 102423af6ab5fSopenharmony_ci+// @strictNullChecks: false 102433af6ab5fSopenharmony_ci+// @noImplicitAny: true 102443af6ab5fSopenharmony_ci+// @Filename: a.js 102453af6ab5fSopenharmony_ci+ 102463af6ab5fSopenharmony_ci+/** @type {() => undefined} */ 102473af6ab5fSopenharmony_ci+function f1() { 102483af6ab5fSopenharmony_ci+ return undefined; 102493af6ab5fSopenharmony_ci+} 102503af6ab5fSopenharmony_ci+const a = f1() 102513af6ab5fSopenharmony_ci+ 102523af6ab5fSopenharmony_ci+/** @type {() => null} */ 102533af6ab5fSopenharmony_ci+function f2() { 102543af6ab5fSopenharmony_ci+ return null; 102553af6ab5fSopenharmony_ci+} 102563af6ab5fSopenharmony_ci+const b = f2() 102573af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/salsa/typeFromJSInitializer4.ts b/tests/cases/conformance/salsa/typeFromJSInitializer4.ts 102583af6ab5fSopenharmony_cinew file mode 100644 102593af6ab5fSopenharmony_ciindex 0000000000..02d16c45a2 102603af6ab5fSopenharmony_ci--- /dev/null 102613af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/salsa/typeFromJSInitializer4.ts 102623af6ab5fSopenharmony_ci@@ -0,0 +1,29 @@ 102633af6ab5fSopenharmony_ci+// @allowJs: true 102643af6ab5fSopenharmony_ci+// @checkJs: true 102653af6ab5fSopenharmony_ci+// @noEmit: true 102663af6ab5fSopenharmony_ci+// @strictNullChecks: false 102673af6ab5fSopenharmony_ci+// @noImplicitAny: true 102683af6ab5fSopenharmony_ci+// @Filename: a.js 102693af6ab5fSopenharmony_ci+ 102703af6ab5fSopenharmony_ci+/** @type {number | undefined} */ 102713af6ab5fSopenharmony_ci+var n; 102723af6ab5fSopenharmony_ci+ 102733af6ab5fSopenharmony_ci+// should get any on parameter initialisers 102743af6ab5fSopenharmony_ci+function f(a = null, b = n, l = []) { 102753af6ab5fSopenharmony_ci+ // a should be any 102763af6ab5fSopenharmony_ci+ a = undefined 102773af6ab5fSopenharmony_ci+ a = null 102783af6ab5fSopenharmony_ci+ a = 1 102793af6ab5fSopenharmony_ci+ a = true 102803af6ab5fSopenharmony_ci+ a = {} 102813af6ab5fSopenharmony_ci+ a = 'ok' 102823af6ab5fSopenharmony_ci+ 102833af6ab5fSopenharmony_ci+ // b should be number | undefined, not any 102843af6ab5fSopenharmony_ci+ b = 1 102853af6ab5fSopenharmony_ci+ b = undefined 102863af6ab5fSopenharmony_ci+ b = 'error' 102873af6ab5fSopenharmony_ci+ 102883af6ab5fSopenharmony_ci+ // l should be any[] 102893af6ab5fSopenharmony_ci+ l.push(1) 102903af6ab5fSopenharmony_ci+ l.push('ok') 102913af6ab5fSopenharmony_ci+} 102923af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/salsa/typeFromPropertyAssignment23.ts b/tests/cases/conformance/salsa/typeFromPropertyAssignment23.ts 102933af6ab5fSopenharmony_ciindex 18923e0a5a..1dafa91c28 100644 102943af6ab5fSopenharmony_ci--- a/tests/cases/conformance/salsa/typeFromPropertyAssignment23.ts 102953af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/salsa/typeFromPropertyAssignment23.ts 102963af6ab5fSopenharmony_ci@@ -35,3 +35,6 @@ class NormalModule extends Module { 102973af6ab5fSopenharmony_ci return 0 102983af6ab5fSopenharmony_ci } 102993af6ab5fSopenharmony_ci } 103003af6ab5fSopenharmony_ci+let cc = new C(); 103013af6ab5fSopenharmony_ci+let dd = new D(); 103023af6ab5fSopenharmony_ci+let mo = new NormalModule(); 103033af6ab5fSopenharmony_ci\ No newline at end of file 103043af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/statements/for-inStatements/for-inStatementsAsyncIdentifier.ts b/tests/cases/conformance/statements/for-inStatements/for-inStatementsAsyncIdentifier.ts 103053af6ab5fSopenharmony_cinew file mode 100644 103063af6ab5fSopenharmony_ciindex 0000000000..ae63dd3136 103073af6ab5fSopenharmony_ci--- /dev/null 103083af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/statements/for-inStatements/for-inStatementsAsyncIdentifier.ts 103093af6ab5fSopenharmony_ci@@ -0,0 +1,4 @@ 103103af6ab5fSopenharmony_ci+// @target: esnext 103113af6ab5fSopenharmony_ci+ 103123af6ab5fSopenharmony_ci+var async; 103133af6ab5fSopenharmony_ci+for (async in { a: 1, b: 2 }) {} 103143af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/statements/returnStatements/returnStatements.ts b/tests/cases/conformance/statements/returnStatements/returnStatements.ts 103153af6ab5fSopenharmony_ciindex ce764c1f11..945b98944c 100644 103163af6ab5fSopenharmony_ci--- a/tests/cases/conformance/statements/returnStatements/returnStatements.ts 103173af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/statements/returnStatements/returnStatements.ts 103183af6ab5fSopenharmony_ci@@ -21,3 +21,4 @@ function fn10(): I { return { id: 12 }; } 103193af6ab5fSopenharmony_ci function fn11(): I { return new C(); } 103203af6ab5fSopenharmony_ci function fn12(): C { return new D(); } 103213af6ab5fSopenharmony_ci function fn13(): C { return null; } 103223af6ab5fSopenharmony_ci+let q41 = new D(); 103233af6ab5fSopenharmony_ci\ No newline at end of file 103243af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/statements/throwStatements/throwInEnclosingStatements.ts b/tests/cases/conformance/statements/throwStatements/throwInEnclosingStatements.ts 103253af6ab5fSopenharmony_ciindex c5875327b5..313b2b7169 100644 103263af6ab5fSopenharmony_ci--- a/tests/cases/conformance/statements/throwStatements/throwInEnclosingStatements.ts 103273af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/statements/throwStatements/throwInEnclosingStatements.ts 103283af6ab5fSopenharmony_ci@@ -45,3 +45,4 @@ var aa = { 103293af6ab5fSopenharmony_ci throw this; 103303af6ab5fSopenharmony_ci } 103313af6ab5fSopenharmony_ci } 103323af6ab5fSopenharmony_ci+let q42 = new C(); 103333af6ab5fSopenharmony_ci\ No newline at end of file 103343af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/any/anyAsGenericFunctionCall.ts b/tests/cases/conformance/types/any/anyAsGenericFunctionCall.ts 103353af6ab5fSopenharmony_ciindex 9529b5b9a3..7996e18343 100644 103363af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/any/anyAsGenericFunctionCall.ts 103373af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/any/anyAsGenericFunctionCall.ts 103383af6ab5fSopenharmony_ci@@ -7,4 +7,6 @@ var b = x<string>('hello'); 103393af6ab5fSopenharmony_ci 103403af6ab5fSopenharmony_ci class C { foo: string; } 103413af6ab5fSopenharmony_ci var c = x<C>(x); 103423af6ab5fSopenharmony_ci-var d = x<any>(x); 103433af6ab5fSopenharmony_ci\ No newline at end of file 103443af6ab5fSopenharmony_ci+var d = x<any>(x); 103453af6ab5fSopenharmony_ci+ 103463af6ab5fSopenharmony_ci+let c1 = new C(); 103473af6ab5fSopenharmony_ci\ No newline at end of file 103483af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/any/assignAnyToEveryType.ts b/tests/cases/conformance/types/any/assignAnyToEveryType.ts 103493af6ab5fSopenharmony_ciindex 0af7d94d7b..aba7eb4753 100644 103503af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/any/assignAnyToEveryType.ts 103513af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/any/assignAnyToEveryType.ts 103523af6ab5fSopenharmony_ci@@ -42,4 +42,6 @@ M = x; 103533af6ab5fSopenharmony_ci 103543af6ab5fSopenharmony_ci function k<T>(a: T) { 103553af6ab5fSopenharmony_ci a = x; 103563af6ab5fSopenharmony_ci-} 103573af6ab5fSopenharmony_ci\ No newline at end of file 103583af6ab5fSopenharmony_ci+} 103593af6ab5fSopenharmony_ci+ 103603af6ab5fSopenharmony_ci+let c1 = new C(); 103613af6ab5fSopenharmony_ci\ No newline at end of file 103623af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/any/assignEveryTypeToAny.ts b/tests/cases/conformance/types/any/assignEveryTypeToAny.ts 103633af6ab5fSopenharmony_ciindex 8613550fc5..0f7f258e87 100644 103643af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/any/assignEveryTypeToAny.ts 103653af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/any/assignEveryTypeToAny.ts 103663af6ab5fSopenharmony_ci@@ -52,4 +52,6 @@ x = { f<T>(x: T) { return x; } } 103673af6ab5fSopenharmony_ci 103683af6ab5fSopenharmony_ci function j<T>(a: T) { 103693af6ab5fSopenharmony_ci x = a; 103703af6ab5fSopenharmony_ci-} 103713af6ab5fSopenharmony_ci\ No newline at end of file 103723af6ab5fSopenharmony_ci+} 103733af6ab5fSopenharmony_ci+ 103743af6ab5fSopenharmony_ci+let c1 = new C(); 103753af6ab5fSopenharmony_ci\ No newline at end of file 103763af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/conditional/variance.ts b/tests/cases/conformance/types/conditional/variance.ts 103773af6ab5fSopenharmony_ciindex 1dd5db5c67..433eab8e01 100644 103783af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/conditional/variance.ts 103793af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/conditional/variance.ts 103803af6ab5fSopenharmony_ci@@ -25,3 +25,5 @@ class Bar<T extends string> { 103813af6ab5fSopenharmony_ci Bar.instance.push(this); 103823af6ab5fSopenharmony_ci } 103833af6ab5fSopenharmony_ci } 103843af6ab5fSopenharmony_ci+ 103853af6ab5fSopenharmony_ci+let ba = new Bar(); 103863af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/contextualTypes/partiallyAnnotatedFunction/partiallyAnnotatedFunctionInferenceWithTypeParameter.ts b/tests/cases/conformance/types/contextualTypes/partiallyAnnotatedFunction/partiallyAnnotatedFunctionInferenceWithTypeParameter.ts 103873af6ab5fSopenharmony_ciindex 530d506f64..87069a602d 100644 103883af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/contextualTypes/partiallyAnnotatedFunction/partiallyAnnotatedFunctionInferenceWithTypeParameter.ts 103893af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/contextualTypes/partiallyAnnotatedFunction/partiallyAnnotatedFunctionInferenceWithTypeParameter.ts 103903af6ab5fSopenharmony_ci@@ -31,3 +31,6 @@ testRest((t1: D, t2, t3) => {}) 103913af6ab5fSopenharmony_ci testRest((t1, t2: D, t3) => {}) 103923af6ab5fSopenharmony_ci testRest((t2: D, ...t3) => {}) 103933af6ab5fSopenharmony_ci testRest((t2, ...t3: D[]) => {}) 103943af6ab5fSopenharmony_ci+ 103953af6ab5fSopenharmony_ci+ 103963af6ab5fSopenharmony_ci+let d = new D(); 103973af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/import/importTypeAmbient.ts b/tests/cases/conformance/types/import/importTypeAmbient.ts 103983af6ab5fSopenharmony_ciindex b1ba463777..3345c3ac06 100644 103993af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/import/importTypeAmbient.ts 104003af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/import/importTypeAmbient.ts 104013af6ab5fSopenharmony_ci@@ -28,8 +28,8 @@ declare module "foo2" { 104023af6ab5fSopenharmony_ci item: Bar.I; 104033af6ab5fSopenharmony_ci constructor(input: Baz.J); 104043af6ab5fSopenharmony_ci } 104053af6ab5fSopenharmony_ci+ 104063af6ab5fSopenharmony_ci } 104073af6ab5fSopenharmony_ci- 104083af6ab5fSopenharmony_ci let y: import("foo2").Bar.I = { a: "", b: 0 }; 104093af6ab5fSopenharmony_ci 104103af6ab5fSopenharmony_ci class Bar2 { 104113af6ab5fSopenharmony_ci@@ -40,3 +40,6 @@ class Bar2 { 104123af6ab5fSopenharmony_ci let shim: typeof import("foo2") = { 104133af6ab5fSopenharmony_ci Bar: Bar2 104143af6ab5fSopenharmony_ci }; 104153af6ab5fSopenharmony_ci+ 104163af6ab5fSopenharmony_ci+var a; 104173af6ab5fSopenharmony_ci+let ba1 = new Bar2(a); 104183af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/import/importTypeGenericTypes.ts b/tests/cases/conformance/types/import/importTypeGenericTypes.ts 104193af6ab5fSopenharmony_ciindex 5bc3aa7802..cf808fc6e3 100644 104203af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/import/importTypeGenericTypes.ts 104213af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/import/importTypeGenericTypes.ts 104223af6ab5fSopenharmony_ci@@ -29,9 +29,10 @@ class Bar<T> { 104233af6ab5fSopenharmony_ci item: Bar.I<T>; 104243af6ab5fSopenharmony_ci constructor(input: Baz.J<T>) {} 104253af6ab5fSopenharmony_ci } 104263af6ab5fSopenharmony_ci+let bbb = new Bar(null); 104273af6ab5fSopenharmony_ci export { Bar } 104283af6ab5fSopenharmony_ci 104293af6ab5fSopenharmony_ci-// @filename: usage.ts 104303af6ab5fSopenharmony_ci+// @filename: usage. 104313af6ab5fSopenharmony_ci export const x: import("./foo")<{x: number}> = { x: 0, y: 0, data: {x: 12} }; 104323af6ab5fSopenharmony_ci export let y: import("./foo2").Bar.I<{x: number}> = { a: "", b: 0, data: {x: 12} }; 104333af6ab5fSopenharmony_ci 104343af6ab5fSopenharmony_ci@@ -43,3 +44,5 @@ export class Bar2<T> { 104353af6ab5fSopenharmony_ci export let shim: typeof import("./foo2") = { 104363af6ab5fSopenharmony_ci Bar: Bar2 104373af6ab5fSopenharmony_ci }; 104383af6ab5fSopenharmony_ci+ 104393af6ab5fSopenharmony_ci+let ba2 = new Bar2(1); 104403af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/import/importTypeLocal.ts b/tests/cases/conformance/types/import/importTypeLocal.ts 104413af6ab5fSopenharmony_ciindex 4f29a22285..6fe5ab1c18 100644 104423af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/import/importTypeLocal.ts 104433af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/import/importTypeLocal.ts 104443af6ab5fSopenharmony_ci@@ -26,8 +26,11 @@ class Bar { 104453af6ab5fSopenharmony_ci item: Bar.I; 104463af6ab5fSopenharmony_ci constructor(input: Baz.J) {} 104473af6ab5fSopenharmony_ci } 104483af6ab5fSopenharmony_ci+let bbb = new Bar(null) 104493af6ab5fSopenharmony_ci export { Bar } 104503af6ab5fSopenharmony_ci 104513af6ab5fSopenharmony_ci+ 104523af6ab5fSopenharmony_ci+ 104533af6ab5fSopenharmony_ci // @filename: usage.ts 104543af6ab5fSopenharmony_ci export const x: import("./foo") = { x: 0, y: 0 }; 104553af6ab5fSopenharmony_ci export let y: import("./foo2").Bar.I = { a: "", b: 0 }; 104563af6ab5fSopenharmony_ci@@ -40,3 +43,5 @@ export class Bar2 { 104573af6ab5fSopenharmony_ci export let shim: typeof import("./foo2") = { 104583af6ab5fSopenharmony_ci Bar: Bar2 104593af6ab5fSopenharmony_ci }; 104603af6ab5fSopenharmony_ci+ 104613af6ab5fSopenharmony_ci+let ba2 = new Bar2(); 104623af6ab5fSopenharmony_ci\ No newline at end of file 104633af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/intersection/intersectionOfUnionNarrowing.ts b/tests/cases/conformance/types/intersection/intersectionOfUnionNarrowing.ts 104643af6ab5fSopenharmony_cinew file mode 100644 104653af6ab5fSopenharmony_ciindex 0000000000..0f67b66bff 104663af6ab5fSopenharmony_ci--- /dev/null 104673af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/intersection/intersectionOfUnionNarrowing.ts 104683af6ab5fSopenharmony_ci@@ -0,0 +1,16 @@ 104693af6ab5fSopenharmony_ci+// @strict: true 104703af6ab5fSopenharmony_ci+ 104713af6ab5fSopenharmony_ci+interface X { 104723af6ab5fSopenharmony_ci+ a?: { aProp: string }; 104733af6ab5fSopenharmony_ci+ b?: { bProp: string }; 104743af6ab5fSopenharmony_ci+} 104753af6ab5fSopenharmony_ci+type AorB = { a: object; b: undefined } | { a: undefined; b: object }; 104763af6ab5fSopenharmony_ci+ 104773af6ab5fSopenharmony_ci+declare const q: X & AorB; 104783af6ab5fSopenharmony_ci+ 104793af6ab5fSopenharmony_ci+if (q.a !== undefined) { 104803af6ab5fSopenharmony_ci+ q.a.aProp; 104813af6ab5fSopenharmony_ci+} else { 104823af6ab5fSopenharmony_ci+ // q.b is previously incorrectly inferred as potentially undefined 104833af6ab5fSopenharmony_ci+ q.b.bProp; 104843af6ab5fSopenharmony_ci+} 104853af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/keyof/keyofAndIndexedAccess.ts b/tests/cases/conformance/types/keyof/keyofAndIndexedAccess.ts 104863af6ab5fSopenharmony_ciindex 56ff157a67..7c7d0b13e0 100644 104873af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/keyof/keyofAndIndexedAccess.ts 104883af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/keyof/keyofAndIndexedAccess.ts 104893af6ab5fSopenharmony_ci@@ -658,3 +658,23 @@ const cf2 = <T extends { [P in K | "cool"]: string; }, K extends keyof T>(t: T, 104903af6ab5fSopenharmony_ci const s: string = t[k]; 104913af6ab5fSopenharmony_ci t.cool; 104923af6ab5fSopenharmony_ci }; 104933af6ab5fSopenharmony_ci+ 104943af6ab5fSopenharmony_ci+let shape = new Shape(); 104953af6ab5fSopenharmony_ci+let ta1 = new TaggedShape(); 104963af6ab5fSopenharmony_ci+let it = new Item(); 104973af6ab5fSopenharmony_ci+let op = new Options(); 104983af6ab5fSopenharmony_ci+let com1 = new Component(); 104993af6ab5fSopenharmony_ci+let c11 = new C(); 105003af6ab5fSopenharmony_ci+let c12 = new C1(); 105013af6ab5fSopenharmony_ci+let ba1 = new Base(); 105023af6ab5fSopenharmony_ci+let per = new Person(1); 105033af6ab5fSopenharmony_ci+let oth = new OtherPerson(1); 105043af6ab5fSopenharmony_ci+var aa; 105053af6ab5fSopenharmony_ci+let com2 = new Component1(aa); 105063af6ab5fSopenharmony_ci+let com3 = new Component2(aa); 105073af6ab5fSopenharmony_ci+let a11 = new A(); 105083af6ab5fSopenharmony_ci+let b11 = new B(); 105093af6ab5fSopenharmony_ci+let fo = new Form(); 105103af6ab5fSopenharmony_ci+let sam = new SampleClass(1); 105113af6ab5fSopenharmony_ci+let ano = new AnotherSampleClass(1); 105123af6ab5fSopenharmony_ci+let unb = new Unbounded(); 105133af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/literal/literalTypes2.ts b/tests/cases/conformance/types/literal/literalTypes2.ts 105143af6ab5fSopenharmony_ciindex 57e7a0bc74..46b1479857 100644 105153af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/literal/literalTypes2.ts 105163af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/literal/literalTypes2.ts 105173af6ab5fSopenharmony_ci@@ -176,3 +176,6 @@ type Bit = 0 | 1; 105183af6ab5fSopenharmony_ci 105193af6ab5fSopenharmony_ci let aa = makeArray<Bit>(0); 105203af6ab5fSopenharmony_ci aa = append(aa, 1); 105213af6ab5fSopenharmony_ci+ 105223af6ab5fSopenharmony_ci+let c1 = new C1(); 105233af6ab5fSopenharmony_ci+let c2 = new C2(); 105243af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/localTypes/localTypes2.ts b/tests/cases/conformance/types/localTypes/localTypes2.ts 105253af6ab5fSopenharmony_ciindex 79f1402c70..2b81f903ac 100644 105263af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/localTypes/localTypes2.ts 105273af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/localTypes/localTypes2.ts 105283af6ab5fSopenharmony_ci@@ -3,6 +3,7 @@ function f1() { 105293af6ab5fSopenharmony_ci class C { 105303af6ab5fSopenharmony_ci constructor(public x: number, public y: number) { } 105313af6ab5fSopenharmony_ci } 105323af6ab5fSopenharmony_ci+ let c = new C(1,2); 105333af6ab5fSopenharmony_ci return C; 105343af6ab5fSopenharmony_ci } 105353af6ab5fSopenharmony_ci let C = f(); 105363af6ab5fSopenharmony_ci@@ -17,6 +18,7 @@ function f2() { 105373af6ab5fSopenharmony_ci public x = x; 105383af6ab5fSopenharmony_ci constructor(public y: number) { } 105393af6ab5fSopenharmony_ci } 105403af6ab5fSopenharmony_ci+ let c = new C(1); 105413af6ab5fSopenharmony_ci return C; 105423af6ab5fSopenharmony_ci } 105433af6ab5fSopenharmony_ci let C = f(10); 105443af6ab5fSopenharmony_ci@@ -31,6 +33,7 @@ function f3() { 105453af6ab5fSopenharmony_ci public x = x; 105463af6ab5fSopenharmony_ci public y = y; 105473af6ab5fSopenharmony_ci } 105483af6ab5fSopenharmony_ci+ let c = new C(); 105493af6ab5fSopenharmony_ci return C; 105503af6ab5fSopenharmony_ci } 105513af6ab5fSopenharmony_ci let C = f(10, 20); 105523af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/localTypes/localTypes3.ts b/tests/cases/conformance/types/localTypes/localTypes3.ts 105533af6ab5fSopenharmony_ciindex 5eb3cf2850..7b1e536270 100644 105543af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/localTypes/localTypes3.ts 105553af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/localTypes/localTypes3.ts 105563af6ab5fSopenharmony_ci@@ -3,6 +3,7 @@ function f1() { 105573af6ab5fSopenharmony_ci class C<X, Y> { 105583af6ab5fSopenharmony_ci constructor(public x: X, public y: Y) { } 105593af6ab5fSopenharmony_ci } 105603af6ab5fSopenharmony_ci+ let c = new C(1,2); 105613af6ab5fSopenharmony_ci return C; 105623af6ab5fSopenharmony_ci } 105633af6ab5fSopenharmony_ci let C = f(); 105643af6ab5fSopenharmony_ci@@ -17,6 +18,7 @@ function f2() { 105653af6ab5fSopenharmony_ci public x = x; 105663af6ab5fSopenharmony_ci constructor(public y: Y) { } 105673af6ab5fSopenharmony_ci } 105683af6ab5fSopenharmony_ci+ let c = new C(1); 105693af6ab5fSopenharmony_ci return C; 105703af6ab5fSopenharmony_ci } 105713af6ab5fSopenharmony_ci let C = f(10); 105723af6ab5fSopenharmony_ci@@ -31,6 +33,7 @@ function f3() { 105733af6ab5fSopenharmony_ci public x = x; 105743af6ab5fSopenharmony_ci public y = y; 105753af6ab5fSopenharmony_ci } 105763af6ab5fSopenharmony_ci+ let c = new C(); 105773af6ab5fSopenharmony_ci return C; 105783af6ab5fSopenharmony_ci } 105793af6ab5fSopenharmony_ci let C = f(10, "hello"); 105803af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/mapped/mappedTypeAsClauseRelationships.ts b/tests/cases/conformance/types/mapped/mappedTypeAsClauseRelationships.ts 105813af6ab5fSopenharmony_cinew file mode 100644 105823af6ab5fSopenharmony_ciindex 0000000000..051192159e 105833af6ab5fSopenharmony_ci--- /dev/null 105843af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/mapped/mappedTypeAsClauseRelationships.ts 105853af6ab5fSopenharmony_ci@@ -0,0 +1,27 @@ 105863af6ab5fSopenharmony_ci+// From original issue #45212: 105873af6ab5fSopenharmony_ci+type Methods<T> = { [P in keyof T as T[P] extends Function ? P : never]: T[P] }; 105883af6ab5fSopenharmony_ci+type H<T> = T[keyof Methods<T>]; // Ok 105893af6ab5fSopenharmony_ci+ 105903af6ab5fSopenharmony_ci+// `Filter<T>` only filters out some keys of `T`. 105913af6ab5fSopenharmony_ci+type Filter<T> = { [P in keyof T as T[P] extends Function ? P : never]: T[P] }; 105923af6ab5fSopenharmony_ci+// `Modify<T>` might modify some keys of `T`. 105933af6ab5fSopenharmony_ci+type Modify<T> = { [P in keyof T as P extends string? `bool${P}`: P]: T[P] }; 105943af6ab5fSopenharmony_ci+ 105953af6ab5fSopenharmony_ci+function fun<T>(val: T) { 105963af6ab5fSopenharmony_ci+ let x: Filter<T> = val; // Ok 105973af6ab5fSopenharmony_ci+ let y: Modify<T> = val; // Error 105983af6ab5fSopenharmony_ci+} 105993af6ab5fSopenharmony_ci+ 106003af6ab5fSopenharmony_ci+type FilterInclOpt<T> = { [P in keyof T as T[P] extends Function ? P : never]+?: T[P] }; 106013af6ab5fSopenharmony_ci+type ModifyInclOpt<T> = { [P in keyof T as P extends string? `bool${P}`: never ]+?: T[P] }; 106023af6ab5fSopenharmony_ci+type FilterExclOpt<T> = { [P in keyof T as T[P] extends Function ? P : never]-?: T[P] }; 106033af6ab5fSopenharmony_ci+type ModifyExclOpt<T> = { [P in keyof T as P extends string? `bool${P}`: never ]-?: T[P] }; 106043af6ab5fSopenharmony_ci+ 106053af6ab5fSopenharmony_ci+function fun2<T>(val: T) { 106063af6ab5fSopenharmony_ci+ let x: FilterInclOpt<T> = val; // Ok 106073af6ab5fSopenharmony_ci+ let y: ModifyInclOpt<T> = val; // Ok 106083af6ab5fSopenharmony_ci+ let z: FilterExclOpt<T> = val; // Error 106093af6ab5fSopenharmony_ci+ let w: ModifyExclOpt<T> = val; // Error 106103af6ab5fSopenharmony_ci+} 106113af6ab5fSopenharmony_ci+ 106123af6ab5fSopenharmony_ci+ 106133af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/mapped/mappedTypeProperties.ts b/tests/cases/conformance/types/mapped/mappedTypeProperties.ts 106143af6ab5fSopenharmony_cinew file mode 100644 106153af6ab5fSopenharmony_ciindex 0000000000..407e0eaf56 106163af6ab5fSopenharmony_ci--- /dev/null 106173af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/mapped/mappedTypeProperties.ts 106183af6ab5fSopenharmony_ci@@ -0,0 +1,42 @@ 106193af6ab5fSopenharmony_ci+// @declaration: true 106203af6ab5fSopenharmony_ci+export type PlaceType = 'openSky' | 'roofed' | 'garage' 106213af6ab5fSopenharmony_ci+type Before = { 106223af6ab5fSopenharmony_ci+ model: 'hour' | 'day'; 106233af6ab5fSopenharmony_ci+ [placeType in PlaceType]: void; 106243af6ab5fSopenharmony_ci+} 106253af6ab5fSopenharmony_ci+ 106263af6ab5fSopenharmony_ci+type After = { 106273af6ab5fSopenharmony_ci+ [placeType in PlaceType]: void; 106283af6ab5fSopenharmony_ci+ model: 'hour' | 'day' 106293af6ab5fSopenharmony_ci+} 106303af6ab5fSopenharmony_ci+ 106313af6ab5fSopenharmony_ci+type AfterQuestion = { 106323af6ab5fSopenharmony_ci+ [placeType in PlaceType]?: void; 106333af6ab5fSopenharmony_ci+ model: 'hour' | 'day'; 106343af6ab5fSopenharmony_ci+} 106353af6ab5fSopenharmony_ci+type AfterMethod = { 106363af6ab5fSopenharmony_ci+ [placeType in PlaceType]?: void; 106373af6ab5fSopenharmony_ci+ model(duration: number): 'hour' | 'day'; 106383af6ab5fSopenharmony_ci+} 106393af6ab5fSopenharmony_ci+ 106403af6ab5fSopenharmony_ci+type AfterImplicit = { 106413af6ab5fSopenharmony_ci+ [placeType in PlaceType] 106423af6ab5fSopenharmony_ci+ model: 'hour' | 'day'; 106433af6ab5fSopenharmony_ci+} 106443af6ab5fSopenharmony_ci+type AfterImplicitQ = { 106453af6ab5fSopenharmony_ci+ [placeType in PlaceType]? 106463af6ab5fSopenharmony_ci+ model: 'hour' | 'day' 106473af6ab5fSopenharmony_ci+} 106483af6ab5fSopenharmony_ci+ 106493af6ab5fSopenharmony_ci+interface I { 106503af6ab5fSopenharmony_ci+ [P in PlaceType]: any 106513af6ab5fSopenharmony_ci+} 106523af6ab5fSopenharmony_ci+class C { 106533af6ab5fSopenharmony_ci+ [P in PlaceType]: any 106543af6ab5fSopenharmony_ci+} 106553af6ab5fSopenharmony_ci+const D = class { 106563af6ab5fSopenharmony_ci+ [P in PlaceType]: any 106573af6ab5fSopenharmony_ci+} 106583af6ab5fSopenharmony_ci+const E = class { 106593af6ab5fSopenharmony_ci+ [P in 'a' | 'b']: any 106603af6ab5fSopenharmony_ci+} 106613af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/mapped/mappedTypes3.ts b/tests/cases/conformance/types/mapped/mappedTypes3.ts 106623af6ab5fSopenharmony_ciindex bf5a4399b0..6ef1918898 100644 106633af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/mapped/mappedTypes3.ts 106643af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/mapped/mappedTypes3.ts 106653af6ab5fSopenharmony_ci@@ -37,4 +37,6 @@ function f3(bb: BoxifiedBacon) { 106663af6ab5fSopenharmony_ci let b = unboxify<Bacon>(bb); // Explicit type parameter required 106673af6ab5fSopenharmony_ci let bool = b.isPerfect; 106683af6ab5fSopenharmony_ci let weight = bb.weight; 106693af6ab5fSopenharmony_ci-} 106703af6ab5fSopenharmony_ci\ No newline at end of file 106713af6ab5fSopenharmony_ci+} 106723af6ab5fSopenharmony_ci+ 106733af6ab5fSopenharmony_ci+let box = new Box(); 106743af6ab5fSopenharmony_ci\ No newline at end of file 106753af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/mapped/mappedTypesAndObjects.ts b/tests/cases/conformance/types/mapped/mappedTypesAndObjects.ts 106763af6ab5fSopenharmony_ciindex b3530b4696..66e25c6091 100644 106773af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/mapped/mappedTypesAndObjects.ts 106783af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/mapped/mappedTypesAndObjects.ts 106793af6ab5fSopenharmony_ci@@ -43,3 +43,5 @@ interface E3<T> extends Base { 106803af6ab5fSopenharmony_ci class Form<T> { 106813af6ab5fSopenharmony_ci private values: {[P in keyof T]?: T[P]} = {} 106823af6ab5fSopenharmony_ci } 106833af6ab5fSopenharmony_ci+ 106843af6ab5fSopenharmony_ci+let f = new Form(); 106853af6ab5fSopenharmony_ci\ No newline at end of file 106863af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/members/classWithProtectedProperty.ts b/tests/cases/conformance/types/members/classWithProtectedProperty.ts 106873af6ab5fSopenharmony_ciindex 96bc615c02..a37828eef1 100644 106883af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/members/classWithProtectedProperty.ts 106893af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/members/classWithProtectedProperty.ts 106903af6ab5fSopenharmony_ci@@ -24,4 +24,6 @@ class D extends C { 106913af6ab5fSopenharmony_ci var r7: string = C.f(); 106923af6ab5fSopenharmony_ci var r8: string = C.g(); 106933af6ab5fSopenharmony_ci } 106943af6ab5fSopenharmony_ci-} 106953af6ab5fSopenharmony_ci\ No newline at end of file 106963af6ab5fSopenharmony_ci+} 106973af6ab5fSopenharmony_ci+ 106983af6ab5fSopenharmony_ci+let d = new D(); 106993af6ab5fSopenharmony_ci\ No newline at end of file 107003af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/members/indexSignatures1.ts b/tests/cases/conformance/types/members/indexSignatures1.ts 107013af6ab5fSopenharmony_cinew file mode 100644 107023af6ab5fSopenharmony_ciindex 0000000000..f888275683 107033af6ab5fSopenharmony_ci--- /dev/null 107043af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/members/indexSignatures1.ts 107053af6ab5fSopenharmony_ci@@ -0,0 +1,325 @@ 107063af6ab5fSopenharmony_ci+// @strict: true 107073af6ab5fSopenharmony_ci+// @declaration: true 107083af6ab5fSopenharmony_ci+// @target: esnext 107093af6ab5fSopenharmony_ci+ 107103af6ab5fSopenharmony_ci+// Symbol index signature checking 107113af6ab5fSopenharmony_ci+ 107123af6ab5fSopenharmony_ci+const sym = Symbol(); 107133af6ab5fSopenharmony_ci+ 107143af6ab5fSopenharmony_ci+function gg3(x: { [key: string]: string }, y: { [key: symbol]: string }, z: { [sym]: number }) { 107153af6ab5fSopenharmony_ci+ x = z; 107163af6ab5fSopenharmony_ci+ y = z; // Error 107173af6ab5fSopenharmony_ci+} 107183af6ab5fSopenharmony_ci+ 107193af6ab5fSopenharmony_ci+// Overlapping index signatures 107203af6ab5fSopenharmony_ci+ 107213af6ab5fSopenharmony_ci+function gg1(x: { [key: `a${string}`]: string, [key: `${string}a`]: string }, y: { [key: `a${string}a`]: string }) { 107223af6ab5fSopenharmony_ci+ x = y; 107233af6ab5fSopenharmony_ci+ y = x; 107243af6ab5fSopenharmony_ci+} 107253af6ab5fSopenharmony_ci+ 107263af6ab5fSopenharmony_ci+interface IX { [key: `a${string}`]: string, [key: `${string}a`]: string } 107273af6ab5fSopenharmony_ci+interface IY { [key: `a${string}a`]: string } 107283af6ab5fSopenharmony_ci+ 107293af6ab5fSopenharmony_ci+function gg2(x: IX, y: IY) { 107303af6ab5fSopenharmony_ci+ x = y; // Error 107313af6ab5fSopenharmony_ci+ y = x; 107323af6ab5fSopenharmony_ci+} 107333af6ab5fSopenharmony_ci+ 107343af6ab5fSopenharmony_ci+// Intersection of multiple applicable index signatures 107353af6ab5fSopenharmony_ci+ 107363af6ab5fSopenharmony_ci+declare let combo: { [x: `foo-${string}`]: 'a' | 'b' } & { [x: `${string}-bar`]: 'b' | 'c' }; 107373af6ab5fSopenharmony_ci+const x1 = combo['foo-test']; // 'a' | 'b' 107383af6ab5fSopenharmony_ci+const x2 = combo['test-bar']; // 'b' | 'c' 107393af6ab5fSopenharmony_ci+const x3 = combo['foo-test-bar']; // 'b' (('a' | 'b') & ('b' | 'c')) 107403af6ab5fSopenharmony_ci+ 107413af6ab5fSopenharmony_ci+declare var str: string; 107423af6ab5fSopenharmony_ci+ 107433af6ab5fSopenharmony_ci+const x4 = combo[`foo-${str}`]; 107443af6ab5fSopenharmony_ci+const x5 = combo[`${str}-bar`]; 107453af6ab5fSopenharmony_ci+const x6 = combo[`foo-${str}-bar`]; 107463af6ab5fSopenharmony_ci+ 107473af6ab5fSopenharmony_ci+declare let combo2: { [x: `${string}xxx${string}` & `${string}yyy${string}`]: string }; 107483af6ab5fSopenharmony_ci+ 107493af6ab5fSopenharmony_ci+const x7 = combo2['axxxbyyyc']; 107503af6ab5fSopenharmony_ci+const x8 = combo2['ayyyxxxbc']; 107513af6ab5fSopenharmony_ci+const x9 = combo2['axxxbbbyc']; // Error 107523af6ab5fSopenharmony_ci+ 107533af6ab5fSopenharmony_ci+// Property access on template pattern index signature 107543af6ab5fSopenharmony_ci+ 107553af6ab5fSopenharmony_ci+declare let dom: { [x: `data${string}`]: string }; 107563af6ab5fSopenharmony_ci+const y1 = dom['data123']; 107573af6ab5fSopenharmony_ci+const y2 = dom.data123; 107583af6ab5fSopenharmony_ci+ 107593af6ab5fSopenharmony_ci+// Excess property checking for template pattern index signature 107603af6ab5fSopenharmony_ci+ 107613af6ab5fSopenharmony_ci+dom = { data123: 'hello' }; 107623af6ab5fSopenharmony_ci+dom = { date123: 'hello' }; // Error 107633af6ab5fSopenharmony_ci+ 107643af6ab5fSopenharmony_ci+// Contextual typing by index signature with template literal pattern 107653af6ab5fSopenharmony_ci+ 107663af6ab5fSopenharmony_ci+type Funcs = { 107673af6ab5fSopenharmony_ci+ [key: `s${string}`]: (x: string) => void, 107683af6ab5fSopenharmony_ci+ [key: `n${string}`]: (x: number) => void, 107693af6ab5fSopenharmony_ci+} 107703af6ab5fSopenharmony_ci+ 107713af6ab5fSopenharmony_ci+const funcs: Funcs = { 107723af6ab5fSopenharmony_ci+ sfoo: x => x.length, // x: string 107733af6ab5fSopenharmony_ci+ nfoo: x => x * 2, // n: number 107743af6ab5fSopenharmony_ci+} 107753af6ab5fSopenharmony_ci+ 107763af6ab5fSopenharmony_ci+// Duplicate index signature checking 107773af6ab5fSopenharmony_ci+ 107783af6ab5fSopenharmony_ci+type Duplicates = { 107793af6ab5fSopenharmony_ci+ [key: string | number]: any; // Error 107803af6ab5fSopenharmony_ci+ [key: number | symbol]: any; // Error 107813af6ab5fSopenharmony_ci+ [key: symbol | `foo${string}`]: any; // Error 107823af6ab5fSopenharmony_ci+ [key: `foo${string}`]: any; // Error 107833af6ab5fSopenharmony_ci+} 107843af6ab5fSopenharmony_ci+ 107853af6ab5fSopenharmony_ci+// Conflicting index signature checking 107863af6ab5fSopenharmony_ci+ 107873af6ab5fSopenharmony_ci+type Conflicting = { 107883af6ab5fSopenharmony_ci+ [key: `a${string}`]: 'a'; 107893af6ab5fSopenharmony_ci+ [key: `${string}a`]: 'b'; 107903af6ab5fSopenharmony_ci+ [key: `a${string}a`]: 'c'; // Error 107913af6ab5fSopenharmony_ci+} 107923af6ab5fSopenharmony_ci+ 107933af6ab5fSopenharmony_ci+// Invalid index signatures 107943af6ab5fSopenharmony_ci+ 107953af6ab5fSopenharmony_ci+type Invalid<T extends string> = { 107963af6ab5fSopenharmony_ci+ [key: 'a' | 'b' | 'c']: string; // Error 107973af6ab5fSopenharmony_ci+ [key: T | number]: string; // Error 107983af6ab5fSopenharmony_ci+ [key: Error]: string; // Error 107993af6ab5fSopenharmony_ci+ [key: T & string]: string; // Error 108003af6ab5fSopenharmony_ci+} 108013af6ab5fSopenharmony_ci+ 108023af6ab5fSopenharmony_ci+// Intersections in index signatures 108033af6ab5fSopenharmony_ci+ 108043af6ab5fSopenharmony_ci+type Tag1 = { __tag1__: void }; 108053af6ab5fSopenharmony_ci+type Tag2 = { __tag2__: void }; 108063af6ab5fSopenharmony_ci+ 108073af6ab5fSopenharmony_ci+type TaggedString1 = string & Tag1; 108083af6ab5fSopenharmony_ci+type TaggedString2 = string & Tag2; 108093af6ab5fSopenharmony_ci+ 108103af6ab5fSopenharmony_ci+declare let s0: string; 108113af6ab5fSopenharmony_ci+declare let s1: TaggedString1; 108123af6ab5fSopenharmony_ci+declare let s2: TaggedString2; 108133af6ab5fSopenharmony_ci+declare let s3: TaggedString1 | TaggedString2; 108143af6ab5fSopenharmony_ci+declare let s4: TaggedString1 & TaggedString2; 108153af6ab5fSopenharmony_ci+ 108163af6ab5fSopenharmony_ci+interface I1 { [key: TaggedString1]: string } 108173af6ab5fSopenharmony_ci+interface I2 { [key: TaggedString2]: string } 108183af6ab5fSopenharmony_ci+interface I3 { [key: TaggedString1 | TaggedString2]: string } 108193af6ab5fSopenharmony_ci+interface I4 { [key: TaggedString1 & TaggedString2]: string } 108203af6ab5fSopenharmony_ci+ 108213af6ab5fSopenharmony_ci+declare let i1: I1; 108223af6ab5fSopenharmony_ci+declare let i2: I2; 108233af6ab5fSopenharmony_ci+declare let i3: I3; 108243af6ab5fSopenharmony_ci+declare let i4: I4; 108253af6ab5fSopenharmony_ci+ 108263af6ab5fSopenharmony_ci+i1[s0]; // Error 108273af6ab5fSopenharmony_ci+i1[s1]; 108283af6ab5fSopenharmony_ci+i1[s2]; // Error 108293af6ab5fSopenharmony_ci+i1[s3]; // Error 108303af6ab5fSopenharmony_ci+i1[s4]; 108313af6ab5fSopenharmony_ci+ 108323af6ab5fSopenharmony_ci+i2[s0]; // Error 108333af6ab5fSopenharmony_ci+i2[s1]; // Error 108343af6ab5fSopenharmony_ci+i2[s2]; 108353af6ab5fSopenharmony_ci+i2[s3]; // Error 108363af6ab5fSopenharmony_ci+i2[s4]; 108373af6ab5fSopenharmony_ci+ 108383af6ab5fSopenharmony_ci+i3[s0]; // Error 108393af6ab5fSopenharmony_ci+i3[s1]; 108403af6ab5fSopenharmony_ci+i3[s2]; 108413af6ab5fSopenharmony_ci+i3[s3]; 108423af6ab5fSopenharmony_ci+i3[s4]; 108433af6ab5fSopenharmony_ci+ 108443af6ab5fSopenharmony_ci+i4[s0]; // Error 108453af6ab5fSopenharmony_ci+i4[s1]; // Error 108463af6ab5fSopenharmony_ci+i4[s2]; // Error 108473af6ab5fSopenharmony_ci+i4[s3]; // Error 108483af6ab5fSopenharmony_ci+i4[s4]; 108493af6ab5fSopenharmony_ci+ 108503af6ab5fSopenharmony_ci+i1 = i2; // Error 108513af6ab5fSopenharmony_ci+i1 = i3; 108523af6ab5fSopenharmony_ci+i1 = i4; // Error 108533af6ab5fSopenharmony_ci+ 108543af6ab5fSopenharmony_ci+i2 = i1; // Error 108553af6ab5fSopenharmony_ci+i2 = i3; 108563af6ab5fSopenharmony_ci+i2 = i4; // Error 108573af6ab5fSopenharmony_ci+ 108583af6ab5fSopenharmony_ci+i3 = i1; // Error 108593af6ab5fSopenharmony_ci+i3 = i2; // Error 108603af6ab5fSopenharmony_ci+i3 = i4; // Error 108613af6ab5fSopenharmony_ci+ 108623af6ab5fSopenharmony_ci+i4 = i1; 108633af6ab5fSopenharmony_ci+i4 = i2; 108643af6ab5fSopenharmony_ci+i4 = i3; 108653af6ab5fSopenharmony_ci+ 108663af6ab5fSopenharmony_ci+declare let o1: { [key: TaggedString1]: string }; 108673af6ab5fSopenharmony_ci+declare let o2: { [key: TaggedString2]: string }; 108683af6ab5fSopenharmony_ci+declare let o3: { [key: TaggedString1 | TaggedString2]: string }; 108693af6ab5fSopenharmony_ci+declare let o4: { [key: TaggedString1 & TaggedString2]: string }; 108703af6ab5fSopenharmony_ci+ 108713af6ab5fSopenharmony_ci+o1[s0]; // Error 108723af6ab5fSopenharmony_ci+o1[s1]; 108733af6ab5fSopenharmony_ci+o1[s2]; // Error 108743af6ab5fSopenharmony_ci+o1[s3]; // Error 108753af6ab5fSopenharmony_ci+o1[s4]; 108763af6ab5fSopenharmony_ci+ 108773af6ab5fSopenharmony_ci+o2[s0]; // Error 108783af6ab5fSopenharmony_ci+o2[s1]; // Error 108793af6ab5fSopenharmony_ci+o2[s2]; 108803af6ab5fSopenharmony_ci+o2[s3]; // Error 108813af6ab5fSopenharmony_ci+o2[s4]; 108823af6ab5fSopenharmony_ci+ 108833af6ab5fSopenharmony_ci+o3[s0]; // Error 108843af6ab5fSopenharmony_ci+o3[s1]; 108853af6ab5fSopenharmony_ci+o3[s2]; 108863af6ab5fSopenharmony_ci+o3[s3]; 108873af6ab5fSopenharmony_ci+o3[s4]; 108883af6ab5fSopenharmony_ci+ 108893af6ab5fSopenharmony_ci+o4[s0]; // Error 108903af6ab5fSopenharmony_ci+o4[s1]; // Error 108913af6ab5fSopenharmony_ci+o4[s2]; // Error 108923af6ab5fSopenharmony_ci+o4[s3]; // Error 108933af6ab5fSopenharmony_ci+o4[s4]; 108943af6ab5fSopenharmony_ci+ 108953af6ab5fSopenharmony_ci+o1 = o2; 108963af6ab5fSopenharmony_ci+o1 = o3; 108973af6ab5fSopenharmony_ci+o1 = o4; 108983af6ab5fSopenharmony_ci+ 108993af6ab5fSopenharmony_ci+o2 = o1; 109003af6ab5fSopenharmony_ci+o2 = o3; 109013af6ab5fSopenharmony_ci+o2 = o4; 109023af6ab5fSopenharmony_ci+ 109033af6ab5fSopenharmony_ci+o3 = o1; 109043af6ab5fSopenharmony_ci+o3 = o2; 109053af6ab5fSopenharmony_ci+o3 = o4; 109063af6ab5fSopenharmony_ci+ 109073af6ab5fSopenharmony_ci+o4 = o1; 109083af6ab5fSopenharmony_ci+o4 = o2; 109093af6ab5fSopenharmony_ci+o4 = o3; 109103af6ab5fSopenharmony_ci+ 109113af6ab5fSopenharmony_ci+// Index signatures inferred from computed property names 109123af6ab5fSopenharmony_ci+ 109133af6ab5fSopenharmony_ci+const obj10 = { 109143af6ab5fSopenharmony_ci+ ['x']: 0 as const, 109153af6ab5fSopenharmony_ci+ ['a' + 'b']: 1 as const, 109163af6ab5fSopenharmony_ci+}; 109173af6ab5fSopenharmony_ci+ 109183af6ab5fSopenharmony_ci+const obj11 = { 109193af6ab5fSopenharmony_ci+ [1]: 2 as const, 109203af6ab5fSopenharmony_ci+ [1 + 2]: 3 as const, 109213af6ab5fSopenharmony_ci+}; 109223af6ab5fSopenharmony_ci+ 109233af6ab5fSopenharmony_ci+const obj12 = { 109243af6ab5fSopenharmony_ci+ [sym]: 4 as const, 109253af6ab5fSopenharmony_ci+ [Symbol()]: 5 as const, 109263af6ab5fSopenharmony_ci+}; 109273af6ab5fSopenharmony_ci+ 109283af6ab5fSopenharmony_ci+const obj13 = { 109293af6ab5fSopenharmony_ci+ ['x']: 0 as const, 109303af6ab5fSopenharmony_ci+ ['a' + 'b']: 1 as const, 109313af6ab5fSopenharmony_ci+ [1]: 2 as const, 109323af6ab5fSopenharmony_ci+ [1 + 2]: 3 as const, 109333af6ab5fSopenharmony_ci+ [sym]: 4 as const, 109343af6ab5fSopenharmony_ci+ [Symbol()]: 5 as const, 109353af6ab5fSopenharmony_ci+}; 109363af6ab5fSopenharmony_ci+ 109373af6ab5fSopenharmony_ci+// Repros from #1863 109383af6ab5fSopenharmony_ci+ 109393af6ab5fSopenharmony_ci+const system = Symbol('system'); 109403af6ab5fSopenharmony_ci+const SomeSytePlugin = Symbol('SomeSytePlugin'); 109413af6ab5fSopenharmony_ci+ 109423af6ab5fSopenharmony_ci+interface Plugs { 109433af6ab5fSopenharmony_ci+ [key: symbol]: (...args: any) => unknown; 109443af6ab5fSopenharmony_ci+} 109453af6ab5fSopenharmony_ci+ 109463af6ab5fSopenharmony_ci+const plugins = { 109473af6ab5fSopenharmony_ci+ "user": {} as Plugs, 109483af6ab5fSopenharmony_ci+ [system]: {} as Plugs 109493af6ab5fSopenharmony_ci+}; 109503af6ab5fSopenharmony_ci+ 109513af6ab5fSopenharmony_ci+plugins[system][SomeSytePlugin] = () => console.log('awsome'); 109523af6ab5fSopenharmony_ci+plugins[system][SomeSytePlugin](); 109533af6ab5fSopenharmony_ci+ 109543af6ab5fSopenharmony_ci+var theAnswer: symbol = Symbol('secret'); 109553af6ab5fSopenharmony_ci+var obj = {} as Record<symbol, number>; 109563af6ab5fSopenharmony_ci+obj[theAnswer] = 42; 109573af6ab5fSopenharmony_ci+ 109583af6ab5fSopenharmony_ci+// Repro from #26470 109593af6ab5fSopenharmony_ci+ 109603af6ab5fSopenharmony_ci+const directive = Symbol('directive'); 109613af6ab5fSopenharmony_ci+declare function foo<TArg, TRet, TDir>(options: { [x in string]: (arg: TArg) => TRet } & { [directive]?: TDir }): void; 109623af6ab5fSopenharmony_ci+ 109633af6ab5fSopenharmony_ci+let case1 = foo({ 109643af6ab5fSopenharmony_ci+ [directive]: (x: string) => 'str', 109653af6ab5fSopenharmony_ci+ addOne: (x: number) => x + 1, 109663af6ab5fSopenharmony_ci+ double: (x: number) => x + x, 109673af6ab5fSopenharmony_ci+}); 109683af6ab5fSopenharmony_ci+ 109693af6ab5fSopenharmony_ci+let case2 = foo({ 109703af6ab5fSopenharmony_ci+ addOne: (x: number) => x + 1, 109713af6ab5fSopenharmony_ci+ double: (x: number) => x + x, 109723af6ab5fSopenharmony_ci+ [directive]: (x: string) => 'str', 109733af6ab5fSopenharmony_ci+}); 109743af6ab5fSopenharmony_ci+ 109753af6ab5fSopenharmony_ci+let case3 = foo({ 109763af6ab5fSopenharmony_ci+ [directive]: 'str', 109773af6ab5fSopenharmony_ci+ addOne: (x: number) => x + 1, 109783af6ab5fSopenharmony_ci+ double: (x: number) => x + x, 109793af6ab5fSopenharmony_ci+}); 109803af6ab5fSopenharmony_ci+ 109813af6ab5fSopenharmony_ci+// Repros from #42192 109823af6ab5fSopenharmony_ci+ 109833af6ab5fSopenharmony_ci+type Pseudo = `&:${string}`; 109843af6ab5fSopenharmony_ci+ 109853af6ab5fSopenharmony_ci+const AmIPseudo1: Pseudo = '&:test'; 109863af6ab5fSopenharmony_ci+const AmIPseudo: Pseudo = '&'; // Error 109873af6ab5fSopenharmony_ci+ 109883af6ab5fSopenharmony_ci+type PseudoDeclaration = { [key in Pseudo]: string }; 109893af6ab5fSopenharmony_ci+ 109903af6ab5fSopenharmony_ci+const test: PseudoDeclaration = { 'someKey' : 'someValue' }; // Error 109913af6ab5fSopenharmony_ci+ 109923af6ab5fSopenharmony_ci+type FieldPattern = `/${string}`; 109933af6ab5fSopenharmony_ci+ 109943af6ab5fSopenharmony_ci+const path1: FieldPattern = '/one'; 109953af6ab5fSopenharmony_ci+const path2: FieldPattern = 'two'; // Error 109963af6ab5fSopenharmony_ci+ 109973af6ab5fSopenharmony_ci+type PathsObject = { [P in FieldPattern]: object; }; 109983af6ab5fSopenharmony_ci+const pathObject: PathsObject = 123; // Error 109993af6ab5fSopenharmony_ci+ 110003af6ab5fSopenharmony_ci+type IdType = `${number}-${number}-${number}-${number}` 110013af6ab5fSopenharmony_ci+const id: IdType = '0000-0000-0000-0001'; 110023af6ab5fSopenharmony_ci+ 110033af6ab5fSopenharmony_ci+type A = Record<IdType, string>; 110043af6ab5fSopenharmony_ci+ 110053af6ab5fSopenharmony_ci+const a: A = { [id]: 'test' } 110063af6ab5fSopenharmony_ci+ 110073af6ab5fSopenharmony_ci+let aid = a[id]; 110083af6ab5fSopenharmony_ci+ 110093af6ab5fSopenharmony_ci+// Repro from #44793 110103af6ab5fSopenharmony_ci+ 110113af6ab5fSopenharmony_ci+interface AA { 110123af6ab5fSopenharmony_ci+ a?: string; 110133af6ab5fSopenharmony_ci+ b?: number; 110143af6ab5fSopenharmony_ci+ [key: symbol]: string; 110153af6ab5fSopenharmony_ci+} 110163af6ab5fSopenharmony_ci+ 110173af6ab5fSopenharmony_ci+const aa: AA = { [sym]: '123' }; 110183af6ab5fSopenharmony_ci+ 110193af6ab5fSopenharmony_ci+const obj1: { [key: symbol]: string } = { [sym]: 'hello '}; 110203af6ab5fSopenharmony_ci+const obj2: { [key: string]: string } = { [sym]: 'hello '}; // Permitted for backwards compatibility 110213af6ab5fSopenharmony_ci+const obj3: { [key: number]: string } = { [sym]: 'hello '}; // Error 110223af6ab5fSopenharmony_ci+ 110233af6ab5fSopenharmony_ci+// Repro from #45772 110243af6ab5fSopenharmony_ci+ 110253af6ab5fSopenharmony_ci+type Id = string & { __tag: 'id '}; 110263af6ab5fSopenharmony_ci+type Rec1 = { [key: Id]: number }; 110273af6ab5fSopenharmony_ci+type Rec2 = Record<Id, number>; 110283af6ab5fSopenharmony_ci+ 110293af6ab5fSopenharmony_ci+type K1 = keyof Rec1; // Id 110303af6ab5fSopenharmony_ci+type K2 = keyof Rec2; // Id 110313af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/members/objectTypeHidingMembersOfObject.ts b/tests/cases/conformance/types/members/objectTypeHidingMembersOfObject.ts 110323af6ab5fSopenharmony_ciindex 1a7d6f2be4..bc489541ae 100644 110333af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/members/objectTypeHidingMembersOfObject.ts 110343af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/members/objectTypeHidingMembersOfObject.ts 110353af6ab5fSopenharmony_ci@@ -24,4 +24,6 @@ var b: { 110363af6ab5fSopenharmony_ci valueOf(): void; 110373af6ab5fSopenharmony_ci } 110383af6ab5fSopenharmony_ci 110393af6ab5fSopenharmony_ci-var r4: void = b.valueOf(); 110403af6ab5fSopenharmony_ci\ No newline at end of file 110413af6ab5fSopenharmony_ci+var r4: void = b.valueOf(); 110423af6ab5fSopenharmony_ci+ 110433af6ab5fSopenharmony_ci+let c1 = new C(); 110443af6ab5fSopenharmony_ci\ No newline at end of file 110453af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/members/objectTypePropertyAccess.ts b/tests/cases/conformance/types/members/objectTypePropertyAccess.ts 110463af6ab5fSopenharmony_ciindex a54890fce9..e3c2cca547 100644 110473af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/members/objectTypePropertyAccess.ts 110483af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/members/objectTypePropertyAccess.ts 110493af6ab5fSopenharmony_ci@@ -26,3 +26,5 @@ var r8 = a.toString(); 110503af6ab5fSopenharmony_ci var r9 = a['toString'](); 110513af6ab5fSopenharmony_ci var r10 = a.foo; 110523af6ab5fSopenharmony_ci var r11 = a['foo']; 110533af6ab5fSopenharmony_ci+ 110543af6ab5fSopenharmony_ci+let c1 = new C(); 110553af6ab5fSopenharmony_ci\ No newline at end of file 110563af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/members/objectTypeWithNumericProperty.ts b/tests/cases/conformance/types/members/objectTypeWithNumericProperty.ts 110573af6ab5fSopenharmony_ciindex 730ab43ec9..2c1b46b5d1 100644 110583af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/members/objectTypeWithNumericProperty.ts 110593af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/members/objectTypeWithNumericProperty.ts 110603af6ab5fSopenharmony_ci@@ -40,4 +40,6 @@ var b = { 110613af6ab5fSopenharmony_ci var r1 = b[1]; 110623af6ab5fSopenharmony_ci var r2 = b[1.1]; 110633af6ab5fSopenharmony_ci var r3 = b['1']; 110643af6ab5fSopenharmony_ci-var r4 = b['1.1']; 110653af6ab5fSopenharmony_ci\ No newline at end of file 110663af6ab5fSopenharmony_ci+var r4 = b['1.1']; 110673af6ab5fSopenharmony_ci+ 110683af6ab5fSopenharmony_ci+let c1 = new C(); 110693af6ab5fSopenharmony_ci\ No newline at end of file 110703af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/members/objectTypeWithStringNamedPropertyOfIllegalCharacters.ts b/tests/cases/conformance/types/members/objectTypeWithStringNamedPropertyOfIllegalCharacters.ts 110713af6ab5fSopenharmony_ciindex 766f56bdd2..d67c011129 100644 110723af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/members/objectTypeWithStringNamedPropertyOfIllegalCharacters.ts 110733af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/members/objectTypeWithStringNamedPropertyOfIllegalCharacters.ts 110743af6ab5fSopenharmony_ci@@ -50,3 +50,5 @@ var r2 = b[" "]; 110753af6ab5fSopenharmony_ci var r3 = b["a b"]; 110763af6ab5fSopenharmony_ci // BUG 817263 110773af6ab5fSopenharmony_ci var r4 = b["~!@#$%^&*()_+{}|:'<>?\/.,`"]; 110783af6ab5fSopenharmony_ci+ 110793af6ab5fSopenharmony_ci+let c1 = new C(); 110803af6ab5fSopenharmony_ci\ No newline at end of file 110813af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/members/typesWithSpecializedCallSignatures.ts b/tests/cases/conformance/types/members/typesWithSpecializedCallSignatures.ts 110823af6ab5fSopenharmony_ciindex 9eef3476f2..9aea8f6a18 100644 110833af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/members/typesWithSpecializedCallSignatures.ts 110843af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/members/typesWithSpecializedCallSignatures.ts 110853af6ab5fSopenharmony_ci@@ -38,4 +38,7 @@ a = i; 110863af6ab5fSopenharmony_ci 110873af6ab5fSopenharmony_ci var r1: Derived1 = c.foo('hi'); 110883af6ab5fSopenharmony_ci var r2: Derived2 = c.foo('bye'); 110893af6ab5fSopenharmony_ci-var r3: Base = c.foo('hm'); 110903af6ab5fSopenharmony_ci\ No newline at end of file 110913af6ab5fSopenharmony_ci+var r3: Base = c.foo('hm'); 110923af6ab5fSopenharmony_ci+ 110933af6ab5fSopenharmony_ci+// let dev1 = new Derived1(); 110943af6ab5fSopenharmony_ci+// let dev2 = new Derived2(); 110953af6ab5fSopenharmony_ci\ No newline at end of file 110963af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/members/typesWithSpecializedConstructSignatures.ts b/tests/cases/conformance/types/members/typesWithSpecializedConstructSignatures.ts 110973af6ab5fSopenharmony_ciindex 7c84e76f14..522fad55bf 100644 110983af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/members/typesWithSpecializedConstructSignatures.ts 110993af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/members/typesWithSpecializedConstructSignatures.ts 111003af6ab5fSopenharmony_ci@@ -36,4 +36,7 @@ a = i; 111013af6ab5fSopenharmony_ci 111023af6ab5fSopenharmony_ci var r1 = new C('hi'); 111033af6ab5fSopenharmony_ci var r2: Derived2 = new i('bye'); 111043af6ab5fSopenharmony_ci-var r3: Base = new a('hm'); 111053af6ab5fSopenharmony_ci\ No newline at end of file 111063af6ab5fSopenharmony_ci+var r3: Base = new a('hm'); 111073af6ab5fSopenharmony_ci+ 111083af6ab5fSopenharmony_ci+let dev1 = new Derived1(); 111093af6ab5fSopenharmony_ci+let dev2 = new Derived2(); 111103af6ab5fSopenharmony_ci\ No newline at end of file 111113af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/namedTypes/classWithOptionalParameter.ts b/tests/cases/conformance/types/namedTypes/classWithOptionalParameter.ts 111123af6ab5fSopenharmony_ciindex 82e7de4584..97001142ae 100644 111133af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/namedTypes/classWithOptionalParameter.ts 111143af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/namedTypes/classWithOptionalParameter.ts 111153af6ab5fSopenharmony_ci@@ -8,4 +8,7 @@ class C { 111163af6ab5fSopenharmony_ci class C2<T> { 111173af6ab5fSopenharmony_ci x?: T; 111183af6ab5fSopenharmony_ci f?(x: T) {} 111193af6ab5fSopenharmony_ci-} 111203af6ab5fSopenharmony_ci\ No newline at end of file 111213af6ab5fSopenharmony_ci+} 111223af6ab5fSopenharmony_ci+ 111233af6ab5fSopenharmony_ci+let c = new C(); 111243af6ab5fSopenharmony_ci+let c2 = new C2(); 111253af6ab5fSopenharmony_ci\ No newline at end of file 111263af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/namedTypes/optionalMethods.ts b/tests/cases/conformance/types/namedTypes/optionalMethods.ts 111273af6ab5fSopenharmony_ciindex 932521425f..dc7fe5cf4c 100644 111283af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/namedTypes/optionalMethods.ts 111293af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/namedTypes/optionalMethods.ts 111303af6ab5fSopenharmony_ci@@ -56,3 +56,6 @@ class Derived extends Base { 111313af6ab5fSopenharmony_ci a = 1; 111323af6ab5fSopenharmony_ci f(): number { return 1; } 111333af6ab5fSopenharmony_ci } 111343af6ab5fSopenharmony_ci+ 111353af6ab5fSopenharmony_ci+let ba1 = new Bar(); 111363af6ab5fSopenharmony_ci+let dev = new Derived(); 111373af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/never/neverType.ts b/tests/cases/conformance/types/never/neverType.ts 111383af6ab5fSopenharmony_ciindex d58471d62a..e548194630 100644 111393af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/never/neverType.ts 111403af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/never/neverType.ts 111413af6ab5fSopenharmony_ci@@ -91,3 +91,5 @@ test(() => "hello"); 111423af6ab5fSopenharmony_ci test(() => fail()); 111433af6ab5fSopenharmony_ci test(() => { throw new Error(); }) 111443af6ab5fSopenharmony_ci test(errorCallback); 111453af6ab5fSopenharmony_ci+ 111463af6ab5fSopenharmony_ci+let c1 = new C(); 111473af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignatureWithoutReturnTypeAnnotationInference.ts b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignatureWithoutReturnTypeAnnotationInference.ts 111483af6ab5fSopenharmony_ciindex 1cc499c7d6..16fe9f1bc5 100644 111493af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignatureWithoutReturnTypeAnnotationInference.ts 111503af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignatureWithoutReturnTypeAnnotationInference.ts 111513af6ab5fSopenharmony_ci@@ -77,6 +77,7 @@ module M { 111523af6ab5fSopenharmony_ci export var x = 1; 111533af6ab5fSopenharmony_ci export class C { foo: string } 111543af6ab5fSopenharmony_ci } 111553af6ab5fSopenharmony_ci+let c2 = new M.C(); 111563af6ab5fSopenharmony_ci function foo11() { 111573af6ab5fSopenharmony_ci return M; 111583af6ab5fSopenharmony_ci } 111593af6ab5fSopenharmony_ci@@ -119,4 +120,7 @@ module e1 { export var y = 1; } 111603af6ab5fSopenharmony_ci function foo15() { 111613af6ab5fSopenharmony_ci return e1; 111623af6ab5fSopenharmony_ci } 111633af6ab5fSopenharmony_ci-var r15 = foo15(); 111643af6ab5fSopenharmony_ci\ No newline at end of file 111653af6ab5fSopenharmony_ci+var r15 = foo15(); 111663af6ab5fSopenharmony_ci+ 111673af6ab5fSopenharmony_ci+let c = new C(); 111683af6ab5fSopenharmony_ci+let c11 = new c1(1); 111693af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts 111703af6ab5fSopenharmony_ciindex d5ff0c1f56..191117eb92 100644 111713af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts 111723af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithDuplicateParameters.ts 111733af6ab5fSopenharmony_ci@@ -35,4 +35,6 @@ var b = { 111743af6ab5fSopenharmony_ci foo(x, x) { }, 111753af6ab5fSopenharmony_ci a: function foo(x: number, x: string) { }, 111763af6ab5fSopenharmony_ci b: <T>(x: T, x: T) => { } 111773af6ab5fSopenharmony_ci-} 111783af6ab5fSopenharmony_ci\ No newline at end of file 111793af6ab5fSopenharmony_ci+} 111803af6ab5fSopenharmony_ci+ 111813af6ab5fSopenharmony_ci+let c1 = new C(); 111823af6ab5fSopenharmony_ci\ No newline at end of file 111833af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithOptionalParameters.ts b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithOptionalParameters.ts 111843af6ab5fSopenharmony_ciindex 34edfba671..d285c45d78 100644 111853af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithOptionalParameters.ts 111863af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithOptionalParameters.ts 111873af6ab5fSopenharmony_ci@@ -52,3 +52,5 @@ b.a(1); 111883af6ab5fSopenharmony_ci b.a(1, 2); 111893af6ab5fSopenharmony_ci b.b(); 111903af6ab5fSopenharmony_ci b.b(1); 111913af6ab5fSopenharmony_ci+ 111923af6ab5fSopenharmony_ci+let c1 = new C(); 111933af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithOptionalParameters2.ts b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithOptionalParameters2.ts 111943af6ab5fSopenharmony_ciindex 4f31726f82..bdd01987b0 100644 111953af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithOptionalParameters2.ts 111963af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithOptionalParameters2.ts 111973af6ab5fSopenharmony_ci@@ -56,4 +56,6 @@ a(1); 111983af6ab5fSopenharmony_ci a(1, 2); 111993af6ab5fSopenharmony_ci a.foo(1); 112003af6ab5fSopenharmony_ci a.foo(1, 2); 112013af6ab5fSopenharmony_ci-a.foo(1, 2, 3); 112023af6ab5fSopenharmony_ci\ No newline at end of file 112033af6ab5fSopenharmony_ci+a.foo(1, 2, 3); 112043af6ab5fSopenharmony_ci+ 112053af6ab5fSopenharmony_ci+let c1 = new C(); 112063af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/parametersWithNoAnnotationAreAny.ts b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/parametersWithNoAnnotationAreAny.ts 112073af6ab5fSopenharmony_ciindex 432c905765..4c09ab1066 100644 112083af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/parametersWithNoAnnotationAreAny.ts 112093af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/parametersWithNoAnnotationAreAny.ts 112103af6ab5fSopenharmony_ci@@ -26,4 +26,6 @@ var b = { 112113af6ab5fSopenharmony_ci return x; 112123af6ab5fSopenharmony_ci }, 112133af6ab5fSopenharmony_ci b: (x) => x 112143af6ab5fSopenharmony_ci-} 112153af6ab5fSopenharmony_ci\ No newline at end of file 112163af6ab5fSopenharmony_ci+} 112173af6ab5fSopenharmony_ci+ 112183af6ab5fSopenharmony_ci+let c1 = new C(); 112193af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.ts b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.ts 112203af6ab5fSopenharmony_ciindex 01f33fbd7b..0aeddb657c 100644 112213af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.ts 112223af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.ts 112233af6ab5fSopenharmony_ci@@ -62,3 +62,6 @@ var a3: { 112243af6ab5fSopenharmony_ci foo(x: 'a'); 112253af6ab5fSopenharmony_ci foo<T extends String>(x: T); 112263af6ab5fSopenharmony_ci } 112273af6ab5fSopenharmony_ci+let c1 = new C(); 112283af6ab5fSopenharmony_ci+let c2 = new C2(); 112293af6ab5fSopenharmony_ci+let c3 = new C3(); 112303af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/specializedSignatureIsSubtypeOfNonSpecializedSignature.ts b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/specializedSignatureIsSubtypeOfNonSpecializedSignature.ts 112313af6ab5fSopenharmony_ciindex 70735b8edd..06ca07fbe8 100644 112323af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/specializedSignatureIsSubtypeOfNonSpecializedSignature.ts 112333af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/specializedSignatureIsSubtypeOfNonSpecializedSignature.ts 112343af6ab5fSopenharmony_ci@@ -78,3 +78,6 @@ var a3: { 112353af6ab5fSopenharmony_ci foo(x: 'a'); 112363af6ab5fSopenharmony_ci foo<T extends String>(x: T); 112373af6ab5fSopenharmony_ci } 112383af6ab5fSopenharmony_ci+let c1 = new C(); 112393af6ab5fSopenharmony_ci+let c2 = new C2(); 112403af6ab5fSopenharmony_ci+let c3 = new C3(); 112413af6ab5fSopenharmony_ci\ No newline at end of file 112423af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/stringLiteralTypesInImplementationSignatures.ts b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/stringLiteralTypesInImplementationSignatures.ts 112433af6ab5fSopenharmony_ciindex a8bf323850..6ea1c88cfb 100644 112443af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/stringLiteralTypesInImplementationSignatures.ts 112453af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/stringLiteralTypesInImplementationSignatures.ts 112463af6ab5fSopenharmony_ci@@ -23,3 +23,5 @@ var b = { 112473af6ab5fSopenharmony_ci a: function foo(x: 'hi', y: 'hi') { }, 112483af6ab5fSopenharmony_ci b: (x: 'hi') => { } 112493af6ab5fSopenharmony_ci } 112503af6ab5fSopenharmony_ci+ 112513af6ab5fSopenharmony_ci+let c1 = new C(); 112523af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterAsTypeArgument.ts b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterAsTypeArgument.ts 112533af6ab5fSopenharmony_ciindex ef33eef5d5..5e87397a9e 100644 112543af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterAsTypeArgument.ts 112553af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterAsTypeArgument.ts 112563af6ab5fSopenharmony_ci@@ -24,4 +24,6 @@ interface I<T, U> { 112573af6ab5fSopenharmony_ci 112583af6ab5fSopenharmony_ci //interface I<T, U extends T> { 112593af6ab5fSopenharmony_ci // x: C<U, T>; 112603af6ab5fSopenharmony_ci-//} 112613af6ab5fSopenharmony_ci+//} 112623af6ab5fSopenharmony_ci+ 112633af6ab5fSopenharmony_ci+let c1 = new C(); 112643af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/constructSignatures/constructSignaturesWithOverloadsThatDifferOnlyByReturnType.ts b/tests/cases/conformance/types/objectTypeLiteral/constructSignatures/constructSignaturesWithOverloadsThatDifferOnlyByReturnType.ts 112653af6ab5fSopenharmony_ciindex 4ac60bd7f7..9a462477de 100644 112663af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/constructSignatures/constructSignaturesWithOverloadsThatDifferOnlyByReturnType.ts 112673af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/constructSignatures/constructSignaturesWithOverloadsThatDifferOnlyByReturnType.ts 112683af6ab5fSopenharmony_ci@@ -29,4 +29,7 @@ var a: { 112693af6ab5fSopenharmony_ci var b: { 112703af6ab5fSopenharmony_ci new <T>(x: T, y: string): C2<T>; 112713af6ab5fSopenharmony_ci new <T>(x: T, y: string): C; // error 112723af6ab5fSopenharmony_ci-} 112733af6ab5fSopenharmony_ci\ No newline at end of file 112743af6ab5fSopenharmony_ci+} 112753af6ab5fSopenharmony_ci+ 112763af6ab5fSopenharmony_ci+let c1 = new C(1); 112773af6ab5fSopenharmony_ci+let c2 = new C2(1); 112783af6ab5fSopenharmony_ci\ No newline at end of file 112793af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexingResults.ts b/tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexingResults.ts 112803af6ab5fSopenharmony_ciindex 3d7b7eba45..4af4aba5a9 100644 112813af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexingResults.ts 112823af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexingResults.ts 112833af6ab5fSopenharmony_ci@@ -53,4 +53,6 @@ var r2b = b2['2']; 112843af6ab5fSopenharmony_ci var r3 = b2['3']; 112853af6ab5fSopenharmony_ci var r4 = b2[1]; 112863af6ab5fSopenharmony_ci var r5 = b2[2]; 112873af6ab5fSopenharmony_ci-var r6 = b2[3]; 112883af6ab5fSopenharmony_ci\ No newline at end of file 112893af6ab5fSopenharmony_ci+var r6 = b2[3]; 112903af6ab5fSopenharmony_ci+ 112913af6ab5fSopenharmony_ci+let c1 = new C(); 112923af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexingResults.ts b/tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexingResults.ts 112933af6ab5fSopenharmony_ciindex f51b8e461e..48ccea819f 100644 112943af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexingResults.ts 112953af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexingResults.ts 112963af6ab5fSopenharmony_ci@@ -32,3 +32,5 @@ var b: { [x: string]: string } = { y: '' } 112973af6ab5fSopenharmony_ci var r10 = b['y']; 112983af6ab5fSopenharmony_ci var r11 = b['a']; 112993af6ab5fSopenharmony_ci var r12 = b[1]; 113003af6ab5fSopenharmony_ci+ 113013af6ab5fSopenharmony_ci+let c1 = new C(); 113023af6ab5fSopenharmony_ci\ No newline at end of file 113033af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/propertyNameWithoutTypeAnnotation.ts b/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/propertyNameWithoutTypeAnnotation.ts 113043af6ab5fSopenharmony_ciindex 42f42eb312..ce53505fda 100644 113053af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/propertyNameWithoutTypeAnnotation.ts 113063af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/propertyNameWithoutTypeAnnotation.ts 113073af6ab5fSopenharmony_ci@@ -18,4 +18,6 @@ var b = { 113083af6ab5fSopenharmony_ci var r1 = (new C()).foo; 113093af6ab5fSopenharmony_ci var r2 = (<I>null).foo; 113103af6ab5fSopenharmony_ci var r3 = a.foo; 113113af6ab5fSopenharmony_ci-var r4 = b.foo; 113123af6ab5fSopenharmony_ci\ No newline at end of file 113133af6ab5fSopenharmony_ci+var r4 = b.foo; 113143af6ab5fSopenharmony_ci+ 113153af6ab5fSopenharmony_ci+let c1 = new C(); 113163af6ab5fSopenharmony_ci\ No newline at end of file 113173af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/propertyNamesOfReservedWords.ts b/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/propertyNamesOfReservedWords.ts 113183af6ab5fSopenharmony_ciindex 6673465381..e8589921f5 100644 113193af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/propertyNamesOfReservedWords.ts 113203af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/propertyNamesOfReservedWords.ts 113213af6ab5fSopenharmony_ci@@ -273,4 +273,6 @@ enum E { 113223af6ab5fSopenharmony_ci } 113233af6ab5fSopenharmony_ci 113243af6ab5fSopenharmony_ci var r7 = E.abstract; 113253af6ab5fSopenharmony_ci-var r8 = E.as; 113263af6ab5fSopenharmony_ci\ No newline at end of file 113273af6ab5fSopenharmony_ci+var r8 = E.as; 113283af6ab5fSopenharmony_ci+ 113293af6ab5fSopenharmony_ci+let c1 = new C(); 113303af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/stringNamedPropertyAccess.ts b/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/stringNamedPropertyAccess.ts 113313af6ab5fSopenharmony_ciindex dbea999036..9c6eea5968 100644 113323af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/stringNamedPropertyAccess.ts 113333af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/objectTypeLiteral/propertySignatures/stringNamedPropertyAccess.ts 113343af6ab5fSopenharmony_ci@@ -20,4 +20,6 @@ var r3 = a["a b"]; 113353af6ab5fSopenharmony_ci var b = { 113363af6ab5fSopenharmony_ci "a b": 1 113373af6ab5fSopenharmony_ci } 113383af6ab5fSopenharmony_ci-var r4 = b["a b"]; 113393af6ab5fSopenharmony_ci\ No newline at end of file 113403af6ab5fSopenharmony_ci+var r4 = b["a b"]; 113413af6ab5fSopenharmony_ci+ 113423af6ab5fSopenharmony_ci+let c1 = new C(); 113433af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/primitives/number/extendNumberInterface.ts b/tests/cases/conformance/types/primitives/number/extendNumberInterface.ts 113443af6ab5fSopenharmony_ciindex 6aa6325ee3..68641deedd 100644 113453af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/primitives/number/extendNumberInterface.ts 113463af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/primitives/number/extendNumberInterface.ts 113473af6ab5fSopenharmony_ci@@ -7,4 +7,4 @@ var x = 1; 113483af6ab5fSopenharmony_ci var a: string = x.doStuff(); 113493af6ab5fSopenharmony_ci var b: string = x.doOtherStuff('hm'); 113503af6ab5fSopenharmony_ci var c: string = x['doStuff'](); 113513af6ab5fSopenharmony_ci-var d: string = x['doOtherStuff']('hm'); 113523af6ab5fSopenharmony_ci\ No newline at end of file 113533af6ab5fSopenharmony_ci+var d: string = x['doOtherStuff']('hm'); 113543af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/primitives/undefined/invalidUndefinedValues.ts b/tests/cases/conformance/types/primitives/undefined/invalidUndefinedValues.ts 113553af6ab5fSopenharmony_ciindex 58a5a54386..572d96843f 100644 113563af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/primitives/undefined/invalidUndefinedValues.ts 113573af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/primitives/undefined/invalidUndefinedValues.ts 113583af6ab5fSopenharmony_ci@@ -28,4 +28,6 @@ x = f; 113593af6ab5fSopenharmony_ci 113603af6ab5fSopenharmony_ci enum E { A } 113613af6ab5fSopenharmony_ci x = E; 113623af6ab5fSopenharmony_ci-x = E.A; 113633af6ab5fSopenharmony_ci\ No newline at end of file 113643af6ab5fSopenharmony_ci+x = E.A; 113653af6ab5fSopenharmony_ci+ 113663af6ab5fSopenharmony_ci+let c1 = new C(); 113673af6ab5fSopenharmony_ci\ No newline at end of file 113683af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/primitives/undefined/validUndefinedAssignments.ts b/tests/cases/conformance/types/primitives/undefined/validUndefinedAssignments.ts 113693af6ab5fSopenharmony_ciindex 71ae9f89a1..a1cad7a4a4 100644 113703af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/primitives/undefined/validUndefinedAssignments.ts 113713af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/primitives/undefined/validUndefinedAssignments.ts 113723af6ab5fSopenharmony_ci@@ -20,4 +20,6 @@ var h: { f(): void } = x; 113733af6ab5fSopenharmony_ci 113743af6ab5fSopenharmony_ci function i<T>(a: T) { 113753af6ab5fSopenharmony_ci a = x; 113763af6ab5fSopenharmony_ci-} 113773af6ab5fSopenharmony_ci\ No newline at end of file 113783af6ab5fSopenharmony_ci+} 113793af6ab5fSopenharmony_ci+ 113803af6ab5fSopenharmony_ci+let c1 = new C(); 113813af6ab5fSopenharmony_ci\ No newline at end of file 113823af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/rest/objectRestParameter.ts b/tests/cases/conformance/types/rest/objectRestParameter.ts 113833af6ab5fSopenharmony_ciindex 5b6faeb797..a18f4afc49 100644 113843af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/rest/objectRestParameter.ts 113853af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/rest/objectRestParameter.ts 113863af6ab5fSopenharmony_ci@@ -19,3 +19,4 @@ function foobar({ bar={}, ...opts }: any = {}) { 113873af6ab5fSopenharmony_ci foobar(); 113883af6ab5fSopenharmony_ci foobar({ baz: 'hello' }); 113893af6ab5fSopenharmony_ci foobar({ bar: { greeting: 'hello' } }); 113903af6ab5fSopenharmony_ci+let t1 = new C(); 113913af6ab5fSopenharmony_ci\ No newline at end of file 113923af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/specifyingTypes/typeLiterals/arrayOfFunctionTypes3.ts b/tests/cases/conformance/types/specifyingTypes/typeLiterals/arrayOfFunctionTypes3.ts 113933af6ab5fSopenharmony_ciindex 9746dd287b..a518d15d97 100644 113943af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/specifyingTypes/typeLiterals/arrayOfFunctionTypes3.ts 113953af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/specifyingTypes/typeLiterals/arrayOfFunctionTypes3.ts 113963af6ab5fSopenharmony_ci@@ -23,4 +23,6 @@ var c2: { (x: number): number; <T>(x: T): any; }; 113973af6ab5fSopenharmony_ci 113983af6ab5fSopenharmony_ci var z2 = [a2, b2, c2]; 113993af6ab5fSopenharmony_ci var r6 = z2[0]; 114003af6ab5fSopenharmony_ci-var r7 = r6(''); // any not string 114013af6ab5fSopenharmony_ci\ No newline at end of file 114023af6ab5fSopenharmony_ci+var r7 = r6(''); // any not string 114033af6ab5fSopenharmony_ci+ 114043af6ab5fSopenharmony_ci+let c11 = new C(); 114053af6ab5fSopenharmony_ci\ No newline at end of file 114063af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/specifyingTypes/typeLiterals/functionLiteralForOverloads2.ts b/tests/cases/conformance/types/specifyingTypes/typeLiterals/functionLiteralForOverloads2.ts 114073af6ab5fSopenharmony_ciindex 4ba6a76000..1d686dcc89 100644 114083af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/specifyingTypes/typeLiterals/functionLiteralForOverloads2.ts 114093af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/specifyingTypes/typeLiterals/functionLiteralForOverloads2.ts 114103af6ab5fSopenharmony_ci@@ -25,4 +25,7 @@ var f2: { 114113af6ab5fSopenharmony_ci var f3: { 114123af6ab5fSopenharmony_ci new<T>(x: string): D<T>; 114133af6ab5fSopenharmony_ci new<T>(x: number): D<T>; 114143af6ab5fSopenharmony_ci-} = D; 114153af6ab5fSopenharmony_ci\ No newline at end of file 114163af6ab5fSopenharmony_ci+} = D; 114173af6ab5fSopenharmony_ci+ 114183af6ab5fSopenharmony_ci+let c = new C(''); 114193af6ab5fSopenharmony_ci+let d = new D(''); 114203af6ab5fSopenharmony_ci\ No newline at end of file 114213af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/specifyingTypes/typeQueries/typeQueryOnClass.ts b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeQueryOnClass.ts 114223af6ab5fSopenharmony_ciindex 3e8ee82c74..4dd74a8b9b 100644 114233af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/specifyingTypes/typeQueries/typeQueryOnClass.ts 114243af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeQueryOnClass.ts 114253af6ab5fSopenharmony_ci@@ -53,4 +53,7 @@ class D<T> { 114263af6ab5fSopenharmony_ci 114273af6ab5fSopenharmony_ci var d: D<string>; 114283af6ab5fSopenharmony_ci var r3: typeof D; 114293af6ab5fSopenharmony_ci-var r4: typeof d; 114303af6ab5fSopenharmony_ci\ No newline at end of file 114313af6ab5fSopenharmony_ci+var r4: typeof d; 114323af6ab5fSopenharmony_ci+ 114333af6ab5fSopenharmony_ci+let c1 = new C(1); 114343af6ab5fSopenharmony_ci+let d1 = new D(1); 114353af6ab5fSopenharmony_ci\ No newline at end of file 114363af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/specifyingTypes/typeQueries/typeQueryWithReservedWords.ts b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeQueryWithReservedWords.ts 114373af6ab5fSopenharmony_ciindex 5fb9d2233f..ce1748f526 100644 114383af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/specifyingTypes/typeQueries/typeQueryWithReservedWords.ts 114393af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeQueryWithReservedWords.ts 114403af6ab5fSopenharmony_ci@@ -12,3 +12,4 @@ interface IScope { 114413af6ab5fSopenharmony_ci delete: typeof Controller.prototype.delete; // Should not error 114423af6ab5fSopenharmony_ci var: typeof Controller.prototype.var; // Should not error 114433af6ab5fSopenharmony_ci } 114443af6ab5fSopenharmony_ci+let c2 = new Controller(); 114453af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofClass2.ts b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofClass2.ts 114463af6ab5fSopenharmony_ciindex df1898a543..4dcf244525 100644 114473af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofClass2.ts 114483af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofClass2.ts 114493af6ab5fSopenharmony_ci@@ -18,4 +18,7 @@ class D extends C { 114503af6ab5fSopenharmony_ci var d: D; 114513af6ab5fSopenharmony_ci 114523af6ab5fSopenharmony_ci var r1: typeof D; 114533af6ab5fSopenharmony_ci-var r2: typeof d; 114543af6ab5fSopenharmony_ci\ No newline at end of file 114553af6ab5fSopenharmony_ci+var r2: typeof d; 114563af6ab5fSopenharmony_ci+ 114573af6ab5fSopenharmony_ci+let c = new C(1); 114583af6ab5fSopenharmony_ci+let d1 = new D(1); 114593af6ab5fSopenharmony_ci\ No newline at end of file 114603af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofModuleWithoutExports.ts b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofModuleWithoutExports.ts 114613af6ab5fSopenharmony_ciindex 878885a8a9..53d74c3b71 100644 114623af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofModuleWithoutExports.ts 114633af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofModuleWithoutExports.ts 114643af6ab5fSopenharmony_ci@@ -3,6 +3,7 @@ module M { 114653af6ab5fSopenharmony_ci class C { 114663af6ab5fSopenharmony_ci foo: number; 114673af6ab5fSopenharmony_ci } 114683af6ab5fSopenharmony_ci+ var c = new C(); 114693af6ab5fSopenharmony_ci } 114703af6ab5fSopenharmony_ci 114713af6ab5fSopenharmony_ci-var r: typeof M; 114723af6ab5fSopenharmony_ci\ No newline at end of file 114733af6ab5fSopenharmony_ci+var r: typeof M; 114743af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofThis.ts b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofThis.ts 114753af6ab5fSopenharmony_cinew file mode 100644 114763af6ab5fSopenharmony_ciindex 0000000000..420604c550 114773af6ab5fSopenharmony_ci--- /dev/null 114783af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofThis.ts 114793af6ab5fSopenharmony_ci@@ -0,0 +1,146 @@ 114803af6ab5fSopenharmony_ci+// @noImplicitThis: true 114813af6ab5fSopenharmony_ci+// @strict: true 114823af6ab5fSopenharmony_ci+ 114833af6ab5fSopenharmony_ci+class Test { 114843af6ab5fSopenharmony_ci+ data = {}; 114853af6ab5fSopenharmony_ci+ constructor() { 114863af6ab5fSopenharmony_ci+ var copy: typeof this.data = {}; 114873af6ab5fSopenharmony_ci+ } 114883af6ab5fSopenharmony_ci+} 114893af6ab5fSopenharmony_ci+ 114903af6ab5fSopenharmony_ci+class Test1 { 114913af6ab5fSopenharmony_ci+ data = { foo: '' }; 114923af6ab5fSopenharmony_ci+ ['this'] = ''; 114933af6ab5fSopenharmony_ci+ constructor() { 114943af6ab5fSopenharmony_ci+ var copy: typeof this.data = { foo: '' }; 114953af6ab5fSopenharmony_ci+ var foo: typeof this.data.foo = ''; 114963af6ab5fSopenharmony_ci+ 114973af6ab5fSopenharmony_ci+ var self: typeof this = this; 114983af6ab5fSopenharmony_ci+ self.data; 114993af6ab5fSopenharmony_ci+ 115003af6ab5fSopenharmony_ci+ var str: typeof this.this = ''; 115013af6ab5fSopenharmony_ci+ } 115023af6ab5fSopenharmony_ci+} 115033af6ab5fSopenharmony_ci+ 115043af6ab5fSopenharmony_ci+ 115053af6ab5fSopenharmony_ci+function Test2() { 115063af6ab5fSopenharmony_ci+ let x: typeof this.no = 1; 115073af6ab5fSopenharmony_ci+} 115083af6ab5fSopenharmony_ci+ 115093af6ab5fSopenharmony_ci+function Test3(this: { no: number }) { 115103af6ab5fSopenharmony_ci+ let x: typeof this.no = 1; 115113af6ab5fSopenharmony_ci+} 115123af6ab5fSopenharmony_ci+ 115133af6ab5fSopenharmony_ci+function Test4(this: { no: number } | undefined) { 115143af6ab5fSopenharmony_ci+ let x: typeof this.no = 1; 115153af6ab5fSopenharmony_ci+} 115163af6ab5fSopenharmony_ci+ 115173af6ab5fSopenharmony_ci+class Test5 { 115183af6ab5fSopenharmony_ci+ no = 1; 115193af6ab5fSopenharmony_ci+ 115203af6ab5fSopenharmony_ci+ f = () => { 115213af6ab5fSopenharmony_ci+ // should not capture this. 115223af6ab5fSopenharmony_ci+ let x: typeof this.no = 1; 115233af6ab5fSopenharmony_ci+ } 115243af6ab5fSopenharmony_ci+} 115253af6ab5fSopenharmony_ci+ 115263af6ab5fSopenharmony_ci+namespace Test6 { 115273af6ab5fSopenharmony_ci+ export let f = () => { 115283af6ab5fSopenharmony_ci+ let x: typeof this.no = 1; 115293af6ab5fSopenharmony_ci+ } 115303af6ab5fSopenharmony_ci+} 115313af6ab5fSopenharmony_ci+ 115323af6ab5fSopenharmony_ci+module Test7 { 115333af6ab5fSopenharmony_ci+ export let f = () => { 115343af6ab5fSopenharmony_ci+ let x: typeof this.no = 1; 115353af6ab5fSopenharmony_ci+ } 115363af6ab5fSopenharmony_ci+} 115373af6ab5fSopenharmony_ci+ 115383af6ab5fSopenharmony_ci+const Test8 = () => { 115393af6ab5fSopenharmony_ci+ let x: typeof this.no = 1; 115403af6ab5fSopenharmony_ci+} 115413af6ab5fSopenharmony_ci+ 115423af6ab5fSopenharmony_ci+class Test9 { 115433af6ab5fSopenharmony_ci+ no = 0; 115443af6ab5fSopenharmony_ci+ this = 0; 115453af6ab5fSopenharmony_ci+ 115463af6ab5fSopenharmony_ci+ f() { 115473af6ab5fSopenharmony_ci+ if (this instanceof Test9D1) { 115483af6ab5fSopenharmony_ci+ const d1: typeof this = this; 115493af6ab5fSopenharmony_ci+ d1.f1(); 115503af6ab5fSopenharmony_ci+ } 115513af6ab5fSopenharmony_ci+ 115523af6ab5fSopenharmony_ci+ if (this instanceof Test9D2) { 115533af6ab5fSopenharmony_ci+ const d2: typeof this = this; 115543af6ab5fSopenharmony_ci+ d2.f2(); 115553af6ab5fSopenharmony_ci+ } 115563af6ab5fSopenharmony_ci+ } 115573af6ab5fSopenharmony_ci+ 115583af6ab5fSopenharmony_ci+ g() { 115593af6ab5fSopenharmony_ci+ if (this.no === 1) { 115603af6ab5fSopenharmony_ci+ const no: typeof this.no = this.no; 115613af6ab5fSopenharmony_ci+ } 115623af6ab5fSopenharmony_ci+ 115633af6ab5fSopenharmony_ci+ if (this.this === 1) { 115643af6ab5fSopenharmony_ci+ const no: typeof this.this = this.this; 115653af6ab5fSopenharmony_ci+ } 115663af6ab5fSopenharmony_ci+ } 115673af6ab5fSopenharmony_ci+} 115683af6ab5fSopenharmony_ci+ 115693af6ab5fSopenharmony_ci+class Test9D1 { 115703af6ab5fSopenharmony_ci+ f1() {} 115713af6ab5fSopenharmony_ci+} 115723af6ab5fSopenharmony_ci+ 115733af6ab5fSopenharmony_ci+class Test9D2 { 115743af6ab5fSopenharmony_ci+ f2() {} 115753af6ab5fSopenharmony_ci+} 115763af6ab5fSopenharmony_ci+ 115773af6ab5fSopenharmony_ci+class Test10 { 115783af6ab5fSopenharmony_ci+ a?: { b?: string } 115793af6ab5fSopenharmony_ci+ 115803af6ab5fSopenharmony_ci+ foo() { 115813af6ab5fSopenharmony_ci+ let a: typeof this.a = undefined as any; 115823af6ab5fSopenharmony_ci+ if (this.a) { 115833af6ab5fSopenharmony_ci+ let a: typeof this.a = undefined as any; // should narrow to { b?: string } 115843af6ab5fSopenharmony_ci+ let b: typeof this.a.b = undefined as any; 115853af6ab5fSopenharmony_ci+ 115863af6ab5fSopenharmony_ci+ if (this.a.b) { 115873af6ab5fSopenharmony_ci+ let b: typeof this.a.b = undefined as any; // should narrow to string 115883af6ab5fSopenharmony_ci+ } 115893af6ab5fSopenharmony_ci+ } 115903af6ab5fSopenharmony_ci+ } 115913af6ab5fSopenharmony_ci+} 115923af6ab5fSopenharmony_ci+ 115933af6ab5fSopenharmony_ci+class Test11 { 115943af6ab5fSopenharmony_ci+ this?: { x?: string }; 115953af6ab5fSopenharmony_ci+ 115963af6ab5fSopenharmony_ci+ foo() { 115973af6ab5fSopenharmony_ci+ const o = this; 115983af6ab5fSopenharmony_ci+ let bar: typeof o.this = {}; 115993af6ab5fSopenharmony_ci+ 116003af6ab5fSopenharmony_ci+ if (o.this && o.this.x) { 116013af6ab5fSopenharmony_ci+ let y: string = o.this.x; // should narrow to string 116023af6ab5fSopenharmony_ci+ } 116033af6ab5fSopenharmony_ci+ } 116043af6ab5fSopenharmony_ci+} 116053af6ab5fSopenharmony_ci+ 116063af6ab5fSopenharmony_ci+class Tests12 { 116073af6ab5fSopenharmony_ci+ test1() { // OK 116083af6ab5fSopenharmony_ci+ type Test = typeof this; 116093af6ab5fSopenharmony_ci+ } 116103af6ab5fSopenharmony_ci+ 116113af6ab5fSopenharmony_ci+ test2() { // OK 116123af6ab5fSopenharmony_ci+ for (;;) {} 116133af6ab5fSopenharmony_ci+ type Test = typeof this; 116143af6ab5fSopenharmony_ci+ } 116153af6ab5fSopenharmony_ci+ 116163af6ab5fSopenharmony_ci+ test3() { // expected no compile errors 116173af6ab5fSopenharmony_ci+ for (const dummy in []) {} 116183af6ab5fSopenharmony_ci+ type Test = typeof this; 116193af6ab5fSopenharmony_ci+ } 116203af6ab5fSopenharmony_ci+ 116213af6ab5fSopenharmony_ci+ test4() { // expected no compile errors 116223af6ab5fSopenharmony_ci+ for (const dummy of []) {} 116233af6ab5fSopenharmony_ci+ type Test = typeof this; 116243af6ab5fSopenharmony_ci+ } 116253af6ab5fSopenharmony_ci+} 116263af6ab5fSopenharmony_ci\ No newline at end of file 116273af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofThisWithImplicitThis.ts b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofThisWithImplicitThis.ts 116283af6ab5fSopenharmony_cinew file mode 100644 116293af6ab5fSopenharmony_ciindex 0000000000..d99cceaa58 116303af6ab5fSopenharmony_ci--- /dev/null 116313af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/specifyingTypes/typeQueries/typeofThisWithImplicitThis.ts 116323af6ab5fSopenharmony_ci@@ -0,0 +1,5 @@ 116333af6ab5fSopenharmony_ci+// @noImplicitThis: false 116343af6ab5fSopenharmony_ci+ 116353af6ab5fSopenharmony_ci+function Test1() { 116363af6ab5fSopenharmony_ci+ let x: typeof this.no = 1 116373af6ab5fSopenharmony_ci+} 116383af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/spread/spreadDuplicate.ts b/tests/cases/conformance/types/spread/spreadDuplicate.ts 116393af6ab5fSopenharmony_cinew file mode 100644 116403af6ab5fSopenharmony_ciindex 0000000000..f27a2529f0 116413af6ab5fSopenharmony_ci--- /dev/null 116423af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/spread/spreadDuplicate.ts 116433af6ab5fSopenharmony_ci@@ -0,0 +1,21 @@ 116443af6ab5fSopenharmony_ci+// @strict: true 116453af6ab5fSopenharmony_ci+// @declaration: true 116463af6ab5fSopenharmony_ci+ 116473af6ab5fSopenharmony_ci+// Repro from #44438 116483af6ab5fSopenharmony_ci+ 116493af6ab5fSopenharmony_ci+declare let a: { a: string }; 116503af6ab5fSopenharmony_ci+declare let b: { a?: string }; 116513af6ab5fSopenharmony_ci+declare let c: { a: string | undefined }; 116523af6ab5fSopenharmony_ci+declare let d: { a?: string | undefined }; 116533af6ab5fSopenharmony_ci+ 116543af6ab5fSopenharmony_ci+declare let t: boolean; 116553af6ab5fSopenharmony_ci+ 116563af6ab5fSopenharmony_ci+let a1 = { a: 123, ...a }; // string (Error) 116573af6ab5fSopenharmony_ci+let b1 = { a: 123, ...b }; // string | number 116583af6ab5fSopenharmony_ci+let c1 = { a: 123, ...c }; // string | undefined (Error) 116593af6ab5fSopenharmony_ci+let d1 = { a: 123, ...d }; // string | number 116603af6ab5fSopenharmony_ci+ 116613af6ab5fSopenharmony_ci+let a2 = { a: 123, ...(t ? a : {}) }; // string | number 116623af6ab5fSopenharmony_ci+let b2 = { a: 123, ...(t ? b : {}) }; // string | number 116633af6ab5fSopenharmony_ci+let c2 = { a: 123, ...(t ? c : {}) }; // string | number 116643af6ab5fSopenharmony_ci+let d2 = { a: 123, ...(t ? d : {}) }; // string | number 116653af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/spread/spreadDuplicateExact.ts b/tests/cases/conformance/types/spread/spreadDuplicateExact.ts 116663af6ab5fSopenharmony_cinew file mode 100644 116673af6ab5fSopenharmony_ciindex 0000000000..e395af4ce5 116683af6ab5fSopenharmony_ci--- /dev/null 116693af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/spread/spreadDuplicateExact.ts 116703af6ab5fSopenharmony_ci@@ -0,0 +1,22 @@ 116713af6ab5fSopenharmony_ci+// @strict: true 116723af6ab5fSopenharmony_ci+// @exactOptionalPropertyTypes: true 116733af6ab5fSopenharmony_ci+// @declaration: true 116743af6ab5fSopenharmony_ci+ 116753af6ab5fSopenharmony_ci+// Repro from #44438 116763af6ab5fSopenharmony_ci+ 116773af6ab5fSopenharmony_ci+declare let a: { a: string }; 116783af6ab5fSopenharmony_ci+declare let b: { a?: string }; 116793af6ab5fSopenharmony_ci+declare let c: { a: string | undefined }; 116803af6ab5fSopenharmony_ci+declare let d: { a?: string | undefined }; 116813af6ab5fSopenharmony_ci+ 116823af6ab5fSopenharmony_ci+declare let t: boolean; 116833af6ab5fSopenharmony_ci+ 116843af6ab5fSopenharmony_ci+let a1 = { a: 123, ...a }; // string (Error) 116853af6ab5fSopenharmony_ci+let b1 = { a: 123, ...b }; // string | number 116863af6ab5fSopenharmony_ci+let c1 = { a: 123, ...c }; // string | undefined (Error) 116873af6ab5fSopenharmony_ci+let d1 = { a: 123, ...d }; // string | number | undefined 116883af6ab5fSopenharmony_ci+ 116893af6ab5fSopenharmony_ci+let a2 = { a: 123, ...(t ? a : {}) }; // string | number 116903af6ab5fSopenharmony_ci+let b2 = { a: 123, ...(t ? b : {}) }; // string | number 116913af6ab5fSopenharmony_ci+let c2 = { a: 123, ...(t ? c : {}) }; // string | number | undefined 116923af6ab5fSopenharmony_ci+let d2 = { a: 123, ...(t ? d : {}) }; // string | number | undefined 116933af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/spread/spreadUnion4.ts b/tests/cases/conformance/types/spread/spreadUnion4.ts 116943af6ab5fSopenharmony_cinew file mode 100644 116953af6ab5fSopenharmony_ciindex 0000000000..6a39ac3a3c 116963af6ab5fSopenharmony_ci--- /dev/null 116973af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/spread/spreadUnion4.ts 116983af6ab5fSopenharmony_ci@@ -0,0 +1,4 @@ 116993af6ab5fSopenharmony_ci+declare const a: { x: () => void } 117003af6ab5fSopenharmony_ci+declare const b: { x?: () => void } 117013af6ab5fSopenharmony_ci+ 117023af6ab5fSopenharmony_ci+const c = { ...a, ...b }; 117033af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/thisType/fluentClasses.ts b/tests/cases/conformance/types/thisType/fluentClasses.ts 117043af6ab5fSopenharmony_ciindex c9e791cb6f..0aad4efe17 100644 117053af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/thisType/fluentClasses.ts 117063af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/thisType/fluentClasses.ts 117073af6ab5fSopenharmony_ci@@ -15,3 +15,5 @@ class C extends B { 117083af6ab5fSopenharmony_ci } 117093af6ab5fSopenharmony_ci var c: C; 117103af6ab5fSopenharmony_ci var z = c.foo().bar().baz(); // Fluent pattern 117113af6ab5fSopenharmony_ci+let b1 = new B(); 117123af6ab5fSopenharmony_ci+let c1 = new C(); 117133af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/thisType/thisTypeAndConstraints.ts b/tests/cases/conformance/types/thisType/thisTypeAndConstraints.ts 117143af6ab5fSopenharmony_ciindex f46b251c3b..c6091fd7a2 100644 117153af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/thisType/thisTypeAndConstraints.ts 117163af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/thisType/thisTypeAndConstraints.ts 117173af6ab5fSopenharmony_ci@@ -19,3 +19,6 @@ class B<T extends A> { 117183af6ab5fSopenharmony_ci x = x.self(); 117193af6ab5fSopenharmony_ci } 117203af6ab5fSopenharmony_ci } 117213af6ab5fSopenharmony_ci+ 117223af6ab5fSopenharmony_ci+let a = new A(); 117233af6ab5fSopenharmony_ci+let b = new B(); 117243af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/thisType/thisTypeInClasses.ts b/tests/cases/conformance/types/thisType/thisTypeInClasses.ts 117253af6ab5fSopenharmony_ciindex 6c650341fb..0d3913de7e 100644 117263af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/thisType/thisTypeInClasses.ts 117273af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/thisType/thisTypeInClasses.ts 117283af6ab5fSopenharmony_ci@@ -47,3 +47,9 @@ class C5 { 117293af6ab5fSopenharmony_ci let x2 = undefined as this; 117303af6ab5fSopenharmony_ci } 117313af6ab5fSopenharmony_ci } 117323af6ab5fSopenharmony_ci+ 117333af6ab5fSopenharmony_ci+let c1 = new C1(); 117343af6ab5fSopenharmony_ci+let c2 = new C2(); 117353af6ab5fSopenharmony_ci+let c3 = new C3(); 117363af6ab5fSopenharmony_ci+let c4 = new C4(); 117373af6ab5fSopenharmony_ci+let c5 = new C5(); 117383af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/thisType/thisTypeInFunctions3.ts b/tests/cases/conformance/types/thisType/thisTypeInFunctions3.ts 117393af6ab5fSopenharmony_ciindex 01d7fd0430..8fe03ac945 100644 117403af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/thisType/thisTypeInFunctions3.ts 117413af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/thisType/thisTypeInFunctions3.ts 117423af6ab5fSopenharmony_ci@@ -7,3 +7,6 @@ class Test extends Base { 117433af6ab5fSopenharmony_ci this.check(this); 117443af6ab5fSopenharmony_ci } 117453af6ab5fSopenharmony_ci } 117463af6ab5fSopenharmony_ci+ 117473af6ab5fSopenharmony_ci+let te = new Test(); 117483af6ab5fSopenharmony_ci+ 117493af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/thisType/thisTypeInTaggedTemplateCall.ts b/tests/cases/conformance/types/thisType/thisTypeInTaggedTemplateCall.ts 117503af6ab5fSopenharmony_cinew file mode 100644 117513af6ab5fSopenharmony_ciindex 0000000000..c46933329b 117523af6ab5fSopenharmony_ci--- /dev/null 117533af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/thisType/thisTypeInTaggedTemplateCall.ts 117543af6ab5fSopenharmony_ci@@ -0,0 +1,10 @@ 117553af6ab5fSopenharmony_ci+// @target: esnext 117563af6ab5fSopenharmony_ci+ 117573af6ab5fSopenharmony_ci+class Foo { 117583af6ab5fSopenharmony_ci+ static m<T>(this: new () => T, strings: TemplateStringsArray | string) { 117593af6ab5fSopenharmony_ci+ return new this() 117603af6ab5fSopenharmony_ci+ } 117613af6ab5fSopenharmony_ci+} 117623af6ab5fSopenharmony_ci+ 117633af6ab5fSopenharmony_ci+Foo.m`test`; 117643af6ab5fSopenharmony_ci+(Foo.m)`test`; 117653af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/tuple/readonlyArraysAndTuples2.ts b/tests/cases/conformance/types/tuple/readonlyArraysAndTuples2.ts 117663af6ab5fSopenharmony_ciindex 0f58f1971d..e03bc2a0c6 100644 117673af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/tuple/readonlyArraysAndTuples2.ts 117683af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/tuple/readonlyArraysAndTuples2.ts 117693af6ab5fSopenharmony_ci@@ -21,3 +21,5 @@ class A { 117703af6ab5fSopenharmony_ci @someDec 117713af6ab5fSopenharmony_ci k: readonly [string, number] = ['foo', 42]; 117723af6ab5fSopenharmony_ci } 117733af6ab5fSopenharmony_ci+ 117743af6ab5fSopenharmony_ci+let a = new A(); 117753af6ab5fSopenharmony_ci\ No newline at end of file 117763af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeAliases/circularTypeAliasForUnionWithClass.ts b/tests/cases/conformance/types/typeAliases/circularTypeAliasForUnionWithClass.ts 117773af6ab5fSopenharmony_ciindex e7cca719f4..05fd3be85e 100644 117783af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeAliases/circularTypeAliasForUnionWithClass.ts 117793af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeAliases/circularTypeAliasForUnionWithClass.ts 117803af6ab5fSopenharmony_ci@@ -15,3 +15,7 @@ type T4 = string | I4; 117813af6ab5fSopenharmony_ci class I4 { 117823af6ab5fSopenharmony_ci [x: string]: T4; 117833af6ab5fSopenharmony_ci } 117843af6ab5fSopenharmony_ci+ 117853af6ab5fSopenharmony_ci+let i0 = new I0(); 117863af6ab5fSopenharmony_ci+let i3 = new I3(); 117873af6ab5fSopenharmony_ci+let i4 = new I4(); 117883af6ab5fSopenharmony_ci\ No newline at end of file 117893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeAliases/classDoesNotDependOnBaseTypes.ts b/tests/cases/conformance/types/typeAliases/classDoesNotDependOnBaseTypes.ts 117903af6ab5fSopenharmony_ciindex 4cc3a72395..96d1b74b83 100644 117913af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeAliases/classDoesNotDependOnBaseTypes.ts 117923af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeAliases/classDoesNotDependOnBaseTypes.ts 117933af6ab5fSopenharmony_ci@@ -9,4 +9,6 @@ var x: StringTree; 117943af6ab5fSopenharmony_ci if (typeof x !== "string") { 117953af6ab5fSopenharmony_ci x[0] = ""; 117963af6ab5fSopenharmony_ci x[0] = new StringTreeCollection; 117973af6ab5fSopenharmony_ci-} 117983af6ab5fSopenharmony_ci\ No newline at end of file 117993af6ab5fSopenharmony_ci+} 118003af6ab5fSopenharmony_ci+ 118013af6ab5fSopenharmony_ci+let s1 = new StringTreeCollection(); 118023af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeAliases/typeAliases.ts b/tests/cases/conformance/types/typeAliases/typeAliases.ts 118033af6ab5fSopenharmony_ciindex b9d28f4cc3..32eb8473bf 100644 118043af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeAliases/typeAliases.ts 118053af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeAliases/typeAliases.ts 118063af6ab5fSopenharmony_ci@@ -77,4 +77,6 @@ var x: [string, boolean]; 118073af6ab5fSopenharmony_ci f16(x); 118083af6ab5fSopenharmony_ci 118093af6ab5fSopenharmony_ci var y: StringAndBoolean = ["1", false]; 118103af6ab5fSopenharmony_ci-y[0].toLowerCase(); 118113af6ab5fSopenharmony_ci\ No newline at end of file 118123af6ab5fSopenharmony_ci+y[0].toLowerCase(); 118133af6ab5fSopenharmony_ci+ 118143af6ab5fSopenharmony_ci+let c7 = new C7(); 118153af6ab5fSopenharmony_ci\ No newline at end of file 118163af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeParameters/typeArgumentLists/callGenericFunctionWithZeroTypeArguments.ts b/tests/cases/conformance/types/typeParameters/typeArgumentLists/callGenericFunctionWithZeroTypeArguments.ts 118173af6ab5fSopenharmony_ciindex 9a21c48ee1..b4a8dc7ba5 100644 118183af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeParameters/typeArgumentLists/callGenericFunctionWithZeroTypeArguments.ts 118193af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeParameters/typeArgumentLists/callGenericFunctionWithZeroTypeArguments.ts 118203af6ab5fSopenharmony_ci@@ -33,4 +33,7 @@ interface I2<T> { 118213af6ab5fSopenharmony_ci f(x: T): T; 118223af6ab5fSopenharmony_ci } 118233af6ab5fSopenharmony_ci var i2: I2<number>; 118243af6ab5fSopenharmony_ci-var r7 = i2.f(1); 118253af6ab5fSopenharmony_ci\ No newline at end of file 118263af6ab5fSopenharmony_ci+var r7 = i2.f(1); 118273af6ab5fSopenharmony_ci+ 118283af6ab5fSopenharmony_ci+let c1 = new C(); 118293af6ab5fSopenharmony_ci+let c2 = new C2(); 118303af6ab5fSopenharmony_ci\ No newline at end of file 118313af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction.ts b/tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction.ts 118323af6ab5fSopenharmony_ciindex ba1c5b003f..7490e2bd94 100644 118333af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction.ts 118343af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction.ts 118353af6ab5fSopenharmony_ci@@ -58,4 +58,7 @@ function foo2<T extends { (): void }, U extends { (): void }>(x: T, y: U) { 118363af6ab5fSopenharmony_ci //function foo2<T extends { (): void }, U extends T>(x: T, y: U) { 118373af6ab5fSopenharmony_ci // foo(x); 118383af6ab5fSopenharmony_ci // foo(y); 118393af6ab5fSopenharmony_ci-//} 118403af6ab5fSopenharmony_ci\ No newline at end of file 118413af6ab5fSopenharmony_ci+//} 118423af6ab5fSopenharmony_ci+ 118433af6ab5fSopenharmony_ci+let c11 = new C(); 118443af6ab5fSopenharmony_ci+let c12 = new C2(); 118453af6ab5fSopenharmony_ci\ No newline at end of file 118463af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction3.ts b/tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction3.ts 118473af6ab5fSopenharmony_ciindex 6c32014789..dec6cdd0bd 100644 118483af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction3.ts 118493af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction3.ts 118503af6ab5fSopenharmony_ci@@ -38,4 +38,7 @@ var c2: { <T>(x: T): T; <T>(x: T, y: T): T }; 118513af6ab5fSopenharmony_ci var r9 = foo(function <U>(x: U) { return x; }); 118523af6ab5fSopenharmony_ci var r10 = foo(<U extends string>(x: U) => x); 118533af6ab5fSopenharmony_ci var r12 = foo(i2); 118543af6ab5fSopenharmony_ci-var r15 = foo(c2); 118553af6ab5fSopenharmony_ci\ No newline at end of file 118563af6ab5fSopenharmony_ci+var r15 = foo(c2); 118573af6ab5fSopenharmony_ci+ 118583af6ab5fSopenharmony_ci+let c11 = new C(); 118593af6ab5fSopenharmony_ci+let c12 = new C2() 118603af6ab5fSopenharmony_ci\ No newline at end of file 118613af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeParameters/typeParameterLists/innerTypeParameterShadowingOuterOne2.ts b/tests/cases/conformance/types/typeParameters/typeParameterLists/innerTypeParameterShadowingOuterOne2.ts 118623af6ab5fSopenharmony_ciindex 60766c7e5e..4bd0b6c27f 100644 118633af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeParameters/typeParameterLists/innerTypeParameterShadowingOuterOne2.ts 118643af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeParameters/typeParameterLists/innerTypeParameterShadowingOuterOne2.ts 118653af6ab5fSopenharmony_ci@@ -34,4 +34,6 @@ class C2<T extends Date, U extends Date> { 118663af6ab5fSopenharmony_ci // var x: U; 118673af6ab5fSopenharmony_ci // x.getDate(); 118683af6ab5fSopenharmony_ci // } 118693af6ab5fSopenharmony_ci-//} 118703af6ab5fSopenharmony_ci\ No newline at end of file 118713af6ab5fSopenharmony_ci+//} 118723af6ab5fSopenharmony_ci+let c1 = new C(); 118733af6ab5fSopenharmony_ci+let c2 = new C2(); 118743af6ab5fSopenharmony_ci\ No newline at end of file 118753af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints.ts b/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints.ts 118763af6ab5fSopenharmony_ciindex b89016ecff..c10bef3300 100644 118773af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints.ts 118783af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints.ts 118793af6ab5fSopenharmony_ci@@ -31,4 +31,5 @@ var b = { 118803af6ab5fSopenharmony_ci } 118813af6ab5fSopenharmony_ci } 118823af6ab5fSopenharmony_ci 118833af6ab5fSopenharmony_ci-var r4 = b.foo(new Date()); 118843af6ab5fSopenharmony_ci\ No newline at end of file 118853af6ab5fSopenharmony_ci+var r4 = b.foo(new Date()); 118863af6ab5fSopenharmony_ci+let c = new C(); 118873af6ab5fSopenharmony_ci\ No newline at end of file 118883af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints2.ts b/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints2.ts 118893af6ab5fSopenharmony_ciindex 10f3a49884..a9992c5aa1 100644 118903af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints2.ts 118913af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints2.ts 118923af6ab5fSopenharmony_ci@@ -61,7 +61,7 @@ var a: { 118933af6ab5fSopenharmony_ci var r3 = a<A, A>().foo(); 118943af6ab5fSopenharmony_ci var r3b = a()['foo'](); 118953af6ab5fSopenharmony_ci // parameter supplied for type argument inference to succeed 118963af6ab5fSopenharmony_ci-var aB = new B(); 118973af6ab5fSopenharmony_ci+// var aB = new B(); 118983af6ab5fSopenharmony_ci var r3c = a(aB, aB).foo(); 118993af6ab5fSopenharmony_ci var r3d = a(aB, aB)['foo'](); 119003af6ab5fSopenharmony_ci 119013af6ab5fSopenharmony_ci@@ -78,4 +78,7 @@ var b = { 119023af6ab5fSopenharmony_ci // } 119033af6ab5fSopenharmony_ci //} 119043af6ab5fSopenharmony_ci 119053af6ab5fSopenharmony_ci-var r4 = b.foo(aB, aB); // no inferences for T so constraint isn't satisfied, error 119063af6ab5fSopenharmony_ci\ No newline at end of file 119073af6ab5fSopenharmony_ci+var r4 = b.foo(aB, aB); // no inferences for T so constraint isn't satisfied, error 119083af6ab5fSopenharmony_ci+ 119093af6ab5fSopenharmony_ci+let b1 = new B(); 119103af6ab5fSopenharmony_ci+let c1 = new C(); 119113af6ab5fSopenharmony_ci\ No newline at end of file 119123af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts b/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts 119133af6ab5fSopenharmony_ciindex 6167485f1b..73a10ae071 100644 119143af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts 119153af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts 119163af6ab5fSopenharmony_ci@@ -53,4 +53,6 @@ var b = { 119173af6ab5fSopenharmony_ci } 119183af6ab5fSopenharmony_ci } 119193af6ab5fSopenharmony_ci 119203af6ab5fSopenharmony_ci-var r4 = b.foo(new B()); // valid call to an invalid function 119213af6ab5fSopenharmony_ci\ No newline at end of file 119223af6ab5fSopenharmony_ci+var r4 = b.foo(new B()); // valid call to an invalid function 119233af6ab5fSopenharmony_ci+let b1 = new B(); 119243af6ab5fSopenharmony_ci+let c1 = new C(); 119253af6ab5fSopenharmony_ci\ No newline at end of file 119263af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithoutConstraints.ts b/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithoutConstraints.ts 119273af6ab5fSopenharmony_ciindex 1660d67a4e..b46569e9a4 100644 119283af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithoutConstraints.ts 119293af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithoutConstraints.ts 119303af6ab5fSopenharmony_ci@@ -28,4 +28,6 @@ var b = { 119313af6ab5fSopenharmony_ci } 119323af6ab5fSopenharmony_ci } 119333af6ab5fSopenharmony_ci 119343af6ab5fSopenharmony_ci-var r4 = b.foo(1); 119353af6ab5fSopenharmony_ci\ No newline at end of file 119363af6ab5fSopenharmony_ci+var r4 = b.foo(1); 119373af6ab5fSopenharmony_ci+ 119383af6ab5fSopenharmony_ci+let c = new C(); 119393af6ab5fSopenharmony_ci\ No newline at end of file 119403af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts b/tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts 119413af6ab5fSopenharmony_ciindex bade67badd..b9f3e54bb7 100644 119423af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts 119433af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts 119443af6ab5fSopenharmony_ci@@ -32,3 +32,10 @@ var a3: { <T extends Date, U extends T>(): void } 119453af6ab5fSopenharmony_ci var a4: { <T extends U, U extends Date>(): void } 119463af6ab5fSopenharmony_ci var a5: { <T extends U, U extends V, V>(): void } 119473af6ab5fSopenharmony_ci var a6: { <T, U extends T, V extends U>(): void } 119483af6ab5fSopenharmony_ci+ 119493af6ab5fSopenharmony_ci+let c1 = new C(); 119503af6ab5fSopenharmony_ci+let c2 = new C2(); 119513af6ab5fSopenharmony_ci+let c3 = new C3(); 119523af6ab5fSopenharmony_ci+let c4 = new C4(); 119533af6ab5fSopenharmony_ci+let c5 = new C5(); 119543af6ab5fSopenharmony_ci+let c6 = new C6(); 119553af6ab5fSopenharmony_ci\ No newline at end of file 119563af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignabilityInInheritance.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignabilityInInheritance.ts 119573af6ab5fSopenharmony_ciindex cc154308a1..5dfa8f94d3 100644 119583af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignabilityInInheritance.ts 119593af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignabilityInInheritance.ts 119603af6ab5fSopenharmony_ci@@ -85,4 +85,8 @@ var r3 = foo3(a); // any 119613af6ab5fSopenharmony_ci 119623af6ab5fSopenharmony_ci declare function foo18(x: {}): {}; 119633af6ab5fSopenharmony_ci declare function foo18(x: any): any; 119643af6ab5fSopenharmony_ci-var r3 = foo3(a); // any 119653af6ab5fSopenharmony_ci\ No newline at end of file 119663af6ab5fSopenharmony_ci+var r3 = foo3(a); // any 119673af6ab5fSopenharmony_ci+ 119683af6ab5fSopenharmony_ci+let aa1 = new A(); 119693af6ab5fSopenharmony_ci+let aa2 = new A2(); 119703af6ab5fSopenharmony_ci+let ccc = new CC(); 119713af6ab5fSopenharmony_ci\ No newline at end of file 119723af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType.ts 119733af6ab5fSopenharmony_ciindex 1c3bcc71ce..03e0089697 100644 119743af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType.ts 119753af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType.ts 119763af6ab5fSopenharmony_ci@@ -38,6 +38,7 @@ function foo<T, U /*extends T*/, V extends Date>(x: T, y: U, z: V) { 119773af6ab5fSopenharmony_ci z = a; 119783af6ab5fSopenharmony_ci } 119793af6ab5fSopenharmony_ci 119803af6ab5fSopenharmony_ci+let cc = new C(); 119813af6ab5fSopenharmony_ci //function foo<T, U extends T, V extends Date>(x: T, y: U, z: V) { 119823af6ab5fSopenharmony_ci // x = a; 119833af6ab5fSopenharmony_ci // y = a; 119843af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType2.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType2.ts 119853af6ab5fSopenharmony_ciindex 26f3eee594..74a517176d 100644 119863af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType2.ts 119873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType2.ts 119883af6ab5fSopenharmony_ci@@ -127,3 +127,6 @@ interface I20 { 119893af6ab5fSopenharmony_ci [x: string]: {}; 119903af6ab5fSopenharmony_ci foo: any; 119913af6ab5fSopenharmony_ci } 119923af6ab5fSopenharmony_ci+let aa = new A(); 119933af6ab5fSopenharmony_ci+let aa2 = new A2() 119943af6ab5fSopenharmony_ci+let ccc = new c(); 119953af6ab5fSopenharmony_ci\ No newline at end of file 119963af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers.ts 119973af6ab5fSopenharmony_ciindex d7a94cc862..464edb67d3 100644 119983af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers.ts 119993af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers.ts 120003af6ab5fSopenharmony_ci@@ -40,6 +40,8 @@ module SimpleTypes { 120013af6ab5fSopenharmony_ci a2 = b; 120023af6ab5fSopenharmony_ci a2 = t2; 120033af6ab5fSopenharmony_ci a2 = t; 120043af6ab5fSopenharmony_ci+ let ss = new S(); 120053af6ab5fSopenharmony_ci+ let tt = new T(); 120063af6ab5fSopenharmony_ci } 120073af6ab5fSopenharmony_ci 120083af6ab5fSopenharmony_ci module ObjectTypes { 120093af6ab5fSopenharmony_ci@@ -81,5 +83,6 @@ module ObjectTypes { 120103af6ab5fSopenharmony_ci a2 = b; 120113af6ab5fSopenharmony_ci a2 = t2; 120123af6ab5fSopenharmony_ci a2 = t; 120133af6ab5fSopenharmony_ci- 120143af6ab5fSopenharmony_ci+ let ss = new S(); 120153af6ab5fSopenharmony_ci+ let tt = new T(); 120163af6ab5fSopenharmony_ci } 120173af6ab5fSopenharmony_ci\ No newline at end of file 120183af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers2.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers2.ts 120193af6ab5fSopenharmony_ciindex a45da06482..a9e3bc6141 100644 120203af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers2.ts 120213af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers2.ts 120223af6ab5fSopenharmony_ci@@ -39,3 +39,5 @@ b2 = a2; 120233af6ab5fSopenharmony_ci a2 = b; 120243af6ab5fSopenharmony_ci a2 = t2; 120253af6ab5fSopenharmony_ci a2 = t; 120263af6ab5fSopenharmony_ci+let qu1 = new S(); 120273af6ab5fSopenharmony_ci+let qu2 = new T(); 120283af6ab5fSopenharmony_ci\ No newline at end of file 120293af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers3.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers3.ts 120303af6ab5fSopenharmony_ciindex 6e9a210db4..b96693de94 100644 120313af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers3.ts 120323af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembers3.ts 120333af6ab5fSopenharmony_ci@@ -39,3 +39,5 @@ b2 = a2; 120343af6ab5fSopenharmony_ci a2 = b; 120353af6ab5fSopenharmony_ci a2 = t2; 120363af6ab5fSopenharmony_ci a2 = t; 120373af6ab5fSopenharmony_ci+let qi3 = new S(); 120383af6ab5fSopenharmony_ci+let qi4 = new T(); 120393af6ab5fSopenharmony_ci\ No newline at end of file 120403af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersNumericNames.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersNumericNames.ts 120413af6ab5fSopenharmony_ciindex b25c949f42..7372988241 100644 120423af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersNumericNames.ts 120433af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersNumericNames.ts 120443af6ab5fSopenharmony_ci@@ -39,3 +39,5 @@ b2 = a2; 120453af6ab5fSopenharmony_ci a2 = b; 120463af6ab5fSopenharmony_ci a2 = t2; 120473af6ab5fSopenharmony_ci a2 = t; 120483af6ab5fSopenharmony_ci+let qi1 = new S(); 120493af6ab5fSopenharmony_ci+let qi2 = new T(); 120503af6ab5fSopenharmony_ci\ No newline at end of file 120513af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance2.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance2.ts 120523af6ab5fSopenharmony_ciindex 9e6cd52ac2..c511bfa71a 100644 120533af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance2.ts 120543af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance2.ts 120553af6ab5fSopenharmony_ci@@ -66,4 +66,8 @@ interface I extends A { 120563af6ab5fSopenharmony_ci a16: <T extends Base>(x: T) => number[]; // ok 120573af6ab5fSopenharmony_ci a17: <T>(x: (a: T) => T) => T[]; // ok 120583af6ab5fSopenharmony_ci a18: <T>(x: (a: T) => T) => T[]; // ok, no inferences for T but assignable to any 120593af6ab5fSopenharmony_ci-} 120603af6ab5fSopenharmony_ci\ No newline at end of file 120613af6ab5fSopenharmony_ci+} 120623af6ab5fSopenharmony_ci+ 120633af6ab5fSopenharmony_ci+let qi14 = new Derived(); 120643af6ab5fSopenharmony_ci+let qi15 = new Derived2(); 120653af6ab5fSopenharmony_ci+let qi16 = new OtherDerived(); 120663af6ab5fSopenharmony_ci\ No newline at end of file 120673af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance4.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance4.ts 120683af6ab5fSopenharmony_ciindex dd10ee7646..bb1f737657 100644 120693af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance4.ts 120703af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance4.ts 120713af6ab5fSopenharmony_ci@@ -46,4 +46,8 @@ interface I extends A { 120723af6ab5fSopenharmony_ci a16: <T>(x: { a: T; b: T }) => T[]; // ok, more general parameter type 120733af6ab5fSopenharmony_ci a17: <T>(x: (a: T) => T) => T[]; // ok 120743af6ab5fSopenharmony_ci a18: (x: <T>(a: T) => T) => any[]; // ok 120753af6ab5fSopenharmony_ci-} 120763af6ab5fSopenharmony_ci\ No newline at end of file 120773af6ab5fSopenharmony_ci+} 120783af6ab5fSopenharmony_ci+ 120793af6ab5fSopenharmony_ci+let qi14 = new Derived(); 120803af6ab5fSopenharmony_ci+let qi15 = new Derived2(); 120813af6ab5fSopenharmony_ci+let qi16 = new OtherDerived(); 120823af6ab5fSopenharmony_ci\ No newline at end of file 120833af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance5.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance5.ts 120843af6ab5fSopenharmony_ciindex bf60d6518c..ef4e179af9 100644 120853af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance5.ts 120863af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance5.ts 120873af6ab5fSopenharmony_ci@@ -45,4 +45,7 @@ interface I extends B { 120883af6ab5fSopenharmony_ci a12: <T extends Array<Base>>(x: Array<Base>, y: T) => Array<Derived>; // ok, less specific parameter type 120893af6ab5fSopenharmony_ci a13: <T extends Array<Derived>>(x: Array<Base>, y: T) => T; // ok, T = Array<Derived>, satisfies constraint, contextual signature instantiation succeeds 120903af6ab5fSopenharmony_ci a14: <T, U>(x: { a: T; b: U }) => T; // ok 120913af6ab5fSopenharmony_ci-} 120923af6ab5fSopenharmony_ci\ No newline at end of file 120933af6ab5fSopenharmony_ci+} 120943af6ab5fSopenharmony_ci+let qi14 = new Derived(); 120953af6ab5fSopenharmony_ci+let qi15 = new Derived2(); 120963af6ab5fSopenharmony_ci+let qi16 = new OtherDerived(); 120973af6ab5fSopenharmony_ci\ No newline at end of file 120983af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance2.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance2.ts 120993af6ab5fSopenharmony_ciindex 65e4f4c962..8d842b7d7e 100644 121003af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance2.ts 121013af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance2.ts 121023af6ab5fSopenharmony_ci@@ -66,4 +66,8 @@ interface I extends A { 121033af6ab5fSopenharmony_ci a16: new <T extends Base>(x: T) => number[]; // ok 121043af6ab5fSopenharmony_ci a17: new <T>(x: new (a: T) => T) => T[]; // ok 121053af6ab5fSopenharmony_ci a18: new <T>(x: new (a: T) => T) => T[]; // ok, no inferences for T but assignable to any 121063af6ab5fSopenharmony_ci-} 121073af6ab5fSopenharmony_ci\ No newline at end of file 121083af6ab5fSopenharmony_ci+} 121093af6ab5fSopenharmony_ci+ 121103af6ab5fSopenharmony_ci+let qi14 = new Derived(); 121113af6ab5fSopenharmony_ci+let qi15 = new Derived2(); 121123af6ab5fSopenharmony_ci+let qi16 = new OtherDerived(); 121133af6ab5fSopenharmony_ci\ No newline at end of file 121143af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance4.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance4.ts 121153af6ab5fSopenharmony_ciindex 9dfcf5548a..8b57d6a8c7 100644 121163af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance4.ts 121173af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance4.ts 121183af6ab5fSopenharmony_ci@@ -56,4 +56,7 @@ interface I extends A { 121193af6ab5fSopenharmony_ci a18: new <T extends Base>(x: T) => number[]; // ok, more general parameter type 121203af6ab5fSopenharmony_ci a19: new <T extends Base>(x: new (a: T) => T) => T[]; // ok 121213af6ab5fSopenharmony_ci a20: new (x: new <T extends Base>(a: T) => T) => any[]; // ok 121223af6ab5fSopenharmony_ci-} 121233af6ab5fSopenharmony_ci\ No newline at end of file 121243af6ab5fSopenharmony_ci+} 121253af6ab5fSopenharmony_ci+let qi14 = new Derived(); 121263af6ab5fSopenharmony_ci+let qi15 = new Derived2(); 121273af6ab5fSopenharmony_ci+let qi16 = new OtherDerived(); 121283af6ab5fSopenharmony_ci\ No newline at end of file 121293af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance5.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance5.ts 121303af6ab5fSopenharmony_ciindex f33820218e..6ba5e454f6 100644 121313af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance5.ts 121323af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance5.ts 121333af6ab5fSopenharmony_ci@@ -45,4 +45,7 @@ interface I extends B { 121343af6ab5fSopenharmony_ci a12: new <T extends Array<Base>>(x: Array<Base>, y: T) => Array<Derived>; // ok, less specific parameter type 121353af6ab5fSopenharmony_ci a13: new <T extends Array<Derived>>(x: Array<Base>, y: T) => T; // ok, T = Array<Derived>, satisfies constraint, contextual signature instantiation succeeds 121363af6ab5fSopenharmony_ci a14: new <T, U>(x: { a: T; b: U }) => T; // ok 121373af6ab5fSopenharmony_ci-} 121383af6ab5fSopenharmony_ci\ No newline at end of file 121393af6ab5fSopenharmony_ci+} 121403af6ab5fSopenharmony_ci+let qi14 = new Derived(); 121413af6ab5fSopenharmony_ci+let qi15 = new Derived2(); 121423af6ab5fSopenharmony_ci+let qi16 = new OtherDerived(); 121433af6ab5fSopenharmony_ci\ No newline at end of file 121443af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/everyTypeAssignableToAny.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/everyTypeAssignableToAny.ts 121453af6ab5fSopenharmony_ciindex 6c8670abaa..407e128678 100644 121463af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/everyTypeAssignableToAny.ts 121473af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/everyTypeAssignableToAny.ts 121483af6ab5fSopenharmony_ci@@ -53,6 +53,8 @@ function foo<T, U /*extends T*/, V extends Date>(x: T, y: U, z: V) { 121493af6ab5fSopenharmony_ci a = y; 121503af6ab5fSopenharmony_ci a = z; 121513af6ab5fSopenharmony_ci } 121523af6ab5fSopenharmony_ci+ 121533af6ab5fSopenharmony_ci+let ccc = new C(); 121543af6ab5fSopenharmony_ci //function foo<T, U extends T, V extends Date>(x: T, y: U, z: V) { 121553af6ab5fSopenharmony_ci // a = x; 121563af6ab5fSopenharmony_ci // a = y; 121573af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/nullAssignableToEveryType.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/nullAssignableToEveryType.ts 121583af6ab5fSopenharmony_ciindex b0f55331d7..cc755558ff 100644 121593af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/nullAssignableToEveryType.ts 121603af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/nullAssignableToEveryType.ts 121613af6ab5fSopenharmony_ci@@ -35,7 +35,7 @@ function foo<T, U, V extends Date>(x: T, y: U, z: V) { 121623af6ab5fSopenharmony_ci y = null; 121633af6ab5fSopenharmony_ci z = null; 121643af6ab5fSopenharmony_ci } 121653af6ab5fSopenharmony_ci- 121663af6ab5fSopenharmony_ci+let cc = new C(); 121673af6ab5fSopenharmony_ci //function foo<T, U extends T, V extends Date>(x: T, y: U, z: V) { 121683af6ab5fSopenharmony_ci // x = null; 121693af6ab5fSopenharmony_ci // y = null; 121703af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/undefinedAssignableToEveryType.ts b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/undefinedAssignableToEveryType.ts 121713af6ab5fSopenharmony_ciindex 5fc14274a1..f296781ef1 100644 121723af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/undefinedAssignableToEveryType.ts 121733af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/assignmentCompatibility/undefinedAssignableToEveryType.ts 121743af6ab5fSopenharmony_ci@@ -35,6 +35,7 @@ function foo<T, U, V extends Date>(x: T, y: U, z: V) { 121753af6ab5fSopenharmony_ci y = undefined; 121763af6ab5fSopenharmony_ci z = undefined; 121773af6ab5fSopenharmony_ci } 121783af6ab5fSopenharmony_ci+let cc = new C(); 121793af6ab5fSopenharmony_ci //function foo<T, U extends T, V extends Date>(x: T, y: U, z: V) { 121803af6ab5fSopenharmony_ci // x = undefined; 121813af6ab5fSopenharmony_ci // y = undefined; 121823af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions.ts b/tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions.ts 121833af6ab5fSopenharmony_ciindex 5f02210478..1e1889cc10 100644 121843af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions.ts 121853af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions.ts 121863af6ab5fSopenharmony_ci@@ -23,4 +23,7 @@ var r11 = true ? base : derived2; 121873af6ab5fSopenharmony_ci 121883af6ab5fSopenharmony_ci function foo5<T, U>(t: T, u: U): Object { 121893af6ab5fSopenharmony_ci return true ? t : u; // BCT is Object 121903af6ab5fSopenharmony_ci-} 121913af6ab5fSopenharmony_ci\ No newline at end of file 121923af6ab5fSopenharmony_ci+} 121933af6ab5fSopenharmony_ci+ 121943af6ab5fSopenharmony_ci+let qy10 = new Derived(); 121953af6ab5fSopenharmony_ci+let qy11 = new Derived2(); 121963af6ab5fSopenharmony_ci\ No newline at end of file 121973af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions2.ts b/tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions2.ts 121983af6ab5fSopenharmony_ciindex 8e6f345ea4..f1512e3536 100644 121993af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions2.ts 122003af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions2.ts 122013af6ab5fSopenharmony_ci@@ -21,4 +21,6 @@ function foo2<T extends U, U>(t: T, u: U) { // Error for referencing own type pa 122023af6ab5fSopenharmony_ci 122033af6ab5fSopenharmony_ci function foo3<T extends U, U extends V, V>(t: T, u: U) { 122043af6ab5fSopenharmony_ci return true ? t : u; 122053af6ab5fSopenharmony_ci-} 122063af6ab5fSopenharmony_ci\ No newline at end of file 122073af6ab5fSopenharmony_ci+} 122083af6ab5fSopenharmony_ci+let qy8 = new Derived(); 122093af6ab5fSopenharmony_ci+let qy9 = new Derived2(); 122103af6ab5fSopenharmony_ci\ No newline at end of file 122113af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/bestCommonType/heterogeneousArrayLiterals.ts b/tests/cases/conformance/types/typeRelationships/bestCommonType/heterogeneousArrayLiterals.ts 122123af6ab5fSopenharmony_ciindex 0f498c570a..13ecea225a 100644 122133af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/bestCommonType/heterogeneousArrayLiterals.ts 122143af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/bestCommonType/heterogeneousArrayLiterals.ts 122153af6ab5fSopenharmony_ci@@ -99,6 +99,8 @@ function foo4<T extends Base, U extends Base>(t: T, u: U) { 122163af6ab5fSopenharmony_ci 122173af6ab5fSopenharmony_ci var k: Base[] = [t, u]; 122183af6ab5fSopenharmony_ci } 122193af6ab5fSopenharmony_ci+let qy8 = new Derived(); 122203af6ab5fSopenharmony_ci+let qy9 = new Derived2(); 122213af6ab5fSopenharmony_ci 122223af6ab5fSopenharmony_ci //function foo3<T extends U, U extends Derived>(t: T, u: U) { 122233af6ab5fSopenharmony_ci // var a = [t, t]; // T[] 122243af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/instanceOf/narrowingConstrainedTypeVariable.ts b/tests/cases/conformance/types/typeRelationships/instanceOf/narrowingConstrainedTypeVariable.ts 122253af6ab5fSopenharmony_ciindex 04623503f9..491876d8ff 100644 122263af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/instanceOf/narrowingConstrainedTypeVariable.ts 122273af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/instanceOf/narrowingConstrainedTypeVariable.ts 122283af6ab5fSopenharmony_ci@@ -34,3 +34,6 @@ function f3<T extends E>(v: T | { x: string }) { 122293af6ab5fSopenharmony_ci const y: { x: string } = v; 122303af6ab5fSopenharmony_ci } 122313af6ab5fSopenharmony_ci } 122323af6ab5fSopenharmony_ci+let qy5 = new C(); 122333af6ab5fSopenharmony_ci+let qy6 = new D(); 122343af6ab5fSopenharmony_ci+let qy7 = new E(); 122353af6ab5fSopenharmony_ci\ No newline at end of file 122363af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/recursiveTypes/arrayLiteralsWithRecursiveGenerics.ts b/tests/cases/conformance/types/typeRelationships/recursiveTypes/arrayLiteralsWithRecursiveGenerics.ts 122373af6ab5fSopenharmony_ciindex e7260831a4..35de332a33 100644 122383af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/recursiveTypes/arrayLiteralsWithRecursiveGenerics.ts 122393af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/recursiveTypes/arrayLiteralsWithRecursiveGenerics.ts 122403af6ab5fSopenharmony_ci@@ -22,4 +22,8 @@ var ys = [list, list2]; // {}[] 122413af6ab5fSopenharmony_ci var zs = [list, null]; // List<number>[] 122423af6ab5fSopenharmony_ci 122433af6ab5fSopenharmony_ci var myDerivedList: DerivedList<number>; 122443af6ab5fSopenharmony_ci-var as = [list, myDerivedList]; // List<number>[] 122453af6ab5fSopenharmony_ci\ No newline at end of file 122463af6ab5fSopenharmony_ci+var as = [list, myDerivedList]; // List<number>[] 122473af6ab5fSopenharmony_ci+ 122483af6ab5fSopenharmony_ci+let li = new List(); 122493af6ab5fSopenharmony_ci+let der = new DerivedList(); 122503af6ab5fSopenharmony_ci+let my = new MyList(); 122513af6ab5fSopenharmony_ci\ No newline at end of file 122523af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypeInGenericConstraint.ts b/tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypeInGenericConstraint.ts 122533af6ab5fSopenharmony_ciindex ac6286bd81..e4d37f2abe 100644 122543af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypeInGenericConstraint.ts 122553af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypeInGenericConstraint.ts 122563af6ab5fSopenharmony_ci@@ -10,4 +10,7 @@ class D<T> { 122573af6ab5fSopenharmony_ci x: G<G<T>>; 122583af6ab5fSopenharmony_ci } 122593af6ab5fSopenharmony_ci 122603af6ab5fSopenharmony_ci-var c1 = new Foo<D<string>>(); // ok, circularity in assignment compat check causes success 122613af6ab5fSopenharmony_ci\ No newline at end of file 122623af6ab5fSopenharmony_ci+var c1 = new Foo<D<string>>(); // ok, circularity in assignment compat check causes success 122633af6ab5fSopenharmony_ci+let g = new G(); 122643af6ab5fSopenharmony_ci+let foo = new Foo(); 122653af6ab5fSopenharmony_ci+let d = new D(); 122663af6ab5fSopenharmony_ci\ No newline at end of file 122673af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypesUsedAsFunctionParameters.ts b/tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypesUsedAsFunctionParameters.ts 122683af6ab5fSopenharmony_ciindex 6eba1f2836..6cdf1db8be 100644 122693af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypesUsedAsFunctionParameters.ts 122703af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypesUsedAsFunctionParameters.ts 122713af6ab5fSopenharmony_ci@@ -40,4 +40,7 @@ function other<T extends List<U>, U>() { 122723af6ab5fSopenharmony_ci 122733af6ab5fSopenharmony_ci var r = foo5(list); 122743af6ab5fSopenharmony_ci var r2 = foo5(myList); 122753af6ab5fSopenharmony_ci-} 122763af6ab5fSopenharmony_ci\ No newline at end of file 122773af6ab5fSopenharmony_ci+} 122783af6ab5fSopenharmony_ci+ 122793af6ab5fSopenharmony_ci+let li = new List(); 122803af6ab5fSopenharmony_ci+let my = new MyList(); 122813af6ab5fSopenharmony_ci\ No newline at end of file 122823af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/nullIsSubtypeOfEverythingButUndefined.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/nullIsSubtypeOfEverythingButUndefined.ts 122833af6ab5fSopenharmony_ciindex 24f2ab71d4..ced02bcefe 100644 122843af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/nullIsSubtypeOfEverythingButUndefined.ts 122853af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/nullIsSubtypeOfEverythingButUndefined.ts 122863af6ab5fSopenharmony_ci@@ -88,3 +88,7 @@ var r19 = true ? null : new Object(); 122873af6ab5fSopenharmony_ci 122883af6ab5fSopenharmony_ci var r20 = true ? {} : null; 122893af6ab5fSopenharmony_ci var r20 = true ? null : {}; 122903af6ab5fSopenharmony_ci+ 122913af6ab5fSopenharmony_ci+let c11 = new C1(); 122923af6ab5fSopenharmony_ci+let c12 = new C2(); 122933af6ab5fSopenharmony_ci+let c13 = new c(); 122943af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts 122953af6ab5fSopenharmony_ciindex c7e9c0fc8e..0f00bc8c02 100644 122963af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts 122973af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts 122983af6ab5fSopenharmony_ci@@ -97,4 +97,6 @@ function f15<T, U extends T>(x: any) { } 122993af6ab5fSopenharmony_ci 123003af6ab5fSopenharmony_ci function f16<T extends String, U extends T>(x: 'a'); 123013af6ab5fSopenharmony_ci function f16<T extends String, U extends T>(x: U); 123023af6ab5fSopenharmony_ci-function f16<T extends String, U extends T>(x: any) { } 123033af6ab5fSopenharmony_ci\ No newline at end of file 123043af6ab5fSopenharmony_ci+function f16<T extends String, U extends T>(x: any) { } 123053af6ab5fSopenharmony_ci+ 123063af6ab5fSopenharmony_ci+let ccc = new C(); 123073af6ab5fSopenharmony_ci\ No newline at end of file 123083af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfAny.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfAny.ts 123093af6ab5fSopenharmony_ciindex 0e5df54319..d785a27b7b 100644 123103af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfAny.ts 123113af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfAny.ts 123123af6ab5fSopenharmony_ci@@ -130,4 +130,7 @@ interface I19 { 123133af6ab5fSopenharmony_ci interface I20 { 123143af6ab5fSopenharmony_ci [x: string]: any; 123153af6ab5fSopenharmony_ci foo: {}; 123163af6ab5fSopenharmony_ci-} 123173af6ab5fSopenharmony_ci\ No newline at end of file 123183af6ab5fSopenharmony_ci+} 123193af6ab5fSopenharmony_ci+let a1 = new A(); 123203af6ab5fSopenharmony_ci+let a2 = new A2(); 123213af6ab5fSopenharmony_ci+let c1 = new c(); 123223af6ab5fSopenharmony_ci\ No newline at end of file 123233af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts 123243af6ab5fSopenharmony_ciindex 9edf4f5f41..990e4b8cc5 100644 123253af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts 123263af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts 123273af6ab5fSopenharmony_ci@@ -154,4 +154,7 @@ function f20<T extends Number>(x: T) { 123283af6ab5fSopenharmony_ci function f21<T extends Number>(x: T) { 123293af6ab5fSopenharmony_ci var r20 = true ? {} : x; // ok 123303af6ab5fSopenharmony_ci var r20 = true ? x : {}; // ok 123313af6ab5fSopenharmony_ci-} 123323af6ab5fSopenharmony_ci\ No newline at end of file 123333af6ab5fSopenharmony_ci+} 123343af6ab5fSopenharmony_ci+ 123353af6ab5fSopenharmony_ci+let c1 = new C1(); 123363af6ab5fSopenharmony_ci+let c2 = new C2(); 123373af6ab5fSopenharmony_ci\ No newline at end of file 123383af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures2.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures2.ts 123393af6ab5fSopenharmony_ciindex e8ae73c5fb..4a29484b12 100644 123403af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures2.ts 123413af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures2.ts 123423af6ab5fSopenharmony_ci@@ -5,6 +5,7 @@ class Derived extends Base { bar: string; } 123433af6ab5fSopenharmony_ci class Derived2 extends Derived { baz: string; } 123443af6ab5fSopenharmony_ci class OtherDerived extends Base { bing: string; } 123453af6ab5fSopenharmony_ci 123463af6ab5fSopenharmony_ci+ 123473af6ab5fSopenharmony_ci declare function foo1(a: (x: number) => number[]): typeof a; 123483af6ab5fSopenharmony_ci declare function foo1(a: any): any; 123493af6ab5fSopenharmony_ci 123503af6ab5fSopenharmony_ci@@ -169,3 +170,8 @@ var r17arg1 = <T>(x: (a: T) => T) => <T[]>null; 123513af6ab5fSopenharmony_ci var r17 = foo17(r17arg1); // any 123523af6ab5fSopenharmony_ci var r18arg1 = <T>(x: (a: T) => T) => <T[]>null; 123533af6ab5fSopenharmony_ci var r18 = foo18(r18arg1); 123543af6ab5fSopenharmony_ci+ 123553af6ab5fSopenharmony_ci+ 123563af6ab5fSopenharmony_ci+let der1 = new Derived(); 123573af6ab5fSopenharmony_ci+let der2 = new Derived2(); 123583af6ab5fSopenharmony_ci+let oth = new OtherDerived(); 123593af6ab5fSopenharmony_ci\ No newline at end of file 123603af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures3.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures3.ts 123613af6ab5fSopenharmony_ciindex 505919547f..51c890854f 100644 123623af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures3.ts 123633af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures3.ts 123643af6ab5fSopenharmony_ci@@ -103,6 +103,10 @@ module Errors { 123653af6ab5fSopenharmony_ci 123663af6ab5fSopenharmony_ci var r9arg = <T>(x: (a: T) => T) => <any[]>null; 123673af6ab5fSopenharmony_ci var r9 = foo17(r9arg); // (x: { <T extends Derived >(a: T): T; <T extends Base >(a: T): T; }): any[]; (x: { <T extends Derived2>(a: T): T; <T extends Base>(a: T): T; }): any[]; 123683af6ab5fSopenharmony_ci+ let ba = new Base(); 123693af6ab5fSopenharmony_ci+ let der1 = new Derived(); 123703af6ab5fSopenharmony_ci+ let der2 = new Derived2(); 123713af6ab5fSopenharmony_ci+ let oth = new OtherDerived(); 123723af6ab5fSopenharmony_ci } 123733af6ab5fSopenharmony_ci 123743af6ab5fSopenharmony_ci module WithGenericSignaturesInBaseType { 123753af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures4.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures4.ts 123763af6ab5fSopenharmony_ciindex e86fc51d44..e043cec402 100644 123773af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures4.ts 123783af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures4.ts 123793af6ab5fSopenharmony_ci@@ -108,4 +108,8 @@ var r17arg = <T>(x: (a: T) => T) => <T[]>null; 123803af6ab5fSopenharmony_ci var r17 = foo17(r17arg); 123813af6ab5fSopenharmony_ci 123823af6ab5fSopenharmony_ci var r18arg = (x: <T>(a: T) => T) => <any[]>null; 123833af6ab5fSopenharmony_ci-var r18 = foo18(r18arg); 123843af6ab5fSopenharmony_ci\ No newline at end of file 123853af6ab5fSopenharmony_ci+var r18 = foo18(r18arg); 123863af6ab5fSopenharmony_ci+ 123873af6ab5fSopenharmony_ci+let der =new Derived(); 123883af6ab5fSopenharmony_ci+let der2 = new Derived2(); 123893af6ab5fSopenharmony_ci+let oth = new OtherDerived(); 123903af6ab5fSopenharmony_ci\ No newline at end of file 123913af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures2.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures2.ts 123923af6ab5fSopenharmony_ciindex 46d1c9e91d..683db9f182 100644 123933af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures2.ts 123943af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures2.ts 123953af6ab5fSopenharmony_ci@@ -169,3 +169,8 @@ var r17arg1: new <T>(x: (a: T) => T) => T[]; 123963af6ab5fSopenharmony_ci var r17 = foo17(r17arg1); // any 123973af6ab5fSopenharmony_ci var r18arg1: new <T>(x: (a: T) => T) => T[]; 123983af6ab5fSopenharmony_ci var r18 = foo18(r18arg1); 123993af6ab5fSopenharmony_ci+ 124003af6ab5fSopenharmony_ci+ 124013af6ab5fSopenharmony_ci+let der =new Derived(); 124023af6ab5fSopenharmony_ci+let der2 = new Derived2(); 124033af6ab5fSopenharmony_ci+let oth = new OtherDerived(); 124043af6ab5fSopenharmony_ci\ No newline at end of file 124053af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures3.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures3.ts 124063af6ab5fSopenharmony_ciindex 215a5d1d4d..bbaddcabfc 100644 124073af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures3.ts 124083af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures3.ts 124093af6ab5fSopenharmony_ci@@ -105,6 +105,10 @@ module Errors { 124103af6ab5fSopenharmony_ci 124113af6ab5fSopenharmony_ci var r9arg: new <T>(x: new (a: T) => T) => any[]; 124123af6ab5fSopenharmony_ci var r9 = foo17(r9arg); // // (x: { <T extends Derived >(a: T): T; <T extends Base >(a: T): T; }): any[]; (x: { <T extends Derived2>(a: T): T; <T extends Base>(a: T): T; }): any[]; 124133af6ab5fSopenharmony_ci+ let ba = new Base(); 124143af6ab5fSopenharmony_ci+ let der1 = new Derived(); 124153af6ab5fSopenharmony_ci+ let der2 = new Derived2(); 124163af6ab5fSopenharmony_ci+ let oth = new OtherDerived(); 124173af6ab5fSopenharmony_ci } 124183af6ab5fSopenharmony_ci 124193af6ab5fSopenharmony_ci module WithGenericSignaturesInBaseType { 124203af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures4.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures4.ts 124213af6ab5fSopenharmony_ciindex 830139d3fa..5d5145d29d 100644 124223af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures4.ts 124233af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures4.ts 124243af6ab5fSopenharmony_ci@@ -108,4 +108,8 @@ var r17arg: new <T>(x: new (a: T) => T) => T[]; 124253af6ab5fSopenharmony_ci var r17 = foo17(r17arg); 124263af6ab5fSopenharmony_ci 124273af6ab5fSopenharmony_ci var r18arg: new (x: new <T>(a: T) => T) => any[]; 124283af6ab5fSopenharmony_ci-var r18 = foo18(r18arg); 124293af6ab5fSopenharmony_ci\ No newline at end of file 124303af6ab5fSopenharmony_ci+var r18 = foo18(r18arg); 124313af6ab5fSopenharmony_ci+ 124323af6ab5fSopenharmony_ci+let der =new Derived(); 124333af6ab5fSopenharmony_ci+let der2 = new Derived2(); 124343af6ab5fSopenharmony_ci+let oth = new OtherDerived(); 124353af6ab5fSopenharmony_ci\ No newline at end of file 124363af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures5.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures5.ts 124373af6ab5fSopenharmony_ciindex f33820218e..f3c1c5d20d 100644 124383af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures5.ts 124393af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures5.ts 124403af6ab5fSopenharmony_ci@@ -6,6 +6,7 @@ class Derived extends Base { bar: string; } 124413af6ab5fSopenharmony_ci class Derived2 extends Derived { baz: string; } 124423af6ab5fSopenharmony_ci class OtherDerived extends Base { bing: string; } 124433af6ab5fSopenharmony_ci 124443af6ab5fSopenharmony_ci+ 124453af6ab5fSopenharmony_ci interface A { // T 124463af6ab5fSopenharmony_ci // M's 124473af6ab5fSopenharmony_ci a: new (x: number) => number[]; 124483af6ab5fSopenharmony_ci@@ -45,4 +46,7 @@ interface I extends B { 124493af6ab5fSopenharmony_ci a12: new <T extends Array<Base>>(x: Array<Base>, y: T) => Array<Derived>; // ok, less specific parameter type 124503af6ab5fSopenharmony_ci a13: new <T extends Array<Derived>>(x: Array<Base>, y: T) => T; // ok, T = Array<Derived>, satisfies constraint, contextual signature instantiation succeeds 124513af6ab5fSopenharmony_ci a14: new <T, U>(x: { a: T; b: U }) => T; // ok 124523af6ab5fSopenharmony_ci-} 124533af6ab5fSopenharmony_ci\ No newline at end of file 124543af6ab5fSopenharmony_ci+} 124553af6ab5fSopenharmony_ci+let der =new Derived(); 124563af6ab5fSopenharmony_ci+let der2 = new Derived2(); 124573af6ab5fSopenharmony_ci+let oth = new OtherDerived(); 124583af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithObjectMembers4.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithObjectMembers4.ts 124593af6ab5fSopenharmony_ciindex b50e1f7106..2c99af9515 100644 124603af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithObjectMembers4.ts 124613af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithObjectMembers4.ts 124623af6ab5fSopenharmony_ci@@ -30,4 +30,8 @@ class A3 { 124633af6ab5fSopenharmony_ci 124643af6ab5fSopenharmony_ci class B3 extends A3 { 124653af6ab5fSopenharmony_ci '1.1': Derived; // ok, inherits '1' 124663af6ab5fSopenharmony_ci-} 124673af6ab5fSopenharmony_ci\ No newline at end of file 124683af6ab5fSopenharmony_ci+} 124693af6ab5fSopenharmony_ci+let der = new Derived(); 124703af6ab5fSopenharmony_ci+let b1 = new B(); 124713af6ab5fSopenharmony_ci+let b2 = new B2(); 124723af6ab5fSopenharmony_ci+let b3 = new B3(); 124733af6ab5fSopenharmony_ci\ No newline at end of file 124743af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/undefinedIsSubtypeOfEverything.ts b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/undefinedIsSubtypeOfEverything.ts 124753af6ab5fSopenharmony_ciindex 7ee0906ee2..08c7e7d192 100644 124763af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/undefinedIsSubtypeOfEverything.ts 124773af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/undefinedIsSubtypeOfEverything.ts 124783af6ab5fSopenharmony_ci@@ -118,3 +118,28 @@ class D16 extends Base { 124793af6ab5fSopenharmony_ci class D17 extends Base { 124803af6ab5fSopenharmony_ci foo: {}; 124813af6ab5fSopenharmony_ci } 124823af6ab5fSopenharmony_ci+ 124833af6ab5fSopenharmony_ci+ 124843af6ab5fSopenharmony_ci+let d0 = new D0(); 124853af6ab5fSopenharmony_ci+let da = new DA(); 124863af6ab5fSopenharmony_ci+let d1 = new D1() 124873af6ab5fSopenharmony_ci+let d1a = new D1A() 124883af6ab5fSopenharmony_ci+let d2 = new D2() 124893af6ab5fSopenharmony_ci+let d2a = new D2A() 124903af6ab5fSopenharmony_ci+let d3 = new D3() 124913af6ab5fSopenharmony_ci+let d3a = new D1A() 124923af6ab5fSopenharmony_ci+let d4 = new D4() 124933af6ab5fSopenharmony_ci+let d5 = new D5() 124943af6ab5fSopenharmony_ci+let d6 = new D6() 124953af6ab5fSopenharmony_ci+let d7 = new D7() 124963af6ab5fSopenharmony_ci+let d8 = new D8() 124973af6ab5fSopenharmony_ci+let d9 = new D9() 124983af6ab5fSopenharmony_ci+let d10 = new D10() 124993af6ab5fSopenharmony_ci+let d11 = new D11() 125003af6ab5fSopenharmony_ci+let d12 = new D12() 125013af6ab5fSopenharmony_ci+let c1 = new c() 125023af6ab5fSopenharmony_ci+let d13 = new D13() 125033af6ab5fSopenharmony_ci+let d14 = new D14() 125043af6ab5fSopenharmony_ci+let d15 = new D15() 125053af6ab5fSopenharmony_ci+let d16 = new D16() 125063af6ab5fSopenharmony_ci+let d17 = new D17() 125073af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentity.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentity.ts 125083af6ab5fSopenharmony_ciindex 225a974181..acf6300dba 100644 125093af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentity.ts 125103af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentity.ts 125113af6ab5fSopenharmony_ci@@ -85,4 +85,8 @@ function foo13(x: any) { } 125123af6ab5fSopenharmony_ci 125133af6ab5fSopenharmony_ci function foo14(x: I); 125143af6ab5fSopenharmony_ci function foo14(x: typeof b); // error 125153af6ab5fSopenharmony_ci-function foo14(x: any) { } 125163af6ab5fSopenharmony_ci\ No newline at end of file 125173af6ab5fSopenharmony_ci+function foo14(x: any) { } 125183af6ab5fSopenharmony_ci+ 125193af6ab5fSopenharmony_ci+let a1 = new A(); 125203af6ab5fSopenharmony_ci+let b1 = new B(); 125213af6ab5fSopenharmony_ci+let c1 = new C(); 125223af6ab5fSopenharmony_ci\ No newline at end of file 125233af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentity2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentity2.ts 125243af6ab5fSopenharmony_ciindex fefde23a69..2427d26180 100644 125253af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentity2.ts 125263af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentity2.ts 125273af6ab5fSopenharmony_ci@@ -62,4 +62,7 @@ function foo13(x: any) { } 125283af6ab5fSopenharmony_ci 125293af6ab5fSopenharmony_ci function foo14(x: I); 125303af6ab5fSopenharmony_ci function foo14(x: typeof b); // ok 125313af6ab5fSopenharmony_ci-function foo14(x: any) { } 125323af6ab5fSopenharmony_ci\ No newline at end of file 125333af6ab5fSopenharmony_ci+function foo14(x: any) { } 125343af6ab5fSopenharmony_ci+let aa = new A(); 125353af6ab5fSopenharmony_ci+let bb = new B(); 125363af6ab5fSopenharmony_ci+let cc = new C(); 125373af6ab5fSopenharmony_ci\ No newline at end of file 125383af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignatures.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignatures.ts 125393af6ab5fSopenharmony_ciindex 94038f6df9..bb5d06c3fc 100644 125403af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignatures.ts 125413af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignatures.ts 125423af6ab5fSopenharmony_ci@@ -97,4 +97,7 @@ function foo14(x: any) { } 125433af6ab5fSopenharmony_ci 125443af6ab5fSopenharmony_ci function foo15(x: I2<string>); 125453af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 125463af6ab5fSopenharmony_ci-function foo15(x: any) { } 125473af6ab5fSopenharmony_ci\ No newline at end of file 125483af6ab5fSopenharmony_ci+function foo15(x: any) { } 125493af6ab5fSopenharmony_ci+let qy17 = new A(); 125503af6ab5fSopenharmony_ci+let qy18 = new B(); 125513af6ab5fSopenharmony_ci+let qy19 = new C(); 125523af6ab5fSopenharmony_ci\ No newline at end of file 125533af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignatures2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignatures2.ts 125543af6ab5fSopenharmony_ciindex 699f0f73f7..99aafb4b8a 100644 125553af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignatures2.ts 125563af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignatures2.ts 125573af6ab5fSopenharmony_ci@@ -97,4 +97,7 @@ function foo14(x: any) { } 125583af6ab5fSopenharmony_ci 125593af6ab5fSopenharmony_ci function foo15(x: I2<string>); 125603af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 125613af6ab5fSopenharmony_ci-function foo15(x: any) { } 125623af6ab5fSopenharmony_ci\ No newline at end of file 125633af6ab5fSopenharmony_ci+function foo15(x: any) { } 125643af6ab5fSopenharmony_ci+let aa = new A(); 125653af6ab5fSopenharmony_ci+let bb = new B(); 125663af6ab5fSopenharmony_ci+let cc = new C(); 125673af6ab5fSopenharmony_ci\ No newline at end of file 125683af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts 125693af6ab5fSopenharmony_ciindex b62b558d06..8a23c2c1bd 100644 125703af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts 125713af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts 125723af6ab5fSopenharmony_ci@@ -97,4 +97,7 @@ function foo14(x: any) { } 125733af6ab5fSopenharmony_ci 125743af6ab5fSopenharmony_ci function foo15(x: I2<string>); 125753af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 125763af6ab5fSopenharmony_ci-function foo15(x: any) { } 125773af6ab5fSopenharmony_ci\ No newline at end of file 125783af6ab5fSopenharmony_ci+function foo15(x: any) { } 125793af6ab5fSopenharmony_ci+let aa = new A(); 125803af6ab5fSopenharmony_ci+let bb = new B(); 125813af6ab5fSopenharmony_ci+let cc = new C(); 125823af6ab5fSopenharmony_ci\ No newline at end of file 125833af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignaturesWithOverloads.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignaturesWithOverloads.ts 125843af6ab5fSopenharmony_ciindex 0aaf7c30f2..cc561aa934 100644 125853af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignaturesWithOverloads.ts 125863af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignaturesWithOverloads.ts 125873af6ab5fSopenharmony_ci@@ -113,4 +113,8 @@ function foo14(x: any) { } 125883af6ab5fSopenharmony_ci 125893af6ab5fSopenharmony_ci function foo15(x: I2<string>); 125903af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 125913af6ab5fSopenharmony_ci-function foo15(x: any) { } 125923af6ab5fSopenharmony_ci\ No newline at end of file 125933af6ab5fSopenharmony_ci+function foo15(x: any) { } 125943af6ab5fSopenharmony_ci+ 125953af6ab5fSopenharmony_ci+let aa = new A(); 125963af6ab5fSopenharmony_ci+let bb = new B(); 125973af6ab5fSopenharmony_ci+let cc = new C(); 125983af6ab5fSopenharmony_ci\ No newline at end of file 125993af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignatures.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignatures.ts 126003af6ab5fSopenharmony_ciindex efec6a715b..964c2a9d43 100644 126013af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignatures.ts 126023af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignatures.ts 126033af6ab5fSopenharmony_ci@@ -84,4 +84,8 @@ function foo13(x: any) { } 126043af6ab5fSopenharmony_ci 126053af6ab5fSopenharmony_ci function foo15(x: I2<string>); 126063af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 126073af6ab5fSopenharmony_ci-function foo15(x: any) { } 126083af6ab5fSopenharmony_ci\ No newline at end of file 126093af6ab5fSopenharmony_ci+function foo15(x: any) { } 126103af6ab5fSopenharmony_ci+ 126113af6ab5fSopenharmony_ci+let a1 = new A('1'); 126123af6ab5fSopenharmony_ci+let b1 = new B('1'); 126133af6ab5fSopenharmony_ci+let c1 = new C(1); 126143af6ab5fSopenharmony_ci\ No newline at end of file 126153af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignatures2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignatures2.ts 126163af6ab5fSopenharmony_ciindex 63e5167a4c..09f632da93 100644 126173af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignatures2.ts 126183af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignatures2.ts 126193af6ab5fSopenharmony_ci@@ -73,4 +73,6 @@ function foo14(x: any) { } 126203af6ab5fSopenharmony_ci 126213af6ab5fSopenharmony_ci function foo15(x: I2<string>); 126223af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 126233af6ab5fSopenharmony_ci-function foo15(x: any) { } 126243af6ab5fSopenharmony_ci\ No newline at end of file 126253af6ab5fSopenharmony_ci+function foo15(x: any) { } 126263af6ab5fSopenharmony_ci+let qy38 = new B(null); 126273af6ab5fSopenharmony_ci+let qy39 =new C(null); 126283af6ab5fSopenharmony_ci\ No newline at end of file 126293af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.ts 126303af6ab5fSopenharmony_ciindex b8fc424b21..b6af7ec955 100644 126313af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.ts 126323af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.ts 126333af6ab5fSopenharmony_ci@@ -73,4 +73,6 @@ function foo14(x: any) { } 126343af6ab5fSopenharmony_ci 126353af6ab5fSopenharmony_ci function foo15(x: I2<string>); 126363af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 126373af6ab5fSopenharmony_ci-function foo15(x: any) { } 126383af6ab5fSopenharmony_ci\ No newline at end of file 126393af6ab5fSopenharmony_ci+function foo15(x: any) { } 126403af6ab5fSopenharmony_ci+let qo23 =new B(null,null); 126413af6ab5fSopenharmony_ci+let qo24 =new C(null,null); 126423af6ab5fSopenharmony_ci\ No newline at end of file 126433af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignatures.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignatures.ts 126443af6ab5fSopenharmony_ciindex d95bc486df..72019e6b9a 100644 126453af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignatures.ts 126463af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignatures.ts 126473af6ab5fSopenharmony_ci@@ -97,4 +97,8 @@ function foo14(x: any) { } 126483af6ab5fSopenharmony_ci 126493af6ab5fSopenharmony_ci function foo15(x: I2); 126503af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 126513af6ab5fSopenharmony_ci-function foo15(x: any) { } 126523af6ab5fSopenharmony_ci\ No newline at end of file 126533af6ab5fSopenharmony_ci+function foo15(x: any) { } 126543af6ab5fSopenharmony_ci+ 126553af6ab5fSopenharmony_ci+let a1 = new A(); 126563af6ab5fSopenharmony_ci+let b1 = new B(); 126573af6ab5fSopenharmony_ci+let c1 = new C(); 126583af6ab5fSopenharmony_ci\ No newline at end of file 126593af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignatures2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignatures2.ts 126603af6ab5fSopenharmony_ciindex 5c009926a0..099927c132 100644 126613af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignatures2.ts 126623af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignatures2.ts 126633af6ab5fSopenharmony_ci@@ -97,4 +97,8 @@ function foo14(x: any) { } 126643af6ab5fSopenharmony_ci 126653af6ab5fSopenharmony_ci function foo15(x: I2); 126663af6ab5fSopenharmony_ci function foo15(x: C<string, number>); // ok 126673af6ab5fSopenharmony_ci-function foo15(x: any) { } 126683af6ab5fSopenharmony_ci\ No newline at end of file 126693af6ab5fSopenharmony_ci+function foo15(x: any) { } 126703af6ab5fSopenharmony_ci+ 126713af6ab5fSopenharmony_ci+let a1 = new A(); 126723af6ab5fSopenharmony_ci+let b1 = new B(); 126733af6ab5fSopenharmony_ci+let c1 = new C(); 126743af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts 126753af6ab5fSopenharmony_ciindex ede6da4040..21f9ed1933 100644 126763af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts 126773af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts 126783af6ab5fSopenharmony_ci@@ -99,4 +99,8 @@ function foo14(x: any) { } 126793af6ab5fSopenharmony_ci 126803af6ab5fSopenharmony_ci function foo15(x: I2); 126813af6ab5fSopenharmony_ci function foo15(x: C<String>); // ok 126823af6ab5fSopenharmony_ci-function foo15(x: any) { } 126833af6ab5fSopenharmony_ci\ No newline at end of file 126843af6ab5fSopenharmony_ci+function foo15(x: any) { } 126853af6ab5fSopenharmony_ci+ 126863af6ab5fSopenharmony_ci+let a1 = new A(); 126873af6ab5fSopenharmony_ci+let b1 = new B(); 126883af6ab5fSopenharmony_ci+let c1 = new C(); 126893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts 126903af6ab5fSopenharmony_ciindex 5fb315c4da..c0ce245917 100644 126913af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts 126923af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts 126933af6ab5fSopenharmony_ci@@ -111,4 +111,8 @@ function foo14(x: any) { } 126943af6ab5fSopenharmony_ci 126953af6ab5fSopenharmony_ci function foo15(x: I2); 126963af6ab5fSopenharmony_ci function foo15(x: C<String, String>); // ok 126973af6ab5fSopenharmony_ci-function foo15(x: any) { } 126983af6ab5fSopenharmony_ci\ No newline at end of file 126993af6ab5fSopenharmony_ci+function foo15(x: any) { } 127003af6ab5fSopenharmony_ci+let a1 = new A(); 127013af6ab5fSopenharmony_ci+let b1 = new B(); 127023af6ab5fSopenharmony_ci+let c1 = new C(); 127033af6ab5fSopenharmony_ci+let d1 = new D(); 127043af6ab5fSopenharmony_ci\ No newline at end of file 127053af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts 127063af6ab5fSopenharmony_ciindex aaae2cbf33..b341b1f6c2 100644 127073af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts 127083af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts 127093af6ab5fSopenharmony_ci@@ -120,4 +120,11 @@ function foo14(x: any) { } 127103af6ab5fSopenharmony_ci 127113af6ab5fSopenharmony_ci function foo15(x: I2); 127123af6ab5fSopenharmony_ci function foo15(x: C<Three, Three>); // ok 127133af6ab5fSopenharmony_ci-function foo15(x: any) { } 127143af6ab5fSopenharmony_ci\ No newline at end of file 127153af6ab5fSopenharmony_ci+function foo15(x: any) { } 127163af6ab5fSopenharmony_ci+ 127173af6ab5fSopenharmony_ci+let one = new One(); 127183af6ab5fSopenharmony_ci+let two = new Two(); 127193af6ab5fSopenharmony_ci+let a1 = new A(); 127203af6ab5fSopenharmony_ci+let b1 = new B(); 127213af6ab5fSopenharmony_ci+let c1 = new C(); 127223af6ab5fSopenharmony_ci+let d1 = new D(); 127233af6ab5fSopenharmony_ci\ No newline at end of file 127243af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts 127253af6ab5fSopenharmony_ciindex 97a657606e..ab7da883ec 100644 127263af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts 127273af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts 127283af6ab5fSopenharmony_ci@@ -99,4 +99,7 @@ function foo14(x: any) { } 127293af6ab5fSopenharmony_ci 127303af6ab5fSopenharmony_ci function foo15(x: I2); 127313af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 127323af6ab5fSopenharmony_ci-function foo15(x: any) { } 127333af6ab5fSopenharmony_ci\ No newline at end of file 127343af6ab5fSopenharmony_ci+function foo15(x: any) { } 127353af6ab5fSopenharmony_ci+let qy12 = new A(); 127363af6ab5fSopenharmony_ci+let qy13 = new B(); 127373af6ab5fSopenharmony_ci+let qy14 = new C(); 127383af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts 127393af6ab5fSopenharmony_ciindex df7533d906..5e419a9b14 100644 127403af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts 127413af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts 127423af6ab5fSopenharmony_ci@@ -99,4 +99,8 @@ function foo14(x: any) { } 127433af6ab5fSopenharmony_ci 127443af6ab5fSopenharmony_ci function foo15(x: I2); 127453af6ab5fSopenharmony_ci function foo15(x: C<Date>); // ok 127463af6ab5fSopenharmony_ci-function foo15(x: any) { } 127473af6ab5fSopenharmony_ci\ No newline at end of file 127483af6ab5fSopenharmony_ci+function foo15(x: any) { } 127493af6ab5fSopenharmony_ci+ 127503af6ab5fSopenharmony_ci+let qo27 = new A(); 127513af6ab5fSopenharmony_ci+let qo28 =new B(); 127523af6ab5fSopenharmony_ci+let qo29 =new C(); 127533af6ab5fSopenharmony_ci\ No newline at end of file 127543af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts 127553af6ab5fSopenharmony_ciindex e3bd868941..1bda87ea35 100644 127563af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts 127573af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts 127583af6ab5fSopenharmony_ci@@ -97,4 +97,8 @@ function foo14(x: any) { } 127593af6ab5fSopenharmony_ci 127603af6ab5fSopenharmony_ci function foo15(x: I2); 127613af6ab5fSopenharmony_ci function foo15(x: C<number, B<string, string>, B<number, string>>); // ok 127623af6ab5fSopenharmony_ci-function foo15(x: any) { } 127633af6ab5fSopenharmony_ci\ No newline at end of file 127643af6ab5fSopenharmony_ci+function foo15(x: any) { } 127653af6ab5fSopenharmony_ci+ 127663af6ab5fSopenharmony_ci+let a1 = new A(); 127673af6ab5fSopenharmony_ci+let b1 = new B(); 127683af6ab5fSopenharmony_ci+let c1 = new C(); 127693af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts 127703af6ab5fSopenharmony_ciindex 9e01aaec49..9b74d14cfc 100644 127713af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts 127723af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts 127733af6ab5fSopenharmony_ci@@ -97,4 +97,7 @@ function foo14(x: any) { } 127743af6ab5fSopenharmony_ci 127753af6ab5fSopenharmony_ci function foo15(x: I2); 127763af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 127773af6ab5fSopenharmony_ci-function foo15(x: any) { } 127783af6ab5fSopenharmony_ci\ No newline at end of file 127793af6ab5fSopenharmony_ci+function foo15(x: any) { } 127803af6ab5fSopenharmony_ci+let qo17 = new A(); 127813af6ab5fSopenharmony_ci+let qo18 =new B(); 127823af6ab5fSopenharmony_ci+let qo19 =new C(); 127833af6ab5fSopenharmony_ci\ No newline at end of file 127843af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts 127853af6ab5fSopenharmony_ciindex c5454cc41e..781a351188 100644 127863af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts 127873af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts 127883af6ab5fSopenharmony_ci@@ -99,4 +99,7 @@ function foo14(x: any) { } 127893af6ab5fSopenharmony_ci 127903af6ab5fSopenharmony_ci function foo15(x: I2); 127913af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 127923af6ab5fSopenharmony_ci-function foo15(x: any) { } 127933af6ab5fSopenharmony_ci\ No newline at end of file 127943af6ab5fSopenharmony_ci+function foo15(x: any) { } 127953af6ab5fSopenharmony_ci+let qo9 = new A(); 127963af6ab5fSopenharmony_ci+let qo10 = new B(); 127973af6ab5fSopenharmony_ci+let qo11 = new C(); 127983af6ab5fSopenharmony_ci\ No newline at end of file 127993af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts 128003af6ab5fSopenharmony_ciindex b8620f04d1..ca2a5abb87 100644 128013af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts 128023af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts 128033af6ab5fSopenharmony_ci@@ -99,4 +99,7 @@ function foo14(x: any) { } 128043af6ab5fSopenharmony_ci 128053af6ab5fSopenharmony_ci function foo15(x: I2); 128063af6ab5fSopenharmony_ci function foo15(x: C<string, number>); // ok 128073af6ab5fSopenharmony_ci-function foo15(x: any) { } 128083af6ab5fSopenharmony_ci\ No newline at end of file 128093af6ab5fSopenharmony_ci+function foo15(x: any) { } 128103af6ab5fSopenharmony_ci+let a1 = new A(); 128113af6ab5fSopenharmony_ci+let b1 = new B(); 128123af6ab5fSopenharmony_ci+let c1 = new C(); 128133af6ab5fSopenharmony_ci\ No newline at end of file 128143af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts 128153af6ab5fSopenharmony_ciindex f39d23637a..828b26331c 100644 128163af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts 128173af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts 128183af6ab5fSopenharmony_ci@@ -99,4 +99,8 @@ function foo14(x: any) { } 128193af6ab5fSopenharmony_ci 128203af6ab5fSopenharmony_ci function foo15(x: I2); 128213af6ab5fSopenharmony_ci function foo15(x: C<string, number>); // ok 128223af6ab5fSopenharmony_ci-function foo15(x: any) { } 128233af6ab5fSopenharmony_ci\ No newline at end of file 128243af6ab5fSopenharmony_ci+function foo15(x: any) { } 128253af6ab5fSopenharmony_ci+ 128263af6ab5fSopenharmony_ci+let a1 = new A(); 128273af6ab5fSopenharmony_ci+let b1 = new B(); 128283af6ab5fSopenharmony_ci+let c1 = new C(); 128293af6ab5fSopenharmony_ci\ No newline at end of file 128303af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts 128313af6ab5fSopenharmony_ciindex 974f53cb9c..8d1aa46bde 100644 128323af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts 128333af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts 128343af6ab5fSopenharmony_ci@@ -72,3 +72,5 @@ function foo13(x: any) { } 128353af6ab5fSopenharmony_ci function foo14(x: I<Number>); 128363af6ab5fSopenharmony_ci function foo14(x: typeof b); // ok 128373af6ab5fSopenharmony_ci function foo14(x: any) { } 128383af6ab5fSopenharmony_ci+let qo15 = new B(null); 128393af6ab5fSopenharmony_ci+let qo16 = new C(null); 128403af6ab5fSopenharmony_ci\ No newline at end of file 128413af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts 128423af6ab5fSopenharmony_ciindex 47bab5dab8..963aabc746 100644 128433af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts 128443af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts 128453af6ab5fSopenharmony_ci@@ -83,4 +83,9 @@ function foo13(x: any) { } 128463af6ab5fSopenharmony_ci 128473af6ab5fSopenharmony_ci function foo14(x: I<Number, Number>); 128483af6ab5fSopenharmony_ci function foo14(x: typeof b); // ok 128493af6ab5fSopenharmony_ci-function foo14(x: any) { } 128503af6ab5fSopenharmony_ci\ No newline at end of file 128513af6ab5fSopenharmony_ci+function foo14(x: any) { } 128523af6ab5fSopenharmony_ci+ 128533af6ab5fSopenharmony_ci+var aa = [] 128543af6ab5fSopenharmony_ci+let b1 = new B(aa,aa); 128553af6ab5fSopenharmony_ci+let c1 = new C('',''); 128563af6ab5fSopenharmony_ci+let d1 = new D(1,1); 128573af6ab5fSopenharmony_ci\ No newline at end of file 128583af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts 128593af6ab5fSopenharmony_ciindex 14f4933a15..b593e623e5 100644 128603af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts 128613af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts 128623af6ab5fSopenharmony_ci@@ -92,4 +92,9 @@ function foo13(x: any) { } 128633af6ab5fSopenharmony_ci 128643af6ab5fSopenharmony_ci function foo14(x: I<Five<string>, Five<string>>); 128653af6ab5fSopenharmony_ci function foo14(x: typeof b); // ok 128663af6ab5fSopenharmony_ci-function foo14(x: any) { } 128673af6ab5fSopenharmony_ci\ No newline at end of file 128683af6ab5fSopenharmony_ci+function foo14(x: any) { } 128693af6ab5fSopenharmony_ci+let qo1 = new One(); 128703af6ab5fSopenharmony_ci+let qo2 = new Two(); 128713af6ab5fSopenharmony_ci+let qo3 = new B(null,null); 128723af6ab5fSopenharmony_ci+let qo4 = new C(null,null); 128733af6ab5fSopenharmony_ci+let qo5 = new D(null,null); 128743af6ab5fSopenharmony_ci\ No newline at end of file 128753af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.ts 128763af6ab5fSopenharmony_ciindex 9c072e8936..185dab627d 100644 128773af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.ts 128783af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.ts 128793af6ab5fSopenharmony_ci@@ -79,4 +79,6 @@ function foo14(x: any) { } 128803af6ab5fSopenharmony_ci 128813af6ab5fSopenharmony_ci function foo15(x: I2); 128823af6ab5fSopenharmony_ci function foo15(x: C<number>); // ok 128833af6ab5fSopenharmony_ci-function foo15(x: any) { } 128843af6ab5fSopenharmony_ci\ No newline at end of file 128853af6ab5fSopenharmony_ci+function foo15(x: any) { } 128863af6ab5fSopenharmony_ci+let qy49 =new B(null); 128873af6ab5fSopenharmony_ci+let qy50 =new C(null); 128883af6ab5fSopenharmony_ci\ No newline at end of file 128893af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts 128903af6ab5fSopenharmony_ciindex 2e0a98d557..9e63b81350 100644 128913af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts 128923af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts 128933af6ab5fSopenharmony_ci@@ -75,4 +75,8 @@ function foo14(x: any) { } 128943af6ab5fSopenharmony_ci 128953af6ab5fSopenharmony_ci function foo15(x: I2); 128963af6ab5fSopenharmony_ci function foo15(x: C<Date>); // ok 128973af6ab5fSopenharmony_ci-function foo15(x: any) { } 128983af6ab5fSopenharmony_ci\ No newline at end of file 128993af6ab5fSopenharmony_ci+function foo15(x: any) { } 129003af6ab5fSopenharmony_ci+ 129013af6ab5fSopenharmony_ci+var aa; 129023af6ab5fSopenharmony_ci+let b1 = new B(aa); 129033af6ab5fSopenharmony_ci+let c1 = new C(aa); 129043af6ab5fSopenharmony_ci\ No newline at end of file 129053af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts 129063af6ab5fSopenharmony_ciindex fe01df2564..8caa853954 100644 129073af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts 129083af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts 129093af6ab5fSopenharmony_ci@@ -69,4 +69,6 @@ function foo13(x: any) { } 129103af6ab5fSopenharmony_ci 129113af6ab5fSopenharmony_ci function foo14(x: I<string, Date, RegExp, boolean>); 129123af6ab5fSopenharmony_ci function foo14(x: typeof b); // ok 129133af6ab5fSopenharmony_ci-function foo14(x: any) { } 129143af6ab5fSopenharmony_ci\ No newline at end of file 129153af6ab5fSopenharmony_ci+function foo14(x: any) { } 129163af6ab5fSopenharmony_ci+let qo6 = new B(null); 129173af6ab5fSopenharmony_ci+let qo7 = new C(null); 129183af6ab5fSopenharmony_ci\ No newline at end of file 129193af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.ts 129203af6ab5fSopenharmony_ciindex 20d7dbab13..7573f3e8b4 100644 129213af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.ts 129223af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.ts 129233af6ab5fSopenharmony_ci@@ -69,4 +69,8 @@ function foo13(x: any) { } 129243af6ab5fSopenharmony_ci 129253af6ab5fSopenharmony_ci function foo14(x: I<string>); 129263af6ab5fSopenharmony_ci function foo14(x: typeof b); // ok 129273af6ab5fSopenharmony_ci-function foo14(x: any) { } 129283af6ab5fSopenharmony_ci\ No newline at end of file 129293af6ab5fSopenharmony_ci+function foo14(x: any) { } 129303af6ab5fSopenharmony_ci+ 129313af6ab5fSopenharmony_ci+ 129323af6ab5fSopenharmony_ci+let b1 = new B(a); 129333af6ab5fSopenharmony_ci+let c1 = new C(a); 129343af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.ts 129353af6ab5fSopenharmony_ciindex 56dc5a051c..2caea04bc0 100644 129363af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.ts 129373af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.ts 129383af6ab5fSopenharmony_ci@@ -71,4 +71,7 @@ function foo13(x: any) { } 129393af6ab5fSopenharmony_ci 129403af6ab5fSopenharmony_ci function foo14(x: I<string>); 129413af6ab5fSopenharmony_ci function foo14(x: typeof b); // ok 129423af6ab5fSopenharmony_ci-function foo14(x: any) { } 129433af6ab5fSopenharmony_ci\ No newline at end of file 129443af6ab5fSopenharmony_ci+function foo14(x: any) { } 129453af6ab5fSopenharmony_ci+ 129463af6ab5fSopenharmony_ci+let b1 = new B(a); 129473af6ab5fSopenharmony_ci+let c1 = new C(a); 129483af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.ts 129493af6ab5fSopenharmony_ciindex 6c4a282228..d9e2b8c184 100644 129503af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.ts 129513af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.ts 129523af6ab5fSopenharmony_ci@@ -71,4 +71,7 @@ function foo13(x: any) { } 129533af6ab5fSopenharmony_ci 129543af6ab5fSopenharmony_ci function foo14(x: I<string, number>); 129553af6ab5fSopenharmony_ci function foo14(x: typeof b); // ok 129563af6ab5fSopenharmony_ci-function foo14(x: any) { } 129573af6ab5fSopenharmony_ci\ No newline at end of file 129583af6ab5fSopenharmony_ci+function foo14(x: any) { } 129593af6ab5fSopenharmony_ci+ 129603af6ab5fSopenharmony_ci+let b1 = new B(a); 129613af6ab5fSopenharmony_ci+let c1 = new C(a); 129623af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.ts 129633af6ab5fSopenharmony_ciindex 8c9a08137f..0683e8d40b 100644 129643af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.ts 129653af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.ts 129663af6ab5fSopenharmony_ci@@ -71,4 +71,6 @@ function foo13(x: any) { } 129673af6ab5fSopenharmony_ci 129683af6ab5fSopenharmony_ci function foo14(x: I<string, number>); 129693af6ab5fSopenharmony_ci function foo14(x: typeof b); // ok 129703af6ab5fSopenharmony_ci-function foo14(x: any) { } 129713af6ab5fSopenharmony_ci\ No newline at end of file 129723af6ab5fSopenharmony_ci+function foo14(x: any) { } 129733af6ab5fSopenharmony_ci+let qy15 = new B(null,null); 129743af6ab5fSopenharmony_ci+let qy16 = new C(null,null); 129753af6ab5fSopenharmony_ci\ No newline at end of file 129763af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers1.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers1.ts 129773af6ab5fSopenharmony_ciindex 867199d905..0c6b2ca24b 100644 129783af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers1.ts 129793af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers1.ts 129803af6ab5fSopenharmony_ci@@ -119,3 +119,6 @@ function foo16(x: I); 129813af6ab5fSopenharmony_ci function foo16(x: PB); // error 129823af6ab5fSopenharmony_ci function foo16(x: any) { } 129833af6ab5fSopenharmony_ci 129843af6ab5fSopenharmony_ci+let c1 = new C(); 129853af6ab5fSopenharmony_ci+let pa = new PA(); 129863af6ab5fSopenharmony_ci+let pb = new PB(); 129873af6ab5fSopenharmony_ci\ No newline at end of file 129883af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers2.ts 129893af6ab5fSopenharmony_ciindex ea9d7d04ee..bf735eb8a5 100644 129903af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers2.ts 129913af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers2.ts 129923af6ab5fSopenharmony_ci@@ -122,3 +122,8 @@ function foo16(x: I); 129933af6ab5fSopenharmony_ci function foo16(x: PB); // error 129943af6ab5fSopenharmony_ci function foo16(x: any) { } 129953af6ab5fSopenharmony_ci 129963af6ab5fSopenharmony_ci+ 129973af6ab5fSopenharmony_ci+let der = new Derived() 129983af6ab5fSopenharmony_ci+let c1 = new C(); 129993af6ab5fSopenharmony_ci+let pa = new PA(); 130003af6ab5fSopenharmony_ci+let pb = new PB(); 130013af6ab5fSopenharmony_ci\ No newline at end of file 130023af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers3.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers3.ts 130033af6ab5fSopenharmony_ciindex d3f22604c4..337ac0b542 100644 130043af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers3.ts 130053af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithNumericIndexers3.ts 130063af6ab5fSopenharmony_ci@@ -119,3 +119,6 @@ function foo16(x: I); 130073af6ab5fSopenharmony_ci function foo16(x: PB); // error 130083af6ab5fSopenharmony_ci function foo16(x: any) { } 130093af6ab5fSopenharmony_ci 130103af6ab5fSopenharmony_ci+let qo32 =new C(); 130113af6ab5fSopenharmony_ci+let qo30 = new PA(); 130123af6ab5fSopenharmony_ci+let qo31 =new PB(); 130133af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithOptionality.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithOptionality.ts 130143af6ab5fSopenharmony_ciindex 7c24195105..21be3c5930 100644 130153af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithOptionality.ts 130163af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithOptionality.ts 130173af6ab5fSopenharmony_ci@@ -53,4 +53,8 @@ function foo13(x: any) { } 130183af6ab5fSopenharmony_ci 130193af6ab5fSopenharmony_ci function foo14(x: I); 130203af6ab5fSopenharmony_ci function foo14(x: typeof b); // ok 130213af6ab5fSopenharmony_ci-function foo14(x: any) { } 130223af6ab5fSopenharmony_ci\ No newline at end of file 130233af6ab5fSopenharmony_ci+function foo14(x: any) { } 130243af6ab5fSopenharmony_ci+ 130253af6ab5fSopenharmony_ci+let a1 = new A(); 130263af6ab5fSopenharmony_ci+let b1 = new B(); 130273af6ab5fSopenharmony_ci+let c1 = new C(); 130283af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPrivates.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPrivates.ts 130293af6ab5fSopenharmony_ciindex b9e390158c..fe547befb2 100644 130303af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPrivates.ts 130313af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPrivates.ts 130323af6ab5fSopenharmony_ci@@ -116,4 +116,6 @@ function foo15(x: any) { } 130333af6ab5fSopenharmony_ci function foo16(x: I); 130343af6ab5fSopenharmony_ci function foo16(x: PB); // no error 130353af6ab5fSopenharmony_ci function foo16(x: any) { } 130363af6ab5fSopenharmony_ci- 130373af6ab5fSopenharmony_ci+let qo26 =new C(); 130383af6ab5fSopenharmony_ci+let qo24 = new PA(); 130393af6ab5fSopenharmony_ci+let qo25 =new PB(); 130403af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPrivates2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPrivates2.ts 130413af6ab5fSopenharmony_ciindex 769e59f06d..403c1692d7 100644 130423af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPrivates2.ts 130433af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPrivates2.ts 130443af6ab5fSopenharmony_ci@@ -35,3 +35,4 @@ function foo6(x: D<number>): string; // error 130453af6ab5fSopenharmony_ci function foo6(x: any): any { } 130463af6ab5fSopenharmony_ci 130473af6ab5fSopenharmony_ci 130483af6ab5fSopenharmony_ci+let d1 = new D(); 130493af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPublics.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPublics.ts 130503af6ab5fSopenharmony_ciindex 813a8333e5..6f12d3d4e0 100644 130513af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPublics.ts 130523af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithPublics.ts 130533af6ab5fSopenharmony_ci@@ -85,4 +85,7 @@ function foo13(x: any) { } 130543af6ab5fSopenharmony_ci 130553af6ab5fSopenharmony_ci function foo14(x: I); 130563af6ab5fSopenharmony_ci function foo14(x: typeof b); // error 130573af6ab5fSopenharmony_ci-function foo14(x: any) { } 130583af6ab5fSopenharmony_ci\ No newline at end of file 130593af6ab5fSopenharmony_ci+function foo14(x: any) { } 130603af6ab5fSopenharmony_ci+let qy41 = new A(); 130613af6ab5fSopenharmony_ci+let qy42 =new B(); 130623af6ab5fSopenharmony_ci+let qy43 =new C(); 130633af6ab5fSopenharmony_ci\ No newline at end of file 130643af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithStringIndexers.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithStringIndexers.ts 130653af6ab5fSopenharmony_ciindex f511e56bc3..e6d583aa06 100644 130663af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithStringIndexers.ts 130673af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithStringIndexers.ts 130683af6ab5fSopenharmony_ci@@ -119,3 +119,6 @@ function foo16(x: I); 130693af6ab5fSopenharmony_ci function foo16(x: PB); // error 130703af6ab5fSopenharmony_ci function foo16(x: any) { } 130713af6ab5fSopenharmony_ci 130723af6ab5fSopenharmony_ci+let qo35 =new C(); 130733af6ab5fSopenharmony_ci+let qo33 = new PA(); 130743af6ab5fSopenharmony_ci+let qo34 =new PB(); 130753af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithStringIndexers2.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithStringIndexers2.ts 130763af6ab5fSopenharmony_ciindex d8af511910..7c37adc723 100644 130773af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithStringIndexers2.ts 130783af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithStringIndexers2.ts 130793af6ab5fSopenharmony_ci@@ -122,3 +122,8 @@ function foo16(x: I); 130803af6ab5fSopenharmony_ci function foo16(x: PB); // error 130813af6ab5fSopenharmony_ci function foo16(x: any) { } 130823af6ab5fSopenharmony_ci 130833af6ab5fSopenharmony_ci+ 130843af6ab5fSopenharmony_ci+let der = new Derived(); 130853af6ab5fSopenharmony_ci+let c1 = new C(); 130863af6ab5fSopenharmony_ci+let pa = new PA(); 130873af6ab5fSopenharmony_ci+let pb = new PB(); 130883af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/typeParametersAreIdenticalToThemselves.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/typeParametersAreIdenticalToThemselves.ts 130893af6ab5fSopenharmony_ciindex 0495789326..383623ee14 100644 130903af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/typeParametersAreIdenticalToThemselves.ts 130913af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/typeParametersAreIdenticalToThemselves.ts 130923af6ab5fSopenharmony_ci@@ -73,4 +73,6 @@ interface I2<T extends Date> { 130933af6ab5fSopenharmony_ci 130943af6ab5fSopenharmony_ci foo3<T>(x: T); 130953af6ab5fSopenharmony_ci foo3<T>(x: T); // no error, different declaration for each T 130963af6ab5fSopenharmony_ci-} 130973af6ab5fSopenharmony_ci\ No newline at end of file 130983af6ab5fSopenharmony_ci+} 130993af6ab5fSopenharmony_ci+let qy36 = new C(); 131003af6ab5fSopenharmony_ci+let qy37 =new C2(); 131013af6ab5fSopenharmony_ci\ No newline at end of file 131023af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstraintsTypeArgumentInference.ts b/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstraintsTypeArgumentInference.ts 131033af6ab5fSopenharmony_ciindex 601f790667..b8526977ef 100644 131043af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstraintsTypeArgumentInference.ts 131053af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstraintsTypeArgumentInference.ts 131063af6ab5fSopenharmony_ci@@ -104,3 +104,6 @@ var r8b = i.foo5(d2, d2); // Derived2 131073af6ab5fSopenharmony_ci var r9 = i.foo6(); // Derived 131083af6ab5fSopenharmony_ci var r10 = i.foo7(d1); // Base 131093af6ab5fSopenharmony_ci var r11 = i.foo8(); // Base 131103af6ab5fSopenharmony_ci+ 131113af6ab5fSopenharmony_ci+let qu12 = new Derived(); 131123af6ab5fSopenharmony_ci+let qu13 = new Derived2(); 131133af6ab5fSopenharmony_ci\ No newline at end of file 131143af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithFunctionTypedArguments4.ts b/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithFunctionTypedArguments4.ts 131153af6ab5fSopenharmony_ciindex 3d68ff7a0d..74c3573627 100644 131163af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithFunctionTypedArguments4.ts 131173af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithFunctionTypedArguments4.ts 131183af6ab5fSopenharmony_ci@@ -19,4 +19,6 @@ var b: { 131193af6ab5fSopenharmony_ci new<T>(x: T): any; 131203af6ab5fSopenharmony_ci } 131213af6ab5fSopenharmony_ci 131223af6ab5fSopenharmony_ci-var r2 = foo4(b); // T is {} (candidates boolean and {}), U is any (candidates any and {}) 131233af6ab5fSopenharmony_ci\ No newline at end of file 131243af6ab5fSopenharmony_ci+var r2 = foo4(b); // T is {} (candidates boolean and {}), U is any (candidates any and {}) 131253af6ab5fSopenharmony_ci+let qy3 = new C(); 131263af6ab5fSopenharmony_ci+let qy4 =new D(); 131273af6ab5fSopenharmony_ci\ No newline at end of file 131283af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgs2.ts b/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgs2.ts 131293af6ab5fSopenharmony_ciindex 514df351cc..52f1c5e20f 100644 131303af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgs2.ts 131313af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgs2.ts 131323af6ab5fSopenharmony_ci@@ -29,4 +29,6 @@ interface I<T, U> { 131333af6ab5fSopenharmony_ci } 131343af6ab5fSopenharmony_ci 131353af6ab5fSopenharmony_ci var i: I<Base, Derived>; 131363af6ab5fSopenharmony_ci-var r4 = f2(i); // Base => Derived 131373af6ab5fSopenharmony_ci\ No newline at end of file 131383af6ab5fSopenharmony_ci+var r4 = f2(i); // Base => Derived 131393af6ab5fSopenharmony_ci+let qy0 = new Derived(); 131403af6ab5fSopenharmony_ci+let qy1 = new Derived2(); 131413af6ab5fSopenharmony_ci\ No newline at end of file 131423af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints.ts b/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints.ts 131433af6ab5fSopenharmony_ciindex e1c91529d7..475dfe3dcb 100644 131443af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints.ts 131453af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints.ts 131463af6ab5fSopenharmony_ci@@ -19,8 +19,8 @@ function foo<T extends { x: string }>(t: X<T>, t2: X<T>) { 131473af6ab5fSopenharmony_ci return x; 131483af6ab5fSopenharmony_ci } 131493af6ab5fSopenharmony_ci 131503af6ab5fSopenharmony_ci-var c1 = new X<C>(); 131513af6ab5fSopenharmony_ci-var d1 = new X<D>(); 131523af6ab5fSopenharmony_ci+// var c1 = new X<C>(); 131533af6ab5fSopenharmony_ci+// var d1 = new X<D>(); 131543af6ab5fSopenharmony_ci var r = foo(c1, d1); 131553af6ab5fSopenharmony_ci var r2 = foo(c1, c1); 131563af6ab5fSopenharmony_ci 131573af6ab5fSopenharmony_ci@@ -30,4 +30,8 @@ function foo2<T extends C>(t: X<T>, t2: X<T>) { 131583af6ab5fSopenharmony_ci } 131593af6ab5fSopenharmony_ci 131603af6ab5fSopenharmony_ci var r = foo2(c1, d1); 131613af6ab5fSopenharmony_ci-var r2 = foo2(c1, c1); 131623af6ab5fSopenharmony_ci\ No newline at end of file 131633af6ab5fSopenharmony_ci+var r2 = foo2(c1, c1); 131643af6ab5fSopenharmony_ci+ 131653af6ab5fSopenharmony_ci+let qu4 = new C(); 131663af6ab5fSopenharmony_ci+let qu5 = new D(); 131673af6ab5fSopenharmony_ci+let qu6 = new X(); 131683af6ab5fSopenharmony_ci\ No newline at end of file 131693af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints2.ts b/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints2.ts 131703af6ab5fSopenharmony_ciindex c97915eaf1..5f7fee7daf 100644 131713af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints2.ts 131723af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints2.ts 131733af6ab5fSopenharmony_ci@@ -35,3 +35,4 @@ var r5 = f3(new Derived(), x => x); 131743af6ab5fSopenharmony_ci 131753af6ab5fSopenharmony_ci var r6 = f3(null, null); // any 131763af6ab5fSopenharmony_ci var r7 = f3(null, x => x); // any 131773af6ab5fSopenharmony_ci+let qu8 = new Derived(); 131783af6ab5fSopenharmony_ci\ No newline at end of file 131793af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeInference/genericClassWithObjectTypeArgsAndConstraints.ts b/tests/cases/conformance/types/typeRelationships/typeInference/genericClassWithObjectTypeArgsAndConstraints.ts 131803af6ab5fSopenharmony_ciindex 1c29b3822b..a52b2b835e 100644 131813af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeInference/genericClassWithObjectTypeArgsAndConstraints.ts 131823af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeInference/genericClassWithObjectTypeArgsAndConstraints.ts 131833af6ab5fSopenharmony_ci@@ -37,6 +37,8 @@ module Class { 131843af6ab5fSopenharmony_ci var g2: G2<D>; 131853af6ab5fSopenharmony_ci var r = g2.foo2(c1, d1); 131863af6ab5fSopenharmony_ci var r2 = g2.foo2(c1, c1); 131873af6ab5fSopenharmony_ci+ var gg1 = new G(); 131883af6ab5fSopenharmony_ci+ var gg2 = new G2(); 131893af6ab5fSopenharmony_ci } 131903af6ab5fSopenharmony_ci 131913af6ab5fSopenharmony_ci module Interface { 131923af6ab5fSopenharmony_ci@@ -57,4 +59,7 @@ module Interface { 131933af6ab5fSopenharmony_ci var g2: G2<D>; 131943af6ab5fSopenharmony_ci var r = g2.foo2(c1, d1); 131953af6ab5fSopenharmony_ci var r2 = g2.foo2(c1, c1); 131963af6ab5fSopenharmony_ci-} 131973af6ab5fSopenharmony_ci\ No newline at end of file 131983af6ab5fSopenharmony_ci+} 131993af6ab5fSopenharmony_ci+let c = new C(); 132003af6ab5fSopenharmony_ci+let d = new D(); 132013af6ab5fSopenharmony_ci+let x = new X(); 132023af6ab5fSopenharmony_ci\ No newline at end of file 132033af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/typeRelationships/typeInference/keyofInferenceLowerPriorityThanReturn.ts b/tests/cases/conformance/types/typeRelationships/typeInference/keyofInferenceLowerPriorityThanReturn.ts 132043af6ab5fSopenharmony_ciindex 9de110bd1e..7a24403769 100644 132053af6ab5fSopenharmony_ci--- a/tests/cases/conformance/types/typeRelationships/typeInference/keyofInferenceLowerPriorityThanReturn.ts 132063af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/typeRelationships/typeInference/keyofInferenceLowerPriorityThanReturn.ts 132073af6ab5fSopenharmony_ci@@ -44,3 +44,7 @@ function insertOnConflictDoNothing<Req extends object, Def extends object>(_tabl 132083af6ab5fSopenharmony_ci function f() { 132093af6ab5fSopenharmony_ci insertOnConflictDoNothing(bookTable, ConflictTarget.tableColumns(["serial"])); // <-- No error here; should use the type inferred for the return type of `tableColumns` 132103af6ab5fSopenharmony_ci } 132113af6ab5fSopenharmony_ci+let qu9 = new Write(); 132123af6ab5fSopenharmony_ci+let qu10 = new Col(); 132133af6ab5fSopenharmony_ci+let qu11 =new Table(); 132143af6ab5fSopenharmony_ci+let qu12 =new ConflictTarget(); 132153af6ab5fSopenharmony_ci\ No newline at end of file 132163af6ab5fSopenharmony_cidiff --git a/tests/cases/conformance/types/union/discriminatedUnionTypes3.ts b/tests/cases/conformance/types/union/discriminatedUnionTypes3.ts 132173af6ab5fSopenharmony_cinew file mode 100644 132183af6ab5fSopenharmony_ciindex 0000000000..a5e51271bc 132193af6ab5fSopenharmony_ci--- /dev/null 132203af6ab5fSopenharmony_ci+++ b/tests/cases/conformance/types/union/discriminatedUnionTypes3.ts 132213af6ab5fSopenharmony_ci@@ -0,0 +1,19 @@ 132223af6ab5fSopenharmony_ci+// @strict: true 132233af6ab5fSopenharmony_ci+ 132243af6ab5fSopenharmony_ci+// Repro from #44435 132253af6ab5fSopenharmony_ci+ 132263af6ab5fSopenharmony_ci+type Correct = { 132273af6ab5fSopenharmony_ci+ code: string 132283af6ab5fSopenharmony_ci+ property: true 132293af6ab5fSopenharmony_ci+ err: undefined 132303af6ab5fSopenharmony_ci+} 132313af6ab5fSopenharmony_ci+type Err = { 132323af6ab5fSopenharmony_ci+ err: `${string} is wrong!` 132333af6ab5fSopenharmony_ci+} 132343af6ab5fSopenharmony_ci+type SomeReturnType = Correct | Err; 132353af6ab5fSopenharmony_ci+ 132363af6ab5fSopenharmony_ci+const example: SomeReturnType = {} as SomeReturnType; 132373af6ab5fSopenharmony_ci+ 132383af6ab5fSopenharmony_ci+if (example.err === undefined) { 132393af6ab5fSopenharmony_ci+ example.property; // true 132403af6ab5fSopenharmony_ci+} 132413af6ab5fSopenharmony_ci\ No newline at end of file 132423af6ab5fSopenharmony_ci-- 132433af6ab5fSopenharmony_ci2.17.1 132443af6ab5fSopenharmony_ci 13245