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