From 4c33817c795fe6a8c41dd9945fd411efc78b4868 Mon Sep 17 00:00:00 2001 From: Daniel Kofanov Date: Wed, 27 Aug 2025 23:54:48 +0800 Subject: [PATCH] Reduce build dependencies within es2panda 1. Fix implementation depends on C-API 2. Fix 'types.h' includes all the checker types 3. Move ir-nodes' 'Compile' and 'Check' methods to 'ETSGen', 'ETSAnalyzer', etc. Issue:https://gitee.com/openharmony/arkcompiler_ets_frontend/issues/ICV4PE?from=project-issue Change-Id: I4ee9f3e0c0921fc93a218b39b10f2fc7d23ce988 Signed-off-by: Daniel Kofanov --- ets2panda/ast_verifier/ASTVerifier.cpp | 7 + ets2panda/ast_verifier/ASTVerifier.h | 6 +- .../invariants/checkConstProperties.cpp | 1 + ets2panda/checker/ETSAnalyzer.cpp | 1032 ++++++++++++++++- ets2panda/checker/ETSAnalyzerHelpers.cpp | 4 + ets2panda/checker/ETSchecker.cpp | 3 +- ets2panda/checker/ETSchecker.h | 4 +- ets2panda/checker/TSAnalyzer.cpp | 975 ++++++++++++++++ ets2panda/checker/checkerContext.cpp | 1 + ets2panda/checker/ets/aliveAnalyzer.cpp | 1 + ets2panda/checker/ets/arithmetic.cpp | 1 + ets2panda/checker/ets/assignAnalyzer.cpp | 5 +- ets2panda/checker/ets/etsWarningAnalyzer.cpp | 1 + ets2panda/checker/ets/function.cpp | 4 + ets2panda/checker/ets/function_helpers.h | 1 + ets2panda/checker/ets/helpers.cpp | 7 + ets2panda/checker/ets/object.cpp | 9 + ets2panda/checker/ets/typeCheckingHelpers.cpp | 6 + ets2panda/checker/ets/typeConverter.h | 8 + ets2panda/checker/ets/typeCreation.cpp | 16 + ets2panda/checker/ets/typeRelationContext.cpp | 1 + ets2panda/checker/ets/typeRelationContext.h | 1 + ets2panda/checker/ets/utilityTypeHandlers.cpp | 6 +- ets2panda/checker/ets/validateHelpers.cpp | 1 + ets2panda/checker/typeChecker/TypeChecker.h | 1 + ets2panda/checker/types/ets/charType.cpp | 1 + ets2panda/checker/types/ets/doubleType.cpp | 1 + ets2panda/checker/types/ets/etsAnyType.cpp | 1 + ets2panda/checker/types/ets/etsArrayType.cpp | 1 + .../checker/types/ets/etsBooleanType.cpp | 1 + .../checker/types/ets/etsFunctionType.cpp | 2 + ets2panda/checker/types/ets/etsNeverType.cpp | 1 + .../checker/types/ets/etsNonNullishType.cpp | 1 + .../checker/types/ets/etsNullishTypes.cpp | 1 + ets2panda/checker/types/ets/etsObjectType.cpp | 3 + .../types/ets/etsPartialTypeParameter.cpp | 1 + ets2panda/checker/types/ets/etsTupleType.cpp | 1 + ets2panda/checker/types/ets/etsTupleType.h | 2 +- .../checker/types/ets/etsTypeParameter.cpp | 1 + ets2panda/checker/types/ets/etsUnionType.cpp | 1 + ets2panda/checker/types/ets/etsUnionType.h | 2 +- ets2panda/checker/types/ets/floatType.cpp | 1 + ets2panda/checker/types/ets/intType.cpp | 1 + ets2panda/checker/types/ets/longType.cpp | 1 + ets2panda/checker/types/ets/shortType.cpp | 1 + ets2panda/checker/types/ets/types.h | 56 +- ets2panda/checker/types/typeRelation.cpp | 2 + ets2panda/compiler/base/lreference.cpp | 2 + ets2panda/compiler/core/ASTCompiler.h | 2 + ets2panda/compiler/core/ETSCompiler.cpp | 791 +++++++++++++ ets2panda/compiler/core/ETSGen-inl.h | 8 + ets2panda/compiler/core/ETSGen.cpp | 23 +- ets2panda/compiler/core/ETSGen.h | 1 + ets2panda/compiler/core/ETSemitter.cpp | 1 + ets2panda/compiler/core/ETSfunction.cpp | 1 + ets2panda/compiler/core/JSCompiler.cpp | 62 + ets2panda/compiler/core/pandagen.cpp | 785 +++++++++++++ .../compiler/lowering/ets/boxingForLocals.cpp | 1 + .../lowering/ets/declareOverloadLowering.cpp | 1 + .../compiler/lowering/ets/dynamicImport.cpp | 1 + .../compiler/lowering/ets/enumLowering.cpp | 1 - .../compiler/lowering/ets/enumLowering.h | 1 + .../lowering/ets/enumPostCheckLowering.cpp | 1 + .../compiler/lowering/ets/expandBrackets.cpp | 1 + .../ets/extensionAccessorLowering.cpp | 1 + .../lowering/ets/genericBridgesLowering.cpp | 4 + .../lowering/ets/gradualTypeNarrowing.cpp | 3 + .../ets/interfaceObjectLiteralLowering.cpp | 1 + .../ets/interfacePropertyDeclarations.cpp | 1 + .../compiler/lowering/ets/lambdaLowering.cpp | 2 + .../compiler/lowering/ets/objectIterator.cpp | 3 + .../lowering/ets/objectLiteralLowering.cpp | 1 + .../compiler/lowering/ets/opAssignment.cpp | 2 + .../lowering/ets/overloadMappingLowering.cpp | 2 + .../lowering/ets/primitiveConversionPhase.cpp | 1 + .../lowering/ets/primitiveConversionPhase.h | 1 + .../compiler/lowering/ets/recordLowering.cpp | 10 + .../lowering/ets/relaxedAnyLowering.cpp | 1 + .../compiler/lowering/ets/spreadLowering.cpp | 2 + .../lowering/ets/stringComparison.cpp | 1 + .../lowering/ets/typeFromLowering.cpp | 1 + .../compiler/lowering/ets/unboxLowering.cpp | 5 + .../compiler/lowering/ets/unionLowering.cpp | 2 + ets2panda/compiler/lowering/phase.cpp | 1 - ets2panda/declgen_ets2ts/declgenEts2Ts.cpp | 3 + .../driver/dependency_analyzer/dep_analyzer.h | 2 - ets2panda/gerpr | 790 +++++++++++++ ets2panda/ir/as/namedType.cpp | 22 - ets2panda/ir/as/prefixAssertionExpression.cpp | 22 - ets2panda/ir/astDump.cpp | 1 + ets2panda/ir/astDump.h | 6 +- ets2panda/ir/astNode.h | 3 +- ets2panda/ir/base/catchClause.cpp | 27 +- ets2panda/ir/base/classDefinition.cpp | 30 +- ets2panda/ir/base/classProperty.cpp | 25 +- ets2panda/ir/base/classStaticBlock.cpp | 24 - ets2panda/ir/base/decorator.cpp | 25 +- ets2panda/ir/base/metaProperty.cpp | 24 - ets2panda/ir/base/methodDefinition.cpp | 24 +- ets2panda/ir/base/overloadDeclaration.cpp | 14 +- ets2panda/ir/base/property.cpp | 27 +- ets2panda/ir/base/scriptFunction.cpp | 28 +- ets2panda/ir/base/spreadElement.cpp | 25 +- ets2panda/ir/base/templateElement.cpp | 24 - ets2panda/ir/base/tsIndexSignature.cpp | 24 +- ets2panda/ir/base/tsMethodSignature.cpp | 22 - ets2panda/ir/base/tsPropertySignature.cpp | 24 +- ets2panda/ir/base/tsSignatureDeclaration.cpp | 23 - ets2panda/ir/brokenTypeNode.cpp | 36 +- ets2panda/ir/brokenTypeNode.h | 1 - ets2panda/ir/ets/etsClassLiteral.cpp | 24 +- ets2panda/ir/ets/etsFunctionType.cpp | 35 +- ets2panda/ir/ets/etsFunctionType.h | 1 - ets2panda/ir/ets/etsIntrinsicNode.cpp | 10 +- ets2panda/ir/ets/etsKeyofType.cpp | 42 - ets2panda/ir/ets/etsNeverType.cpp | 23 - .../ir/ets/etsNewArrayInstanceExpression.cpp | 23 - .../ir/ets/etsNewClassInstanceExpression.cpp | 29 - .../ir/ets/etsNewClassInstanceExpression.h | 1 - .../etsNewMultiDimArrayInstanceExpression.cpp | 22 - ets2panda/ir/ets/etsNonNullishTypeNode.cpp | 21 - ets2panda/ir/ets/etsNullishTypes.cpp | 44 - ets2panda/ir/ets/etsPackageDeclaration.cpp | 23 +- ets2panda/ir/ets/etsParameterExpression.cpp | 26 +- ets2panda/ir/ets/etsPrimitiveType.cpp | 79 -- ets2panda/ir/ets/etsStringLiteralType.cpp | 23 +- ets2panda/ir/ets/etsStructDeclaration.cpp | 14 +- ets2panda/ir/ets/etsTuple.cpp | 2 +- ets2panda/ir/ets/etsTuple.h | 1 - ets2panda/ir/ets/etsTypeReference.cpp | 35 +- ets2panda/ir/ets/etsTypeReferencePart.cpp | 23 - ets2panda/ir/ets/etsUnionType.cpp | 51 +- ets2panda/ir/ets/etsWildcardType.cpp | 33 - ets2panda/ir/ets/etsWildcardType.h | 1 - ets2panda/ir/expressions/arrayExpression.cpp | 26 +- .../expressions/arrowFunctionExpression.cpp | 74 +- .../ir/expressions/arrowFunctionExpression.h | 2 - .../ir/expressions/assignmentExpression.cpp | 35 +- .../ir/expressions/assignmentExpression.h | 1 - ets2panda/ir/expressions/awaitExpression.cpp | 24 - ets2panda/ir/expressions/binaryExpression.cpp | 38 - ets2panda/ir/expressions/blockExpression.cpp | 22 - ets2panda/ir/expressions/callExpression.cpp | 28 +- ets2panda/ir/expressions/chainExpression.cpp | 37 - ets2panda/ir/expressions/chainExpression.h | 3 +- ets2panda/ir/expressions/classExpression.cpp | 24 +- .../ir/expressions/conditionalExpression.cpp | 24 - .../ir/expressions/directEvalExpression.cpp | 23 - ets2panda/ir/expressions/dummyNode.cpp | 23 - .../ir/expressions/functionExpression.cpp | 24 +- ets2panda/ir/expressions/identifier.cpp | 31 +- ets2panda/ir/expressions/importExpression.cpp | 23 - .../ir/expressions/literals/bigIntLiteral.cpp | 25 - .../ir/expressions/literals/bigIntLiteral.h | 1 + .../expressions/literals/booleanLiteral.cpp | 25 - .../ir/expressions/literals/charLiteral.cpp | 25 +- .../ir/expressions/literals/nullLiteral.cpp | 24 - .../ir/expressions/literals/numberLiteral.cpp | 24 +- .../ir/expressions/literals/regExpLiteral.cpp | 23 - .../ir/expressions/literals/stringLiteral.cpp | 24 - .../ir/expressions/literals/stringLiteral.h | 1 + .../expressions/literals/undefinedLiteral.cpp | 25 - ets2panda/ir/expressions/memberExpression.cpp | 72 +- ets2panda/ir/expressions/memberExpression.h | 7 +- ets2panda/ir/expressions/newExpression.cpp | 23 - ets2panda/ir/expressions/objectExpression.cpp | 22 - .../ir/expressions/omittedExpression.cpp | 24 - .../ir/expressions/sequenceExpression.cpp | 24 - ets2panda/ir/expressions/superExpression.cpp | 25 - .../expressions/taggedTemplateExpression.cpp | 26 +- ets2panda/ir/expressions/templateLiteral.cpp | 26 - ets2panda/ir/expressions/thisExpression.cpp | 25 - ets2panda/ir/expressions/typeofExpression.cpp | 25 - ets2panda/ir/expressions/unaryExpression.cpp | 25 - ets2panda/ir/expressions/updateExpression.cpp | 25 - ets2panda/ir/expressions/yieldExpression.cpp | 23 - ets2panda/ir/module/exportAllDeclaration.cpp | 25 +- .../ir/module/exportDefaultDeclaration.cpp | 22 - .../ir/module/exportNamedDeclaration.cpp | 25 +- ets2panda/ir/module/exportSpecifier.cpp | 24 +- ets2panda/ir/module/importDeclaration.cpp | 25 +- .../ir/module/importDefaultSpecifier.cpp | 24 +- .../ir/module/importNamespaceSpecifier.cpp | 24 +- ets2panda/ir/module/importSpecifier.cpp | 23 +- ets2panda/ir/opaqueTypeNode.cpp | 36 +- ets2panda/ir/opaqueTypeNode.h | 1 - ets2panda/ir/srcDump.h | 3 +- .../ir/statements/annotationDeclaration.cpp | 28 +- ets2panda/ir/statements/annotationUsage.cpp | 28 +- ets2panda/ir/statements/assertStatement.cpp | 25 +- ets2panda/ir/statements/blockStatement.cpp | 26 +- ets2panda/ir/statements/breakStatement.cpp | 27 +- ets2panda/ir/statements/classDeclaration.cpp | 24 +- ets2panda/ir/statements/continueStatement.cpp | 25 +- ets2panda/ir/statements/debuggerStatement.cpp | 22 - ets2panda/ir/statements/doWhileStatement.cpp | 26 +- ets2panda/ir/statements/emptyStatement.cpp | 23 - .../ir/statements/expressionStatement.cpp | 23 - ets2panda/ir/statements/forInStatement.cpp | 26 +- ets2panda/ir/statements/forOfStatement.cpp | 27 +- .../ir/statements/forUpdateStatement.cpp | 26 +- .../ir/statements/functionDeclaration.cpp | 24 +- ets2panda/ir/statements/ifStatement.cpp | 26 +- ets2panda/ir/statements/labelledStatement.cpp | 27 +- ets2panda/ir/statements/loopStatement.cpp | 5 - ets2panda/ir/statements/returnStatement.cpp | 26 +- .../ir/statements/switchCaseStatement.cpp | 23 - ets2panda/ir/statements/switchStatement.cpp | 26 +- ets2panda/ir/statements/throwStatement.cpp | 24 +- ets2panda/ir/statements/tryStatement.cpp | 23 - .../ir/statements/variableDeclaration.cpp | 24 - .../ir/statements/variableDeclarator.cpp | 24 +- ets2panda/ir/statements/whileStatement.cpp | 27 +- ets2panda/ir/ts/tsAnyKeyword.cpp | 27 - ets2panda/ir/ts/tsArrayType.cpp | 40 - ets2panda/ir/ts/tsAsExpression.cpp | 27 +- ets2panda/ir/ts/tsBigintKeyword.cpp | 27 - ets2panda/ir/ts/tsBooleanKeyword.cpp | 28 - ets2panda/ir/ts/tsClassImplements.cpp | 22 - ets2panda/ir/ts/tsConditionalType.cpp | 26 - ets2panda/ir/ts/tsConditionalType.h | 1 - ets2panda/ir/ts/tsConstructorType.cpp | 27 +- ets2panda/ir/ts/tsEnumDeclaration.cpp | 48 +- ets2panda/ir/ts/tsEnumMember.cpp | 25 +- ets2panda/ir/ts/tsExternalModuleReference.cpp | 22 - ets2panda/ir/ts/tsFunctionType.cpp | 35 +- ets2panda/ir/ts/tsFunctionType.h | 1 - ets2panda/ir/ts/tsImportEqualsDeclaration.cpp | 21 - ets2panda/ir/ts/tsImportType.cpp | 27 - ets2panda/ir/ts/tsImportType.h | 1 - ets2panda/ir/ts/tsIndexedAccessType.cpp | 37 - ets2panda/ir/ts/tsInferType.cpp | 26 - ets2panda/ir/ts/tsInferType.h | 1 - ets2panda/ir/ts/tsInterfaceBody.cpp | 22 - ets2panda/ir/ts/tsInterfaceDeclaration.cpp | 25 +- ets2panda/ir/ts/tsInterfaceHeritage.cpp | 24 +- ets2panda/ir/ts/tsIntersectionType.cpp | 35 +- ets2panda/ir/ts/tsIntersectionType.h | 1 - ets2panda/ir/ts/tsLiteralType.cpp | 33 - ets2panda/ir/ts/tsMappedType.cpp | 27 - ets2panda/ir/ts/tsMappedType.h | 1 - ets2panda/ir/ts/tsModuleBlock.cpp | 21 - ets2panda/ir/ts/tsModuleDeclaration.cpp | 22 - ets2panda/ir/ts/tsNamedTupleMember.cpp | 23 - ets2panda/ir/ts/tsNeverKeyword.cpp | 27 - ets2panda/ir/ts/tsNonNullExpression.cpp | 25 - ets2panda/ir/ts/tsNullKeyword.cpp | 26 - ets2panda/ir/ts/tsNumberKeyword.cpp | 28 - ets2panda/ir/ts/tsObjectKeyword.cpp | 27 - ets2panda/ir/ts/tsParameterProperty.cpp | 21 - ets2panda/ir/ts/tsParenthesizedType.cpp | 32 - ets2panda/ir/ts/tsQualifiedName.cpp | 24 +- ets2panda/ir/ts/tsStringKeyword.cpp | 28 - ets2panda/ir/ts/tsThisType.cpp | 38 +- ets2panda/ir/ts/tsThisType.h | 1 - ets2panda/ir/ts/tsTupleType.cpp | 23 +- ets2panda/ir/ts/tsTypeAliasDeclaration.cpp | 23 - ets2panda/ir/ts/tsTypeAssertion.cpp | 22 - ets2panda/ir/ts/tsTypeLiteral.cpp | 39 +- ets2panda/ir/ts/tsTypeOperator.cpp | 27 - ets2panda/ir/ts/tsTypeOperator.h | 1 - ets2panda/ir/ts/tsTypeParameter.cpp | 22 - .../ir/ts/tsTypeParameterDeclaration.cpp | 22 - .../ir/ts/tsTypeParameterInstantiation.cpp | 23 - ets2panda/ir/ts/tsTypePredicate.cpp | 26 - ets2panda/ir/ts/tsTypePredicate.h | 1 - ets2panda/ir/ts/tsTypeQuery.cpp | 28 - ets2panda/ir/ts/tsTypeReference.cpp | 45 +- ets2panda/ir/ts/tsUndefinedKeyword.cpp | 27 - ets2panda/ir/ts/tsUnionType.cpp | 39 - ets2panda/ir/ts/tsUnknownKeyword.cpp | 27 - ets2panda/ir/ts/tsVoidKeyword.cpp | 28 - ets2panda/ir/visitor/IterateAstVisitor.h | 155 ++- ets2panda/parser/ETSparserAnnotations.cpp | 23 + ets2panda/parser/ETSparserClasses.cpp | 1 + ets2panda/parser/ETSparserEnums.cpp | 1 + ets2panda/parser/ETSparserExpressions.cpp | 89 +- ets2panda/parser/ETSparserStatements.cpp | 1 + ets2panda/parser/ETSparserTypes.cpp | 1 + ets2panda/parser/JsdocHelper.cpp | 12 + ets2panda/public/CMakeLists.txt | 1 - ets2panda/public/contextState.h | 41 + ets2panda/public/es2panda_lib.h | 15 +- ets2panda/public/es2panda_lib_impl.inc.erb | 2 +- ets2panda/public/headers_parser/cpp_parser.py | 2 +- .../public/headers_parser/line_iterator.py | 4 +- ets2panda/public/public.h | 2 +- .../test/unit/globalETSObjectType_test.cpp | 2 +- .../test/unit/union_normalization_test_1.cpp | 2 +- .../test/unit/union_normalization_test_2.cpp | 2 +- ets2panda/test/utils/checker_test.h | 2 +- ets2panda/util/plugin.h | 3 +- ets2panda/varbinder/TypedBinder.cpp | 1 + ets2panda/varbinder/recordTable.cpp | 1 - 294 files changed, 5174 insertions(+), 4265 deletions(-) create mode 100644 ets2panda/gerpr create mode 100644 ets2panda/public/contextState.h diff --git a/ets2panda/ast_verifier/ASTVerifier.cpp b/ets2panda/ast_verifier/ASTVerifier.cpp index e55eaac5bb..b924a2e266 100644 --- a/ets2panda/ast_verifier/ASTVerifier.cpp +++ b/ets2panda/ast_verifier/ASTVerifier.cpp @@ -15,6 +15,8 @@ #include "ASTVerifier.h" +#include "public/public.h" + namespace ark::es2panda::compiler::ast_verifier { using AstToCheck = ArenaMap; @@ -217,6 +219,11 @@ void ASTVerifier::DumpMessages() const } } +const util::Options &ASTVerifier::Options() const +{ + return *context_.config->options; +} + void InvariantMessages::AddCheckMessage(const std::string &cause, const ir::AstNode &node) { messages_.emplace_back(cause.data(), &node); diff --git a/ets2panda/ast_verifier/ASTVerifier.h b/ets2panda/ast_verifier/ASTVerifier.h index edd854d180..8c6d05a78d 100644 --- a/ets2panda/ast_verifier/ASTVerifier.h +++ b/ets2panda/ast_verifier/ASTVerifier.h @@ -52,7 +52,6 @@ #include "util/options.h" #include "utils/arena_containers.h" #include "varbinder/variable.h" -#include "public/public.h" #ifdef ASTV_ENABLE_LOGGING // CC-OFFNXT(G.PRE.02) macro to enable conditionally @@ -179,10 +178,7 @@ private: return enabled_[T::ID] && allowed_[T::ID]; } - const util::Options &Options() const - { - return *context_.config->options; - } + const util::Options &Options() const; public: using SourcePath = std::string_view; diff --git a/ets2panda/ast_verifier/invariants/checkConstProperties.cpp b/ets2panda/ast_verifier/invariants/checkConstProperties.cpp index b35435ee17..c91280cf34 100644 --- a/ets2panda/ast_verifier/invariants/checkConstProperties.cpp +++ b/ets2panda/ast_verifier/invariants/checkConstProperties.cpp @@ -14,6 +14,7 @@ */ #include "checkConstProperties.h" +#include "ir/base/classDefinition.h" #include "ir/expressions/callExpression.h" #include "ir/expressions/memberExpression.h" #include "checker/types/signature.h" diff --git a/ets2panda/checker/ETSAnalyzer.cpp b/ets2panda/checker/ETSAnalyzer.cpp index 3ddb14664f..eda5d0ffb7 100644 --- a/ets2panda/checker/ETSAnalyzer.cpp +++ b/ets2panda/checker/ETSAnalyzer.cpp @@ -16,17 +16,29 @@ #include "ETSAnalyzer.h" #include "checker/ETSchecker.h" -#include "compiler/lowering/util.h" #include "generated/diagnostic.h" #include "checker/types/globalTypesHolder.h" +#include "checker/types/ets/etsFunctionType.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsTypeAliasType.h" +#include "checker/types/ets/etsStringType.h" +#include "checker/types/ets/etsBigIntType.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsResizableArrayType.h" +#include "checker/types/ets/etsAsyncFuncReturnType.h" #include "checker/types/gradualType.h" -#include "evaluate/scopedDebugInfoPlugin.h" +#include "checker/types/typeError.h" #include "types/signature.h" -#include "compiler/lowering/ets/setJumpTarget.h" -#include "checker/types/ets/etsAsyncFuncReturnType.h" #include "types/type.h" -#include "checker/types/typeError.h" +#include "evaluate/scopedDebugInfoPlugin.h" +#include "compiler/lowering/ets/setJumpTarget.h" +#include "compiler/lowering/util.h" + +#include "ir/brokenTypeNode.h" +#include "ir/ets/etsUnionType.h" +#include "ir/expressions/literals/undefinedLiteral.h" +#include "ir/expressions/dummyNode.h" #include @@ -577,6 +589,11 @@ checker::Type *ETSAnalyzer::Check(ir::ETSNewArrayInstanceExpression *expr) const return expr->TsType(); } +static bool TypeIsAllowedForInstantiation(checker::Type *type) +{ + return !(type->IsETSNullType() || type->IsETSUndefinedType() || type->IsETSNeverType() || type->IsETSVoidType()); +} + static checker::Type *CheckInstantiatedNewType(ETSChecker *checker, ir::ETSNewClassInstanceExpression *expr) { checker::Type *res = expr->GetTypeRef()->Check(checker); @@ -586,7 +603,7 @@ static checker::Type *CheckInstantiatedNewType(ETSChecker *checker, ir::ETSNewCl if (calleeType->IsETSUnionType()) { return checker->TypeError(expr->GetTypeRef(), diagnostic::UNION_NONCONSTRUCTIBLE, expr->Start()); } - if (!ir::ETSNewClassInstanceExpression::TypeIsAllowedForInstantiation(calleeType)) { + if (!TypeIsAllowedForInstantiation(calleeType)) { return checker->TypeError(expr->GetTypeRef(), diagnostic::CALLEE_NONCONSTRUCTIBLE, {calleeType}, expr->Start()); } if (!calleeType->IsETSObjectType()) { @@ -4153,3 +4170,1006 @@ checker::Type *ETSAnalyzer::ReturnTypeForStatement([[maybe_unused]] const ir::St } } // namespace ark::es2panda::checker + +namespace ark::es2panda::ir { + +checker::VerifiedType PrefixAssertionExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType NamedType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ClassStaticBlock::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType Decorator::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSFunctionType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSUnionType::Check(checker::ETSChecker *checker) +{ + for (auto *it : Types()) { + it->Check(checker); + } + + return {this, GetType(checker)}; +} + +checker::VerifiedType ETSPackageDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSNewClassInstanceExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSClassLiteral::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSTypeReferencePart::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSPrimitiveType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSTypeReference::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSNewMultiDimArrayInstanceExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSWildcardType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSNewArrayInstanceExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSUndefinedKeyword::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSBooleanKeyword::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSExternalModuleReference::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSEnumMember::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSStringKeyword::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSNonNullExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSQualifiedName::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSInterfaceDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSAnyKeyword::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSVoidKeyword::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSNumberKeyword::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSUnknownKeyword::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSArrayType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ImportDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ExportSpecifier::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ImportDefaultSpecifier::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ExportAllDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ExportDefaultDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ExportNamedDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ImportSpecifier::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ImportNamespaceSpecifier::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ThisExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ObjectExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType BlockExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType OmittedExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ChainExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ArrayExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType MemberExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType UpdateExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType DirectEvalExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType DummyNode::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ClassExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType AwaitExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType BinaryExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ImportExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType UnaryExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType Identifier::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType SequenceExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType UndefinedLiteral::Check(checker::ETSChecker *checker) +{ + SetTsType(checker->GlobalETSUndefinedType()); + return {this, TsType()}; +} + +checker::VerifiedType NumberLiteral::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType StringLiteral::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType NullLiteral::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType RegExpLiteral::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TypeofExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType NewExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType CallExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ArrowFunctionExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ConditionalExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType CatchClause::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ClassDefinition::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSSignatureDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSMethodSignature::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType MetaProperty::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ClassProperty::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType Property::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType SwitchStatement::Check(checker::ETSChecker *const checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSAsExpression::Check(checker::ETSChecker *const checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSEnumDeclaration::Check(checker::ETSChecker *const checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSPropertySignature::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSIndexSignature::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TemplateElement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType MethodDefinition::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ScriptFunction::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ReturnStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType FunctionDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType AnnotationUsage::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType AnnotationDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ForUpdateStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType LabelledStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ExpressionStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType EmptyStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType DebuggerStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ForOfStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ForInStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ContinueStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType SwitchCaseStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType VariableDeclarator::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType DoWhileStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ClassDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType BreakStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSStructDeclaration::Check(checker::ETSChecker *checker) +{ + ES2PANDA_ASSERT(checker->IsAnyError()); + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSNeverType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSUndefinedType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSNullType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSNonNullishTypeNode::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSStringLiteralType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSKeyofType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSConditionalType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSMappedType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSTypePredicate::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSTypeAssertion::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSParenthesizedType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSTypeParameter::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSTypeParameterDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSTypeAliasDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSInterfaceBody::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSThisType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSConstructorType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSIndexedAccessType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSTypeOperator::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSParameterProperty::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSInferType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSTypeLiteral::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSTypeReference::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSBigintKeyword::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSModuleBlock::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSNullKeyword::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSTypeParameterInstantiation::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSTupleType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSLiteralType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSNamedTupleMember::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSNeverKeyword::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSObjectKeyword::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSImportEqualsDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSInterfaceHeritage::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSTypeQuery::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSFunctionType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSIntersectionType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSModuleDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSClassImplements::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSUnionType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TSImportType::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType BrokenTypeNode::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType AssignmentExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType FunctionExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType YieldExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TemplateLiteral::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType SuperExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TaggedTemplateExpression::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType BooleanLiteral::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType BigIntLiteral::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType CharLiteral::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType SpreadElement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType OverloadDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType VariableDeclaration::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType AssertStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType TryStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType WhileStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType BlockStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ThrowStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType LoopStatement::Check([[maybe_unused]] checker::ETSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::VerifiedType IfStatement::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType OpaqueTypeNode::Check(checker::ETSChecker *checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +checker::VerifiedType ETSParameterExpression::Check(checker::ETSChecker *const checker) +{ + return {this, checker->GetAnalyzer()->Check(this)}; +} + +// NOTE(dkofanov): 'GetType' methods should be removed: + +checker::Type *ETSNonNullishTypeNode::GetType(checker::ETSChecker *checker) +{ + return TsType() != nullptr ? TsType() : Check(checker); +} + +checker::Type *ETSWildcardType::GetType([[maybe_unused]] checker::ETSChecker *checker) +{ + return checker->GlobalWildcardType(); +} + +checker::Type *BrokenTypeNode::GetType([[maybe_unused]] checker::ETSChecker *checker) +{ + return checker->GlobalTypeError(); +} + +checker::Type *OpaqueTypeNode::GetType([[maybe_unused]] checker::ETSChecker *checker) +{ + return TsType(); +} + +checker::Type *ETSFunctionType::GetType(checker::ETSChecker *checker) +{ + return Check(checker); +} + +checker::Type *ETSPrimitiveType::GetType([[maybe_unused]] checker::ETSChecker *checker) +{ + switch (GetPrimitiveType()) { + case PrimitiveType::BYTE: { + SetTsType(checker->GlobalByteBuiltinType()); + return TsType(); + } + case PrimitiveType::SHORT: { + SetTsType(checker->GlobalShortBuiltinType()); + return TsType(); + } + case PrimitiveType::INT: { + SetTsType(checker->GlobalIntBuiltinType()); + return TsType(); + } + case PrimitiveType::LONG: { + SetTsType(checker->GlobalLongBuiltinType()); + return TsType(); + } + case PrimitiveType::FLOAT: { + SetTsType(checker->GlobalFloatBuiltinType()); + return TsType(); + } + case PrimitiveType::DOUBLE: { + SetTsType(checker->GlobalDoubleBuiltinType()); + return TsType(); + } + case PrimitiveType::BOOLEAN: { + SetTsType(checker->GlobalETSBooleanBuiltinType()); + return TsType(); + } + case PrimitiveType::CHAR: { + SetTsType(checker->GlobalCharBuiltinType()); + return TsType(); + } + case PrimitiveType::VOID: { + if (LIKELY(checker->CheckVoidAnnotation(this))) { + SetTsType(checker->GlobalVoidType()); + return TsType(); + } + + return checker->InvalidateType(this); + } + default: { + ES2PANDA_UNREACHABLE(); + } + } +} + +checker::Type *TSArrayType::GetType(checker::ETSChecker *checker) +{ + checker::Type *type = checker->CreateETSArrayType(elementType_->GetType(checker), IsReadonlyType()); + if (IsReadonlyType()) { + type = checker->GetReadonlyType(type); + } + SetTsType(type); + return type; +} + +checker::Type *TSIntersectionType::GetType([[maybe_unused]] checker::ETSChecker *checker) +{ + // NOTE: validate + return checker->GlobalETSObjectType(); +} + +checker::Type *TSThisType::GetType([[maybe_unused]] checker::ETSChecker *checker) +{ + auto *containingClass = checker->Context().ContainingClass(); + if (containingClass == nullptr) { + return checker->GlobalTypeError(); + } + return containingClass; +} + +checker::Type *ETSKeyofType::GetType(checker::ETSChecker *checker) +{ + if (TsType() != nullptr) { + return TsType(); + } + + auto *typeReference = type_->GetType(checker); + ES2PANDA_ASSERT(typeReference); + + if (typeReference->IsETSPrimitiveType()) { + typeReference = checker->MaybeBoxType(typeReference); + } + + if (!typeReference->IsETSObjectType()) { + checker->LogError(diagnostic::KEYOF_REFERENCE_TYPE, {}, Start()); + SetTsType(checker->GlobalTypeError()); + return checker->GlobalTypeError(); + } + + checker::TypeStackElement tse(checker, GetHistoryNode(), {{diagnostic::CYCLIC_TYPE_OF, {}}}, Start()); + if (tse.HasTypeError()) { + return checker->GlobalTypeError(); + } + + SetTsType(checker->CreateUnionFromKeyofType(typeReference->AsETSObjectType())); + return TsType(); +} + +checker::Type *ETSUndefinedType::GetType([[maybe_unused]] checker::ETSChecker *checker) +{ + SetTsType(checker->GlobalETSUndefinedType()); + return TsType(); +} + +checker::Type *ETSNullType::GetType([[maybe_unused]] checker::ETSChecker *checker) +{ + SetTsType(checker->GlobalETSNullType()); + return TsType(); +} + +checker::Type *ETSTypeReference::GetType(checker::ETSChecker *checker) +{ + if (TsType() != nullptr) { + return TsType(); + } + auto *type = Part()->GetType(checker); + if (IsReadonlyType()) { + type = checker->GetReadonlyType(type); + } + return SetTsType(type); +} + +static bool CheckConstituentTypesValid(ArenaVector const &constituentTypes) +{ + for (auto &it : constituentTypes) { + if (it->IsTypeError()) { + return false; + } + } + return true; +} + +checker::Type *ETSUnionType::GetType(checker::ETSChecker *checker) +{ + if (TsType() != nullptr) { + return TsType(); + } + checker->CheckAnnotations(this); + + ArenaVector types(checker->Allocator()->Adapter()); + + for (auto *it : Types()) { + types.push_back(it->GetType(checker)); + } + + checker->Relation()->SetNode(this); + if (!CheckConstituentTypesValid(types)) { + SetTsType(checker->GlobalTypeError()); + } else { + SetTsType(checker->CreateETSUnionType(std::move(types))); + } + checker->Relation()->SetNode(nullptr); + return TsType(); +} + +checker::Type *ETSStringLiteralType::GetType([[maybe_unused]] checker::ETSChecker *checker) +{ + SetTsType(checker->CreateETSStringLiteralType(value_)); + return TsType(); +} + +checker::Type *ETSNeverType::GetType([[maybe_unused]] checker::ETSChecker *checker) +{ + SetTsType(checker->GlobalETSNeverType()); + return TsType(); +} + +} // namespace ark::es2panda::ir diff --git a/ets2panda/checker/ETSAnalyzerHelpers.cpp b/ets2panda/checker/ETSAnalyzerHelpers.cpp index d3127e33aa..30a27792aa 100644 --- a/ets2panda/checker/ETSAnalyzerHelpers.cpp +++ b/ets2panda/checker/ETSAnalyzerHelpers.cpp @@ -15,6 +15,10 @@ #include "ETSAnalyzerHelpers.h" #include "checker/types/ets/etsAsyncFuncReturnType.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsTypeParameter.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsExtensionFuncHelperType.h" #include "checker/types/typeError.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/ETSchecker.cpp b/ets2panda/checker/ETSchecker.cpp index fcee9f460c..14d2e0045f 100644 --- a/ets2panda/checker/ETSchecker.cpp +++ b/ets2panda/checker/ETSchecker.cpp @@ -33,10 +33,11 @@ #include "checker/ets/assignAnalyzer.h" #include "checker/ets/etsWarningAnalyzer.h" #include "checker/types/globalTypesHolder.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsTupleType.h" #include "ir/base/scriptFunction.h" #include "util/helpers.h" #include "evaluate/scopedDebugInfoPlugin.h" -#include "checker/types/ets/etsTupleType.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/ETSchecker.h b/ets2panda/checker/ETSchecker.h index 5aaf218056..12fd4c04b4 100644 --- a/ets2panda/checker/ETSchecker.h +++ b/ets2panda/checker/ETSchecker.h @@ -16,13 +16,13 @@ #ifndef ES2PANDA_CHECKER_ETS_CHECKER_H #define ES2PANDA_CHECKER_ETS_CHECKER_H -#include #include +#include #include "checker/checker.h" #include "checker/types/globalTypesHolder.h" -#include "checker/types/ets/etsResizableArrayType.h" +#include "checker/types/ets/etsObjectTypeConstants.h" #include "checker/types/ets/types.h" #include "checker/resolveResult.h" #include "ir/visitor/AstVisitor.h" diff --git a/ets2panda/checker/TSAnalyzer.cpp b/ets2panda/checker/TSAnalyzer.cpp index 655c154d5f..8df9b6a9ee 100644 --- a/ets2panda/checker/TSAnalyzer.cpp +++ b/ets2panda/checker/TSAnalyzer.cpp @@ -18,6 +18,12 @@ #include "checker/TSchecker.h" #include "checker/ts/destructuringContext.h" +#include "ir/ets/etsUnionType.h" +#include "ir/expressions/dummyNode.h" +#include "ir/expressions/literals/undefinedLiteral.h" +#include "ir/statements/annotationDeclaration.h" +#include "ir/brokenTypeNode.h" + namespace ark::es2panda::checker { TSChecker *TSAnalyzer::GetTSChecker() const @@ -2123,4 +2129,973 @@ checker::Type *TSAnalyzer::Check([[maybe_unused]] ir::TSVoidKeyword *node) const { return nullptr; } + } // namespace ark::es2panda::checker + +namespace ark::es2panda::ir { + +checker::Type *PrefixAssertionExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *NamedType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSIntrinsicNode::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return nullptr; +} + +checker::Type *ETSFunctionType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSUnionType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return nullptr; +} + +checker::Type *ETSPackageDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSNewClassInstanceExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSClassLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSStructDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSNeverType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSUndefinedType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSNullType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSTypeReferencePart::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSPrimitiveType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSTypeReference::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSNewMultiDimArrayInstanceExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSWildcardType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSNonNullishTypeNode::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSStringLiteralType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSNewArrayInstanceExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSKeyofType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return nullptr; +} + +checker::Type *TSUndefinedKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSBooleanKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSConditionalType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSExternalModuleReference::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSMappedType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypePredicate::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeAssertion::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSParenthesizedType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeParameter::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSEnumMember::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeParameterDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSStringKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeAliasDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSNonNullExpression::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSInterfaceBody::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSThisType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSConstructorType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSIndexedAccessType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSEnumDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeOperator::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSParameterProperty::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSQualifiedName::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSInterfaceDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSInferType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeReference::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSAnyKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSBigintKeyword::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSModuleBlock::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSNullKeyword::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeParameterInstantiation::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTupleType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSVoidKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSLiteralType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSNamedTupleMember::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSAsExpression::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSNeverKeyword::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSObjectKeyword::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSImportEqualsDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSInterfaceHeritage::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeQuery::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSFunctionType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSIntersectionType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSNumberKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSModuleDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSClassImplements::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSUnionType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSUnknownKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSArrayType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSImportType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ImportDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ExportSpecifier::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ImportDefaultSpecifier::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ExportAllDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ExportDefaultDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ExportNamedDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ImportSpecifier::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ImportNamespaceSpecifier::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BrokenTypeNode::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ThisExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *AssignmentExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ObjectExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *FunctionExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BlockExpression::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *OmittedExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ChainExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ArrayExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *MemberExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *UpdateExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *DirectEvalExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *DummyNode::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *YieldExpression::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ClassExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TemplateLiteral::Check([[maybe_unused]] checker::TSChecker *checker) +{ + // NOTE: aszilagyi. + return checker->GlobalAnyType(); +} + +checker::Type *AwaitExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BinaryExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *SuperExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ImportExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TaggedTemplateExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *UnaryExpression::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *Identifier::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *SequenceExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BooleanLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *UndefinedLiteral::Check(checker::TSChecker *checker) +{ + return checker->GlobalUndefinedType(); +} + +checker::Type *NumberLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *StringLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BigIntLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *CharLiteral::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *NullLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *RegExpLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TypeofExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *NewExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *CallExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ArrowFunctionExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ConditionalExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *CatchClause::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ClassDefinition::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSSignatureDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSMethodSignature::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *SpreadElement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *Decorator::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *MetaProperty::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ClassStaticBlock::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *OverloadDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return nullptr; +} + +checker::Type *ClassProperty::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *Property::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSPropertySignature::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSIndexSignature::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TemplateElement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *MethodDefinition::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ScriptFunction::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ReturnStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *FunctionDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *VariableDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *SwitchStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *AssertStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TryStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *AnnotationUsage::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *AnnotationDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ForUpdateStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *LabelledStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ExpressionStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *WhileStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BlockStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ThrowStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *EmptyStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *DebuggerStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *IfStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ForOfStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ForInStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ContinueStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *SwitchCaseStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *VariableDeclarator::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *DoWhileStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ClassDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BreakStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *OpaqueTypeNode::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSParameterExpression::Check(checker::TSChecker *const checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +// NOTE(dkofanov): 'GetType' methods should be removed: + +checker::Type *ETSPrimitiveType::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalAnyType(); +} + +checker::Type *TSAnyKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalAnyType(); +} + +checker::Type *TSArrayType::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->Allocator()->New(elementType_->GetType(checker)); +} + +checker::Type *TSBigintKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalBigintType(); +} + +checker::Type *TSBooleanKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalBooleanType(); +} + +checker::Type *TSIndexedAccessType::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + if (TsType() != nullptr) { + return TsType(); + } + + checker::Type *baseType = objectType_->GetType(checker); + checker::Type *indexType = indexType_->GetType(checker); + checker::Type *resolved = checker->GetPropertyTypeForIndexType(baseType, indexType); + + SetTsType(resolved); + return TsType(); +} + +checker::Type *TSLiteralType::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + if (TsType() != nullptr) { + return TsType(); + } + + SetTsType(literal_->Check(checker)); + return TsType(); +} + +checker::Type *TSNeverKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalNeverType(); +} + +checker::Type *TSNullKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalNullType(); +} + +checker::Type *TSNumberKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalNumberType(); +} + +checker::Type *TSObjectKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalNonPrimitiveType(); +} + +checker::Type *TSParenthesizedType::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + if (TsType() != nullptr) { + return TsType(); + } + + SetTsType(type_->GetType(checker)); + return TsType(); +} + +checker::Type *TSStringKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalStringType(); +} + +checker::Type *TSVoidKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalVoidType(); +} + +checker::Type *TSTypeReference::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + if (TsType() != nullptr) { + return TsType(); + } + + if (typeName_->IsTSQualifiedName()) { + return checker->GlobalAnyType(); + } + + ES2PANDA_ASSERT(typeName_->IsIdentifier()); + varbinder::Variable *var = typeName_->AsIdentifier()->Variable(); + + if (var == nullptr) { + checker->ThrowTypeError({"Cannot find name ", typeName_->AsIdentifier()->Name()}, Start()); + } + + SetTsType(checker->GetTypeReferenceType(this, var)); + return TsType(); +} + +checker::Type *TSUndefinedKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalUndefinedType(); +} + +checker::Type *TSUnknownKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GlobalUnknownType(); +} + +checker::Type *TSTypeQuery::GetType([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeLiteral::GetType(checker::TSChecker *checker) +{ + if (TsType() != nullptr) { + return TsType(); + } + + checker::ObjectDescriptor *desc = checker->Allocator()->New(checker->Allocator()); + checker::Type *type = checker->Allocator()->New(desc); + ES2PANDA_ASSERT(type != nullptr); + type->SetVariable(Variable()); + + SetTsType(type); + return TsType(); +} + +checker::Type *TSConstructorType::GetType(checker::TSChecker *checker) +{ + return checker->CheckTypeCached(this); +} + +checker::Type *TSUnionType::GetType(checker::TSChecker *checker) +{ + if (TsType() != nullptr) { + return TsType(); + } + + ArenaVector types(checker->Allocator()->Adapter()); + + for (auto *it : types_) { + types.push_back(it->GetType(checker)); + } + + SetTsType(checker->CreateUnionType(std::move(types))); + return TsType(); +} + +checker::Type *TSFunctionType::GetType(checker::TSChecker *checker) +{ + return checker->CheckTypeCached(this); +} + +} // namespace ark::es2panda::ir diff --git a/ets2panda/checker/checkerContext.cpp b/ets2panda/checker/checkerContext.cpp index fa10d82fac..36b7097e74 100644 --- a/ets2panda/checker/checkerContext.cpp +++ b/ets2panda/checker/checkerContext.cpp @@ -14,6 +14,7 @@ */ #include "ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/ets/aliveAnalyzer.cpp b/ets2panda/checker/ets/aliveAnalyzer.cpp index e4edb04a7a..2748b5fd54 100644 --- a/ets2panda/checker/ets/aliveAnalyzer.cpp +++ b/ets2panda/checker/ets/aliveAnalyzer.cpp @@ -49,6 +49,7 @@ #include "varbinder/variable.h" #include "varbinder/declaration.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsFunctionType.h" #include "ir/base/catchClause.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/ets/arithmetic.cpp b/ets2panda/checker/ets/arithmetic.cpp index b0b13c62aa..7af1d311cc 100644 --- a/ets2panda/checker/ets/arithmetic.cpp +++ b/ets2panda/checker/ets/arithmetic.cpp @@ -17,6 +17,7 @@ #include "checker/types/globalTypesHolder.h" #include "checker/types/typeError.h" +#include "checker/types/ets/etsUnionType.h" #include "lexer/token/token.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/ets/assignAnalyzer.cpp b/ets2panda/checker/ets/assignAnalyzer.cpp index a411f9d429..81f9f7c30b 100644 --- a/ets2panda/checker/ets/assignAnalyzer.cpp +++ b/ets2panda/checker/ets/assignAnalyzer.cpp @@ -15,6 +15,7 @@ #include "assignAnalyzer.h" +#include "ir/base/catchClause.h" #include "ir/base/classDefinition.h" #include "ir/base/classProperty.h" #include "ir/base/classStaticBlock.h" @@ -58,9 +59,9 @@ #include "varbinder/declaration.h" #include "checker/ETSchecker.h" #include "checker/types/gradualType.h" -#include "ir/base/catchClause.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsBooleanType.h" #include "parser/program/program.h" -#include "checker/types/ts/objectType.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/ets/etsWarningAnalyzer.cpp b/ets2panda/checker/ets/etsWarningAnalyzer.cpp index f207387c3f..3310efd922 100644 --- a/ets2panda/checker/ets/etsWarningAnalyzer.cpp +++ b/ets2panda/checker/ets/etsWarningAnalyzer.cpp @@ -34,6 +34,7 @@ #include "ir/base/classDefinition.h" #include "ir/statements/forOfStatement.h" #include "ir/statements/variableDeclarator.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/ets/function.cpp b/ets2panda/checker/ets/function.cpp index f42c123c76..d32ff7ab16 100644 --- a/ets2panda/checker/ets/function.cpp +++ b/ets2panda/checker/ets/function.cpp @@ -15,8 +15,12 @@ #include +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsReadonlyType.h" #include "checker/types/ets/etsResizableArrayType.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsNonNullishType.h" #include "generated/signatures.h" #include "checker/ets/wideningConverter.h" #include "ir/astNodeFlags.h" diff --git a/ets2panda/checker/ets/function_helpers.h b/ets2panda/checker/ets/function_helpers.h index 7730c65f76..1ee7b3e71d 100644 --- a/ets2panda/checker/ets/function_helpers.h +++ b/ets2panda/checker/ets/function_helpers.h @@ -18,6 +18,7 @@ #include "checker/ETSchecker.h" #include "checker/ets/typeRelationContext.h" +#include "checker/types/ets/etsTypeParameter.h" #include "checker/types/ets/etsObjectType.h" #include "checker/types/type.h" #include "ir/base/catchClause.h" diff --git a/ets2panda/checker/ets/helpers.cpp b/ets2panda/checker/ets/helpers.cpp index 259e0032e0..c78a314a64 100644 --- a/ets2panda/checker/ets/helpers.cpp +++ b/ets2panda/checker/ets/helpers.cpp @@ -21,8 +21,15 @@ #include "checker/types/gradualType.h" #include "checker/checkerContext.h" #include "checker/ETSAnalyzerHelpers.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsResizableArrayType.h" #include "checker/types/ets/etsEnumType.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsTypeParameter.h" +#include "checker/types/ets/etsStringType.h" +#include "checker/types/ets/etsBooleanType.h" #include "checker/ets/typeRelationContext.h" #include "checker/ets/typeConverter.h" #include "evaluate/scopedDebugInfoPlugin.h" diff --git a/ets2panda/checker/ets/object.cpp b/ets2panda/checker/ets/object.cpp index 3a2c876796..b0eb65b59d 100644 --- a/ets2panda/checker/ets/object.cpp +++ b/ets2panda/checker/ets/object.cpp @@ -17,11 +17,20 @@ #include "checker/ETSchecker.h" #include "checker/checkerContext.h" #include "checker/ets/typeRelationContext.h" +#include "checker/types/ets/etsFunctionType.h" #include "checker/types/ets/etsObjectType.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsTypeAliasType.h" +#include "checker/types/ets/etsReadonlyType.h" #include "checker/types/ets/etsPartialTypeParameter.h" #include "checker/types/ets/etsAwaitedType.h" #include "checker/types/gradualType.h" +#include "checker/types/ets/etsNonNullishType.h" +#include "checker/types/ets/byteType.h" +#include "checker/types/ets/intType.h" +#include "checker/types/ets/longType.h" +#include "checker/types/ets/shortType.h" #include "compiler/lowering/phase.h" #include "ir/base/classDefinition.h" #include "ir/base/classElement.h" diff --git a/ets2panda/checker/ets/typeCheckingHelpers.cpp b/ets2panda/checker/ets/typeCheckingHelpers.cpp index 20ea468dce..30f4373c80 100644 --- a/ets2panda/checker/ets/typeCheckingHelpers.cpp +++ b/ets2panda/checker/ets/typeCheckingHelpers.cpp @@ -18,8 +18,14 @@ #include "checker/ets/wideningConverter.h" #include "checker/types/globalTypesHolder.h" #include "checker/types/gradualType.h" +#include "tools/es2panda/checker/types/ets/etsAnyType.h" +#include "checker/types/ets/etsFunctionType.h" #include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsTypeAliasType.h" #include "checker/types/ets/etsPartialTypeParameter.h" +#include "checker/types/ets/etsNonNullishType.h" +#include "checker/types/ets/etsEnumType.h" #include "ir/base/catchClause.h" #include "ir/base/scriptFunction.h" #include "ir/base/classProperty.h" diff --git a/ets2panda/checker/ets/typeConverter.h b/ets2panda/checker/ets/typeConverter.h index 46635fdc5d..7537d20b41 100644 --- a/ets2panda/checker/ets/typeConverter.h +++ b/ets2panda/checker/ets/typeConverter.h @@ -18,9 +18,17 @@ #include "checker/types/typeFlag.h" #include "checker/types/ets/types.h" +#include "checker/types/ets/byteType.h" +#include "checker/types/ets/charType.h" +#include "checker/types/ets/doubleType.h" +#include "checker/types/ets/floatType.h" +#include "checker/types/ets/intType.h" +#include "checker/types/ets/longType.h" +#include "checker/types/ets/shortType.h" namespace ark::es2panda::checker { class ETSChecker; +class Type; class TypeConverter { public: diff --git a/ets2panda/checker/ets/typeCreation.cpp b/ets2panda/checker/ets/typeCreation.cpp index c6396ad643..2b4e30ee3e 100644 --- a/ets2panda/checker/ets/typeCreation.cpp +++ b/ets2panda/checker/ets/typeCreation.cpp @@ -15,9 +15,25 @@ #include "checker/ETSchecker.h" +#include "checker/types/ets/etsFunctionType.h" #include "checker/types/ets/etsAsyncFuncReturnType.h" #include "checker/types/ets/etsEnumType.h" #include "checker/types/ets/etsResizableArrayType.h" +#include "checker/types/ets/etsTypeParameter.h" +#include "checker/types/ets/etsUnionType.h" + +#include "checker/types/ets/etsTypeAliasType.h" +#include "checker/types/ets/etsExtensionFuncHelperType.h" +#include "checker/types/ets/etsStringType.h" +#include "checker/types/ets/etsBooleanType.h" +#include "checker/types/ets/etsBigIntType.h" +#include "checker/types/ets/byteType.h" +#include "checker/types/ets/charType.h" +#include "checker/types/ets/doubleType.h" +#include "checker/types/ets/floatType.h" +#include "checker/types/ets/intType.h" +#include "checker/types/ets/longType.h" +#include "checker/types/ets/shortType.h" #include "checker/types/globalTypesHolder.h" #include "checker/types/gradualType.h" #include "checker/types/type.h" diff --git a/ets2panda/checker/ets/typeRelationContext.cpp b/ets2panda/checker/ets/typeRelationContext.cpp index d2835dec80..1eb1473140 100644 --- a/ets2panda/checker/ets/typeRelationContext.cpp +++ b/ets2panda/checker/ets/typeRelationContext.cpp @@ -14,6 +14,7 @@ */ #include "typeRelationContext.h" +#include "checker/types/ets/etsTypeParameter.h" namespace ark::es2panda::checker { bool AssignmentContext::ValidateArrayTypeInitializerByElement(TypeRelation *relation, ir::ArrayExpression *node, diff --git a/ets2panda/checker/ets/typeRelationContext.h b/ets2panda/checker/ets/typeRelationContext.h index 7ba41f94c8..2d3d745376 100644 --- a/ets2panda/checker/ets/typeRelationContext.h +++ b/ets2panda/checker/ets/typeRelationContext.h @@ -17,6 +17,7 @@ #define ES2PANDA_COMPILER_CHECKER_ETS_TYPE_RELATION_CONTEXT_H #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { class ETSChecker; diff --git a/ets2panda/checker/ets/utilityTypeHandlers.cpp b/ets2panda/checker/ets/utilityTypeHandlers.cpp index b47ff09f70..0d81de356e 100644 --- a/ets2panda/checker/ets/utilityTypeHandlers.cpp +++ b/ets2panda/checker/ets/utilityTypeHandlers.cpp @@ -21,9 +21,13 @@ #include "ir/ets/etsUnionType.h" #include "ir/expressions/literals/undefinedLiteral.h" #include "varbinder/ETSBinder.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsObjectType.h" #include "checker/types/ets/etsPartialTypeParameter.h" #include "checker/types/ets/etsAwaitedType.h" -#include "compiler/lowering/util.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsReadonlyType.h" + #include "util/nameMangler.h" #include diff --git a/ets2panda/checker/ets/validateHelpers.cpp b/ets2panda/checker/ets/validateHelpers.cpp index ead157339e..126df304b3 100644 --- a/ets2panda/checker/ets/validateHelpers.cpp +++ b/ets2panda/checker/ets/validateHelpers.cpp @@ -14,6 +14,7 @@ */ #include "varbinder/variableFlags.h" +#include "checker/types/ets/etsObjectType.h" #include "checker/types/ets/etsTupleType.h" #include "checker/ETSchecker.h" diff --git a/ets2panda/checker/typeChecker/TypeChecker.h b/ets2panda/checker/typeChecker/TypeChecker.h index 864753b273..bb49a3c2d4 100644 --- a/ets2panda/checker/typeChecker/TypeChecker.h +++ b/ets2panda/checker/typeChecker/TypeChecker.h @@ -17,6 +17,7 @@ #define PANDA_TYPECHECKER_H #include "ir/visitor/IterateAstVisitor.h" +#include "checker/checker.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/types/ets/charType.cpp b/ets2panda/checker/types/ets/charType.cpp index 43bbec66cd..edc87d23c1 100644 --- a/ets2panda/checker/types/ets/charType.cpp +++ b/ets2panda/checker/types/ets/charType.cpp @@ -17,6 +17,7 @@ #include "checker/ets/conversion.h" #include "checker/ets/wideningConverter.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { void CharType::Identical(TypeRelation *relation, Type *other) diff --git a/ets2panda/checker/types/ets/doubleType.cpp b/ets2panda/checker/types/ets/doubleType.cpp index ad58d7bc8c..8d46e5d696 100644 --- a/ets2panda/checker/types/ets/doubleType.cpp +++ b/ets2panda/checker/types/ets/doubleType.cpp @@ -17,6 +17,7 @@ #include "checker/ets/conversion.h" #include "checker/ets/wideningConverter.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { void DoubleType::Identical(TypeRelation *relation, Type *other) diff --git a/ets2panda/checker/types/ets/etsAnyType.cpp b/ets2panda/checker/types/ets/etsAnyType.cpp index c1e5307545..cec2ca4933 100644 --- a/ets2panda/checker/types/ets/etsAnyType.cpp +++ b/ets2panda/checker/types/ets/etsAnyType.cpp @@ -18,6 +18,7 @@ #include "checker/ETSchecker.h" #include "checker/ets/conversion.h" +#include "checker/types/ets/etsObjectType.h" #include "etsTypeParameter.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/types/ets/etsArrayType.cpp b/ets2panda/checker/types/ets/etsArrayType.cpp index 79d9cc3983..cccb0ff6cb 100644 --- a/ets2panda/checker/types/ets/etsArrayType.cpp +++ b/ets2panda/checker/types/ets/etsArrayType.cpp @@ -21,6 +21,7 @@ #include "checker/ets/conversion.h" #include "checker/types/typeRelation.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsResizableArrayType.h" namespace ark::es2panda::checker { void ETSArrayType::ToString(std::stringstream &ss, bool precise) const diff --git a/ets2panda/checker/types/ets/etsBooleanType.cpp b/ets2panda/checker/types/ets/etsBooleanType.cpp index f19823daa2..9ffb7557bd 100644 --- a/ets2panda/checker/types/ets/etsBooleanType.cpp +++ b/ets2panda/checker/types/ets/etsBooleanType.cpp @@ -17,6 +17,7 @@ #include "checker/ETSchecker.h" #include "checker/ets/conversion.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { void ETSBooleanType::Identical(TypeRelation *relation, Type *other) diff --git a/ets2panda/checker/types/ets/etsFunctionType.cpp b/ets2panda/checker/types/ets/etsFunctionType.cpp index 669ab5d1ed..1030a44fad 100644 --- a/ets2panda/checker/types/ets/etsFunctionType.cpp +++ b/ets2panda/checker/types/ets/etsFunctionType.cpp @@ -14,6 +14,8 @@ */ #include "checker/ETSchecker.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsObjectType.h" #include "checker/types/globalTypesHolder.h" #include "checker/types/typeError.h" #include "compiler/lowering/phase.h" diff --git a/ets2panda/checker/types/ets/etsNeverType.cpp b/ets2panda/checker/types/ets/etsNeverType.cpp index 0b5401c3ba..8d96d40cd5 100644 --- a/ets2panda/checker/types/ets/etsNeverType.cpp +++ b/ets2panda/checker/types/ets/etsNeverType.cpp @@ -16,6 +16,7 @@ #include "etsNeverType.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" #include "checker/ets/conversion.h" #include "etsTypeParameter.h" diff --git a/ets2panda/checker/types/ets/etsNonNullishType.cpp b/ets2panda/checker/types/ets/etsNonNullishType.cpp index 7eee9243fa..548d856293 100644 --- a/ets2panda/checker/types/ets/etsNonNullishType.cpp +++ b/ets2panda/checker/types/ets/etsNonNullishType.cpp @@ -18,6 +18,7 @@ #include "ir/expressions/identifier.h" #include "ir/ts/tsTypeParameter.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsNonNullishType.h" #include "checker/ets/conversion.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/types/ets/etsNullishTypes.cpp b/ets2panda/checker/types/ets/etsNullishTypes.cpp index e9abc5839f..c17cf677f3 100644 --- a/ets2panda/checker/types/ets/etsNullishTypes.cpp +++ b/ets2panda/checker/types/ets/etsNullishTypes.cpp @@ -18,6 +18,7 @@ #include "ir/expressions/identifier.h" #include "ir/ts/tsTypeParameter.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" #include "checker/ets/conversion.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/types/ets/etsObjectType.cpp b/ets2panda/checker/types/ets/etsObjectType.cpp index 3fd970b6bb..6e94903205 100644 --- a/ets2panda/checker/types/ets/etsObjectType.cpp +++ b/ets2panda/checker/types/ets/etsObjectType.cpp @@ -18,7 +18,10 @@ #include "checker/ETSchecker.h" #include "checker/ets/conversion.h" #include "checker/types/globalTypesHolder.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsTypeParameter.h" #include "checker/types/ets/etsAsyncFuncReturnType.h" +#include "checker/types/ets/etsResizableArrayType.h" #include "checker/types/ets/etsEnumType.h" #include "compiler/lowering/phase.h" #include "util/nameMangler.h" diff --git a/ets2panda/checker/types/ets/etsPartialTypeParameter.cpp b/ets2panda/checker/types/ets/etsPartialTypeParameter.cpp index 9333d54633..db8681428d 100644 --- a/ets2panda/checker/types/ets/etsPartialTypeParameter.cpp +++ b/ets2panda/checker/types/ets/etsPartialTypeParameter.cpp @@ -15,6 +15,7 @@ #include "etsPartialTypeParameter.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/types/ets/etsTupleType.cpp b/ets2panda/checker/types/ets/etsTupleType.cpp index 38930b20a3..32feb1eab3 100644 --- a/ets2panda/checker/types/ets/etsTupleType.cpp +++ b/ets2panda/checker/types/ets/etsTupleType.cpp @@ -17,6 +17,7 @@ #include "checker/ETSchecker.h" #include "checker/ets/conversion.h" +#include "checker/types/ets/etsObjectType.h" #include "ir/ets/etsTuple.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/types/ets/etsTupleType.h b/ets2panda/checker/types/ets/etsTupleType.h index f6a76125a9..5c0c8a4f14 100644 --- a/ets2panda/checker/types/ets/etsTupleType.h +++ b/ets2panda/checker/types/ets/etsTupleType.h @@ -30,7 +30,7 @@ public: typeList_(typeList), // NOLINTNEXTLINE(readability-implicit-bool-conversion) wrapperType_(checker->GlobalBuiltinTupleType(typeList_.size()) != nullptr - ? checker->GlobalBuiltinTupleType(typeList_.size())->AsETSObjectType() + ? checker->GlobalBuiltinTupleType(typeList_.size()) : nullptr) { typeFlags_ |= TypeFlag::ETS_TUPLE; diff --git a/ets2panda/checker/types/ets/etsTypeParameter.cpp b/ets2panda/checker/types/ets/etsTypeParameter.cpp index 53c70fcfcc..757a32ebdd 100644 --- a/ets2panda/checker/types/ets/etsTypeParameter.cpp +++ b/ets2panda/checker/types/ets/etsTypeParameter.cpp @@ -17,6 +17,7 @@ #include "ir/expressions/identifier.h" #include "ir/ts/tsTypeParameter.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/types/ets/etsUnionType.cpp b/ets2panda/checker/types/ets/etsUnionType.cpp index b927ff0afe..fafca99505 100644 --- a/ets2panda/checker/types/ets/etsUnionType.cpp +++ b/ets2panda/checker/types/ets/etsUnionType.cpp @@ -19,6 +19,7 @@ #include "checker/ets/conversion.h" #include "checker/types/ets/etsTupleType.h" #include "checker/types/globalTypesHolder.h" +#include "checker/types/ets/etsTypeParameter.h" #include "checker/ETSchecker.h" namespace ark::es2panda::checker { diff --git a/ets2panda/checker/types/ets/etsUnionType.h b/ets2panda/checker/types/ets/etsUnionType.h index 0ae2e8a38b..06d2b9c5f8 100644 --- a/ets2panda/checker/types/ets/etsUnionType.h +++ b/ets2panda/checker/types/ets/etsUnionType.h @@ -17,10 +17,10 @@ #define ES2PANDA_COMPILER_CHECKER_TYPES_ETS_UNION_TYPE_H #include "checker/types/type.h" -#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { class GlobalTypesHolder; +class ETSObjectType; class ETSUnionType : public Type { public: diff --git a/ets2panda/checker/types/ets/floatType.cpp b/ets2panda/checker/types/ets/floatType.cpp index 958f338480..1ac8fcbc26 100644 --- a/ets2panda/checker/types/ets/floatType.cpp +++ b/ets2panda/checker/types/ets/floatType.cpp @@ -17,6 +17,7 @@ #include "checker/ets/conversion.h" #include "checker/ets/wideningConverter.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { void FloatType::Identical(TypeRelation *relation, Type *other) diff --git a/ets2panda/checker/types/ets/intType.cpp b/ets2panda/checker/types/ets/intType.cpp index 3587ee1bc0..bc9b42c878 100644 --- a/ets2panda/checker/types/ets/intType.cpp +++ b/ets2panda/checker/types/ets/intType.cpp @@ -17,6 +17,7 @@ #include "checker/ets/conversion.h" #include "checker/ets/wideningConverter.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { void IntType::Identical(TypeRelation *relation, Type *other) diff --git a/ets2panda/checker/types/ets/longType.cpp b/ets2panda/checker/types/ets/longType.cpp index 7b8c5b34fa..bdd3fcd360 100644 --- a/ets2panda/checker/types/ets/longType.cpp +++ b/ets2panda/checker/types/ets/longType.cpp @@ -17,6 +17,7 @@ #include "checker/ets/conversion.h" #include "checker/ets/wideningConverter.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { void LongType::Identical(TypeRelation *relation, Type *other) diff --git a/ets2panda/checker/types/ets/shortType.cpp b/ets2panda/checker/types/ets/shortType.cpp index c7f79a229e..c1eddf97e3 100644 --- a/ets2panda/checker/types/ets/shortType.cpp +++ b/ets2panda/checker/types/ets/shortType.cpp @@ -17,6 +17,7 @@ #include "checker/ets/conversion.h" #include "checker/ets/wideningConverter.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::checker { void ShortType::Identical(TypeRelation *relation, Type *other) diff --git a/ets2panda/checker/types/ets/types.h b/ets2panda/checker/types/ets/types.h index e82a8fa0a5..099b3b17cd 100644 --- a/ets2panda/checker/types/ets/types.h +++ b/ets2panda/checker/types/ets/types.h @@ -16,31 +16,33 @@ #ifndef ES2PANDA_COMPILER_CHECKER_TYPES_ETS_H #define ES2PANDA_COMPILER_CHECKER_TYPES_ETS_H -#include "byteType.h" -#include "charType.h" -#include "doubleType.h" -#include "floatType.h" -#include "intType.h" -#include "longType.h" -#include "shortType.h" -#include "etsBooleanType.h" -#include "etsExtensionFuncHelperType.h" -#include "etsFunctionType.h" -#include "etsUnionType.h" -#include "etsVoidType.h" -#include "etsStringType.h" -#include "etsBigIntType.h" -#include "etsObjectType.h" -#include "etsTypeAliasType.h" -#include "etsArrayType.h" -#include "wildcardType.h" -#include "etsTypeParameter.h" -#include "etsNonNullishType.h" -#include "etsNullishTypes.h" -#include "checker/types/signature.h" -#include "etsReadonlyType.h" -#include "etsAnyType.h" -#include "etsNeverType.h" -#include "etsEnumType.h" +namespace ark::es2panda::checker { +class ByteType; +class CharType; +class DoubleType; +class FloatType; +class IntType; +class LongType; +class ShortType; +class WildcardType; +class ETSBooleanType; +class ETSExtensionFuncHelperType; +class ETSFunctionType; +class ETSUnionType; +class ETSVoidType; +class ETSStringType; +class ETSBigIntType; +class ETSObjectType; +class ETSTypeAliasType; +class ETSArrayType; +class ETSResizableArrayType; +class ETSTypeParameter; +class ETSNonNullishType; +class ETSNullishTypes; +class ETSReadonlyType; +class ETSAnyType; +class ETSNeverType; +class ETSEnumType; +} // namespace ark::es2panda::checker -#endif /* TYPES_H */ +#endif /* ES2PANDA_COMPILER_CHECKER_TYPES_ETS_H */ diff --git a/ets2panda/checker/types/typeRelation.cpp b/ets2panda/checker/types/typeRelation.cpp index c4b2fbb086..e7f63292fe 100644 --- a/ets2panda/checker/types/typeRelation.cpp +++ b/ets2panda/checker/types/typeRelation.cpp @@ -19,6 +19,8 @@ #include "checker/ETSchecker.h" #include "checker/types/ts/indexInfo.h" #include "checker/types/signature.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsUnionType.h" namespace ark::es2panda::checker { ArenaAllocator *TypeRelation::Allocator() diff --git a/ets2panda/compiler/base/lreference.cpp b/ets2panda/compiler/base/lreference.cpp index 852eb72ba2..8ce1e1ef06 100644 --- a/ets2panda/compiler/base/lreference.cpp +++ b/ets2panda/compiler/base/lreference.cpp @@ -21,7 +21,9 @@ #include "compiler/core/function.h" #include "compiler/core/pandagen.h" #include "compiler/core/ETSGen.h" +#include "checker/types/ets/etsFunctionType.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsResizableArrayType.h" #include "ir/base/spreadElement.h" #include "ir/base/classProperty.h" #include "ir/base/classDefinition.h" diff --git a/ets2panda/compiler/core/ASTCompiler.h b/ets2panda/compiler/core/ASTCompiler.h index d7925c2f44..dcc4b7d423 100644 --- a/ets2panda/compiler/core/ASTCompiler.h +++ b/ets2panda/compiler/core/ASTCompiler.h @@ -60,6 +60,7 @@ #include "ir/expressions/classExpression.h" #include "ir/expressions/conditionalExpression.h" #include "ir/expressions/directEvalExpression.h" +#include "ir/expressions/dummyNode.h" #include "ir/expressions/functionExpression.h" #include "ir/expressions/identifier.h" #include "ir/expressions/importExpression.h" @@ -82,6 +83,7 @@ #include "ir/expressions/literals/numberLiteral.h" #include "ir/expressions/literals/regExpLiteral.h" #include "ir/expressions/literals/stringLiteral.h" +#include "ir/expressions/literals/undefinedLiteral.h" #include "ir/module/exportAllDeclaration.h" #include "ir/module/exportDefaultDeclaration.h" #include "ir/module/exportNamedDeclaration.h" diff --git a/ets2panda/compiler/core/ETSCompiler.cpp b/ets2panda/compiler/core/ETSCompiler.cpp index fc921010ef..9686eaee1d 100644 --- a/ets2panda/compiler/core/ETSCompiler.cpp +++ b/ets2panda/compiler/core/ETSCompiler.cpp @@ -23,12 +23,40 @@ #include "compiler/core/vReg.h" #include "compiler/function/functionBuilder.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/byteType.h" +#include "checker/types/ets/charType.h" +#include "checker/types/ets/doubleType.h" +#include "checker/types/ets/floatType.h" +#include "checker/types/ets/intType.h" +#include "checker/types/ets/longType.h" +#include "checker/types/ets/shortType.h" +#include "checker/types/ets/etsBooleanType.h" +#include "checker/types/ets/etsExtensionFuncHelperType.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsUnionType.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsVoidType.h" +#include "checker/types/ets/etsStringType.h" +#include "checker/types/ets/etsBigIntType.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsTypeAliasType.h" +#include "checker/types/ets/etsArrayType.h" +#include "checker/types/ets/wildcardType.h" +#include "checker/types/ets/etsTypeParameter.h" +#include "checker/types/ets/etsNonNullishType.h" +#include "checker/types/ets/etsNullishTypes.h" +#include "checker/types/ets/etsReadonlyType.h" +#include "checker/types/ets/etsAnyType.h" +#include "checker/types/ets/etsNeverType.h" +#include "checker/types/ets/etsEnumType.h" + #include "ETSGen-inl.h" #include "generated/signatures.h" #include "util/es2pandaMacros.h" #include "varbinder/ETSBinder.h" +#include "ir/brokenTypeNode.h" + namespace ark::es2panda::compiler { ETSGen *ETSCompiler::GetETSGen() const @@ -1757,3 +1785,766 @@ void ETSCompiler::Compile(const ir::TSQualifiedName *expr) const } } // namespace ark::es2panda::compiler + +namespace ark::es2panda::ir { + +void PrefixAssertionExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void NamedType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ETSFunctionType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ETSPackageDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ETSNewClassInstanceExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ETSClassLiteral::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ETSTypeReferencePart::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ETSPrimitiveType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ETSTypeReference::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ETSNewMultiDimArrayInstanceExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ETSWildcardType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ETSNewArrayInstanceExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSUndefinedKeyword::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSBooleanKeyword::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSConditionalType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSExternalModuleReference::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSMappedType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSTypePredicate::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSTypeAssertion::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSParenthesizedType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSTypeParameter::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSEnumMember::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSTypeParameterDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSStringKeyword::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSTypeAliasDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSNonNullExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSInterfaceBody::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSThisType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSConstructorType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSIndexedAccessType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSEnumDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSTypeOperator::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSParameterProperty::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSQualifiedName::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSInterfaceDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSInferType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSTypeLiteral::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSTypeReference::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSAnyKeyword::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSBigintKeyword::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSModuleBlock::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSNullKeyword::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSTypeParameterInstantiation::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSTupleType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSVoidKeyword::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSLiteralType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSNamedTupleMember::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSAsExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSNeverKeyword::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSImportEqualsDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSInterfaceHeritage::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSTypeQuery::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSFunctionType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSIntersectionType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSNumberKeyword::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSModuleDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSClassImplements::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSUnionType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSUnknownKeyword::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSArrayType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSImportType::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ImportDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ExportSpecifier::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ImportDefaultSpecifier::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ExportAllDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ExportDefaultDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ExportNamedDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ImportSpecifier::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ImportNamespaceSpecifier::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ThisExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void AssignmentExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ObjectExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void FunctionExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void BlockExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void OmittedExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ChainExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void MemberExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void UpdateExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void DirectEvalExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void DummyNode::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void YieldExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ClassExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void AwaitExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void BinaryExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void BinaryExpression::CompileOperands(compiler::ETSGen *etsg, compiler::VReg lhs) const +{ + left_->Compile(etsg); + + if (operator_ == lexer::TokenType::KEYW_INSTANCEOF) { + etsg->StoreAccumulator(left_, lhs); + } else { + etsg->ApplyConversionAndStoreAccumulator(left_, lhs, operationType_); + } + + right_->Compile(etsg); + etsg->ApplyConversion(right_, operationType_); +} + +void SuperExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ImportExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TaggedTemplateExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void Identifier::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void SequenceExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void BooleanLiteral::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void UndefinedLiteral::Compile(compiler::ETSGen *etsg) const +{ + etsg->LoadAccumulatorUndefined(this); +} + +void NumberLiteral::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void StringLiteral::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void BigIntLiteral::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void NullLiteral::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void RegExpLiteral::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TypeofExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void NewExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void CallExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ArrowFunctionExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ConditionalExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void CatchClause::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ClassDefinition::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSSignatureDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSMethodSignature::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void Decorator::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void MetaProperty::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ClassStaticBlock::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ClassProperty::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void Property::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSPropertySignature::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSIndexSignature::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TemplateElement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void MethodDefinition::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ScriptFunction::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void FunctionDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void VariableDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void SwitchStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TryStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void AnnotationUsage::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void AnnotationDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ForUpdateStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void LabelledStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ExpressionStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void EmptyStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void DebuggerStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void IfStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ForOfStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ForInStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ContinueStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void SwitchCaseStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void VariableDeclarator::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void DoWhileStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ClassDeclaration::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TSObjectKeyword::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void BrokenTypeNode::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void TemplateLiteral::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void UnaryExpression::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void CharLiteral::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void SpreadElement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ReturnStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void AssertStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void WhileStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void BlockStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ThrowStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void BreakStatement::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void OpaqueTypeNode::Compile(compiler::ETSGen *etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ArrayExpression::Compile(compiler::ETSGen *const etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +void ETSParameterExpression::Compile(compiler::ETSGen *const etsg) const +{ + etsg->GetAstCompiler()->Compile(this); +} + +} // namespace ark::es2panda::ir diff --git a/ets2panda/compiler/core/ETSGen-inl.h b/ets2panda/compiler/core/ETSGen-inl.h index de548d52ed..b30f0bac3e 100644 --- a/ets2panda/compiler/core/ETSGen-inl.h +++ b/ets2panda/compiler/core/ETSGen-inl.h @@ -18,6 +18,14 @@ #include "ETSGen.h" +#include "checker/types/ets/byteType.h" +#include "checker/types/ets/charType.h" +#include "checker/types/ets/doubleType.h" +#include "checker/types/ets/floatType.h" +#include "checker/types/ets/intType.h" +#include "checker/types/ets/longType.h" +#include "checker/types/ets/shortType.h" + #include "checker/ETSchecker.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/compiler/core/ETSGen.cpp b/ets2panda/compiler/core/ETSGen.cpp index bd09f10ff1..aa672f7f23 100644 --- a/ets2panda/compiler/core/ETSGen.cpp +++ b/ets2panda/compiler/core/ETSGen.cpp @@ -44,9 +44,27 @@ #include "checker/types/signature.h" #include "checker/checker.h" #include "checker/ETSchecker.h" -#include "checker/types/ets/etsObjectType.h" -#include "checker/types/ets/etsTupleType.h" #include "checker/types/ets/etsAsyncFuncReturnType.h" +#include "checker/types/ets/etsBooleanType.h" +#include "checker/types/ets/etsExtensionFuncHelperType.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsVoidType.h" +#include "checker/types/ets/etsStringType.h" +#include "checker/types/ets/etsBigIntType.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsTypeAliasType.h" +#include "checker/types/ets/etsArrayType.h" +#include "checker/types/ets/etsResizableArrayType.h" +#include "checker/types/ets/wildcardType.h" +#include "checker/types/ets/etsTypeParameter.h" +#include "checker/types/ets/etsNonNullishType.h" +#include "checker/types/ets/etsNullishTypes.h" +#include "checker/types/ets/etsReadonlyType.h" +#include "checker/types/ets/etsAnyType.h" +#include "checker/types/ets/etsNeverType.h" +#include "checker/types/ets/etsEnumType.h" #include "parser/program/program.h" #include "checker/types/globalTypesHolder.h" #include "public/public.h" @@ -2948,4 +2966,5 @@ void ETSGen::LoadAccumulatorNumber(const ir::AstNode *node, T number, checker::T ApplyConversion(node, targetType_); } } + } // namespace ark::es2panda::compiler diff --git a/ets2panda/compiler/core/ETSGen.h b/ets2panda/compiler/core/ETSGen.h index 72d720e521..44c81316b9 100644 --- a/ets2panda/compiler/core/ETSGen.h +++ b/ets2panda/compiler/core/ETSGen.h @@ -21,6 +21,7 @@ #include "compiler/core/ETSfunction.h" #include "compiler/core/targetTypeContext.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" #include "ir/expressions/identifier.h" #include "util/helpers.h" #include diff --git a/ets2panda/compiler/core/ETSemitter.cpp b/ets2panda/compiler/core/ETSemitter.cpp index de105630af..e0b79f8deb 100644 --- a/ets2panda/compiler/core/ETSemitter.cpp +++ b/ets2panda/compiler/core/ETSemitter.cpp @@ -40,6 +40,7 @@ #include "checker/types/gradualType.h" #include "checker/types/ets/types.h" #include "checker/types/ets/etsPartialTypeParameter.h" +#include "checker/types/ets/etsNonNullishType.h" #include "public/public.h" #include "util/nameMangler.h" diff --git a/ets2panda/compiler/core/ETSfunction.cpp b/ets2panda/compiler/core/ETSfunction.cpp index 2daa3e0167..0aaf2d99c3 100644 --- a/ets2panda/compiler/core/ETSfunction.cpp +++ b/ets2panda/compiler/core/ETSfunction.cpp @@ -34,6 +34,7 @@ #include "ir/ts/tsEnumMember.h" #include "checker/types/ets/types.h" #include "checker/types/gradualType.h" + namespace ark::es2panda::compiler { // #22952: this should have been done in lowering diff --git a/ets2panda/compiler/core/JSCompiler.cpp b/ets2panda/compiler/core/JSCompiler.cpp index f283dccf56..c2bce6d536 100644 --- a/ets2panda/compiler/core/JSCompiler.cpp +++ b/ets2panda/compiler/core/JSCompiler.cpp @@ -1740,4 +1740,66 @@ void JSCompiler::Compile(const ir::WhileStatement *st) const PandaGen *pg = GetPandaGen(); CompileImpl(st, pg); } + } // namespace ark::es2panda::compiler + +namespace ark::es2panda::ir { + +void ChainExpression::CompileToReg(compiler::PandaGen *pg, compiler::VReg &objReg) const +{ + compiler::OptionalChain chain(pg, this); + + if (expression_->IsMemberExpression()) { + objReg = pg->AllocReg(); + expression_->AsMemberExpression()->CompileToReg(pg, objReg); + } else { + objReg = compiler::VReg::Invalid(); + expression_->Compile(pg); + } +} + +void MemberExpression::CompileToRegs(compiler::PandaGen *pg, compiler::VReg object, compiler::VReg property) const +{ + object_->Compile(pg); + pg->StoreAccumulator(this, object); + + pg->OptionalChainCheck(IsOptional(), object); + + if (!computed_) { + pg->LoadAccumulatorString(this, property_->AsIdentifier()->Name()); + } else { + property_->Compile(pg); + } + + pg->StoreAccumulator(this, property); +} + +void MemberExpression::CompileToReg(compiler::PandaGen *pg, compiler::VReg objReg) const +{ + object_->Compile(pg); + pg->StoreAccumulator(this, objReg); + pg->OptionalChainCheck(IsOptional(), objReg); + LoadRhs(pg); +} + +void MemberExpression::LoadRhs(compiler::PandaGen *pg) const +{ + compiler::RegScope rs(pg); + bool isSuper = object_->IsSuperExpression(); + compiler::Operand prop = pg->ToPropertyKey(property_, computed_, isSuper); + + if (isSuper) { + pg->LoadSuperProperty(this, prop); + } else if (IsPrivateReference()) { + const auto &name = property_->AsIdentifier()->Name(); + compiler::VReg objReg = pg->AllocReg(); + pg->StoreAccumulator(this, objReg); + compiler::VReg ctor = pg->AllocReg(); + compiler::Function::LoadClassContexts(this, pg, ctor, name); + pg->ClassPrivateFieldGet(this, ctor, objReg, name); + } else { + pg->LoadObjProperty(this, prop); + } +} + +} // namespace ark::es2panda::ir diff --git a/ets2panda/compiler/core/pandagen.cpp b/ets2panda/compiler/core/pandagen.cpp index d4602f2bea..8bf1b7940d 100644 --- a/ets2panda/compiler/core/pandagen.cpp +++ b/ets2panda/compiler/core/pandagen.cpp @@ -37,9 +37,12 @@ #include "ir/base/scriptFunction.h" #include "ir/base/spreadElement.h" #include "ir/statement.h" +#include "ir/statements/annotationDeclaration.h" #include "ir/expressions/identifier.h" #include "ir/expressions/literals/numberLiteral.h" #include "ir/expressions/literals/stringLiteral.h" +#include "ir/ets/etsUnionType.h" +#include "ir/brokenTypeNode.h" namespace ark::es2panda::compiler { @@ -1833,3 +1836,785 @@ const checker::Type *PandaGen::GetVRegType(VReg vreg) const } } // namespace ark::es2panda::compiler + +namespace ark::es2panda::ir { + +void PrefixAssertionExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void NamedType::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSFunctionType::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSPackageDeclaration::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSNewClassInstanceExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSClassLiteral::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSTypeReferencePart::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSPrimitiveType::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSTypeReference::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSNewMultiDimArrayInstanceExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSWildcardType::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSNewArrayInstanceExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSUndefinedKeyword::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSBooleanKeyword::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSExternalModuleReference::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSEnumMember::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSStringKeyword::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSEnumDeclaration::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSAnyKeyword::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSVoidKeyword::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSNumberKeyword::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSUnknownKeyword::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ImportDeclaration::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ExportSpecifier::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ImportDefaultSpecifier::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ExportAllDeclaration::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ExportDefaultDeclaration::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ExportNamedDeclaration::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ImportSpecifier::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ImportNamespaceSpecifier::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ThisExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void AssignmentExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void FunctionExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void OmittedExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ChainExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ArrayExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void MemberExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void UpdateExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void DirectEvalExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void DummyNode::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ClassExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void AwaitExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void BinaryExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void SuperExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ImportExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TaggedTemplateExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void UnaryExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void Identifier::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void SequenceExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void BooleanLiteral::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void UndefinedLiteral::Compile(compiler::PandaGen *pg) const +{ + pg->LoadConst(this, compiler::Constant::JS_UNDEFINED); +} + +void NumberLiteral::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void StringLiteral::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void BigIntLiteral::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void NullLiteral::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void RegExpLiteral::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TypeofExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void NewExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void CallExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ArrowFunctionExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ConditionalExpression::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void CatchClause::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ClassDefinition::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSSignatureDeclaration::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSMethodSignature::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void Decorator::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void MetaProperty::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ClassStaticBlock::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ClassProperty::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void Property::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSPropertySignature::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSIndexSignature::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TemplateElement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void MethodDefinition::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ScriptFunction::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void FunctionDeclaration::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void VariableDeclaration::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void SwitchStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void AnnotationUsage::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void AnnotationDeclaration::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ForUpdateStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void LabelledStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ExpressionStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ThrowStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void EmptyStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void DebuggerStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void IfStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ForOfStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ForInStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ContinueStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void SwitchCaseStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void DoWhileStatement::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ClassDeclaration::Compile(compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSIntrinsicNode::Compile([[maybe_unused]] compiler::PandaGen *pg) const {} + +void ETSUnionType::Compile([[maybe_unused]] compiler::PandaGen *pg) const {} + +void ETSNeverType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + ES2PANDA_UNREACHABLE(); +} + +void ETSUndefinedType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + ES2PANDA_UNREACHABLE(); +} + +void ETSNullType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + ES2PANDA_UNREACHABLE(); +} + +void ETSNonNullishTypeNode::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + ES2PANDA_UNREACHABLE(); +} + +void ETSStringLiteralType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + ES2PANDA_UNREACHABLE(); +} + +void ETSKeyofType::Compile([[maybe_unused]] compiler::PandaGen *pg) const {} + +void TSConditionalType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSMappedType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSTypePredicate::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSTypeAssertion::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSParenthesizedType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSTypeParameter::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSTypeParameterDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSTypeAliasDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSNonNullExpression::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSInterfaceBody::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSThisType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSConstructorType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSIndexedAccessType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSTypeOperator::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSParameterProperty::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSQualifiedName::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSInterfaceDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSInferType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSTypeLiteral::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSTypeReference::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSBigintKeyword::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSModuleBlock::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSNullKeyword::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSTypeParameterInstantiation::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSTupleType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSLiteralType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSNamedTupleMember::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSAsExpression::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSNeverKeyword::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSObjectKeyword::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSImportEqualsDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSInterfaceHeritage::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSTypeQuery::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSFunctionType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSIntersectionType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSModuleDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSClassImplements::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSUnionType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSArrayType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TSImportType::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void BrokenTypeNode::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ObjectExpression::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void BlockExpression::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + ES2PANDA_UNREACHABLE(); +} + +void YieldExpression::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TemplateLiteral::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void CharLiteral::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void SpreadElement::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void OverloadDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const {} + +void ReturnStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void AssertStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void TryStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void WhileStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void BlockStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void VariableDeclarator::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void BreakStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void OpaqueTypeNode::Compile([[maybe_unused]] compiler::PandaGen *pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +void ETSParameterExpression::Compile(compiler::PandaGen *const pg) const +{ + pg->GetAstCompiler()->Compile(this); +} + +} // namespace ark::es2panda::ir diff --git a/ets2panda/compiler/lowering/ets/boxingForLocals.cpp b/ets2panda/compiler/lowering/ets/boxingForLocals.cpp index 3c5f9f7852..8111c58d99 100644 --- a/ets2panda/compiler/lowering/ets/boxingForLocals.cpp +++ b/ets2panda/compiler/lowering/ets/boxingForLocals.cpp @@ -18,6 +18,7 @@ #include "compiler/lowering/util.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/compiler/lowering/ets/declareOverloadLowering.cpp b/ets2panda/compiler/lowering/ets/declareOverloadLowering.cpp index ad3cebeced..cfec769c68 100644 --- a/ets2panda/compiler/lowering/ets/declareOverloadLowering.cpp +++ b/ets2panda/compiler/lowering/ets/declareOverloadLowering.cpp @@ -14,6 +14,7 @@ */ #include "declareOverloadLowering.h" +#include "checker/types/ets/etsFunctionType.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" #include "compiler/lowering/util.h" diff --git a/ets2panda/compiler/lowering/ets/dynamicImport.cpp b/ets2panda/compiler/lowering/ets/dynamicImport.cpp index 5e848f6e1e..bca43127b4 100644 --- a/ets2panda/compiler/lowering/ets/dynamicImport.cpp +++ b/ets2panda/compiler/lowering/ets/dynamicImport.cpp @@ -17,6 +17,7 @@ #include #include #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" #include "ir/astNode.h" #include "compiler/lowering/util.h" diff --git a/ets2panda/compiler/lowering/ets/enumLowering.cpp b/ets2panda/compiler/lowering/ets/enumLowering.cpp index a36144f45d..4ef52f6131 100644 --- a/ets2panda/compiler/lowering/ets/enumLowering.cpp +++ b/ets2panda/compiler/lowering/ets/enumLowering.cpp @@ -18,7 +18,6 @@ #include #include "checker/ETSchecker.h" -#include "checker/types/ets/etsEnumType.h" #include "checker/types/type.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" #include "compiler/lowering/util.h" diff --git a/ets2panda/compiler/lowering/ets/enumLowering.h b/ets2panda/compiler/lowering/ets/enumLowering.h index f95443c8ce..6b1f255be0 100644 --- a/ets2panda/compiler/lowering/ets/enumLowering.h +++ b/ets2panda/compiler/lowering/ets/enumLowering.h @@ -20,6 +20,7 @@ #include #include "compiler/lowering/phase.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsEnumType.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/compiler/lowering/ets/enumPostCheckLowering.cpp b/ets2panda/compiler/lowering/ets/enumPostCheckLowering.cpp index e62ba6a091..8d3a184c55 100644 --- a/ets2panda/compiler/lowering/ets/enumPostCheckLowering.cpp +++ b/ets2panda/compiler/lowering/ets/enumPostCheckLowering.cpp @@ -19,6 +19,7 @@ #include "checker/ETSchecker.h" #include "checker/types/type.h" #include "checker/types/ets/etsEnumType.h" +#include "checker/types/ets/etsUnionType.h" #include "compiler/lowering/util.h" #include "ir/astNode.h" #include "ir/expressions/identifier.h" diff --git a/ets2panda/compiler/lowering/ets/expandBrackets.cpp b/ets2panda/compiler/lowering/ets/expandBrackets.cpp index 2f865dca1e..bc7b60db5c 100644 --- a/ets2panda/compiler/lowering/ets/expandBrackets.cpp +++ b/ets2panda/compiler/lowering/ets/expandBrackets.cpp @@ -16,6 +16,7 @@ #include "expandBrackets.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" #include "compiler/lowering/util.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" diff --git a/ets2panda/compiler/lowering/ets/extensionAccessorLowering.cpp b/ets2panda/compiler/lowering/ets/extensionAccessorLowering.cpp index 0ec34677b1..097065dcc9 100644 --- a/ets2panda/compiler/lowering/ets/extensionAccessorLowering.cpp +++ b/ets2panda/compiler/lowering/ets/extensionAccessorLowering.cpp @@ -15,6 +15,7 @@ #include "extensionAccessorLowering.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsFunctionType.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" #include "compiler/lowering/util.h" diff --git a/ets2panda/compiler/lowering/ets/genericBridgesLowering.cpp b/ets2panda/compiler/lowering/ets/genericBridgesLowering.cpp index 29df4c1d56..9e0eb06443 100644 --- a/ets2panda/compiler/lowering/ets/genericBridgesLowering.cpp +++ b/ets2panda/compiler/lowering/ets/genericBridgesLowering.cpp @@ -14,8 +14,12 @@ */ #include "genericBridgesLowering.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsTypeParameter.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" + #include "compiler/lowering/util.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/compiler/lowering/ets/gradualTypeNarrowing.cpp b/ets2panda/compiler/lowering/ets/gradualTypeNarrowing.cpp index edb6d69350..43fd205af5 100644 --- a/ets2panda/compiler/lowering/ets/gradualTypeNarrowing.cpp +++ b/ets2panda/compiler/lowering/ets/gradualTypeNarrowing.cpp @@ -16,7 +16,10 @@ #include "gradualTypeNarrowing.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsUnionType.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsResizableArrayType.h" #include "checker/types/gradualType.h" #include "varbinder/ETSBinder.h" #include "es2panda.h" diff --git a/ets2panda/compiler/lowering/ets/interfaceObjectLiteralLowering.cpp b/ets2panda/compiler/lowering/ets/interfaceObjectLiteralLowering.cpp index 954ab38573..99013f2c42 100644 --- a/ets2panda/compiler/lowering/ets/interfaceObjectLiteralLowering.cpp +++ b/ets2panda/compiler/lowering/ets/interfaceObjectLiteralLowering.cpp @@ -16,6 +16,7 @@ #include "interfaceObjectLiteralLowering.h" #include "checker/ETSchecker.h" #include "checker/ets/typeRelationContext.h" +#include "checker/types/ets/etsFunctionType.h" #include "compiler/lowering/util.h" #include "generated/signatures.h" #include "ir/expressions/assignmentExpression.h" diff --git a/ets2panda/compiler/lowering/ets/interfacePropertyDeclarations.cpp b/ets2panda/compiler/lowering/ets/interfacePropertyDeclarations.cpp index e3d748001c..5fa93d0db1 100644 --- a/ets2panda/compiler/lowering/ets/interfacePropertyDeclarations.cpp +++ b/ets2panda/compiler/lowering/ets/interfacePropertyDeclarations.cpp @@ -17,6 +17,7 @@ #include "checker/ETSchecker.h" #include "checker/types/type.h" +#include "checker/types/ets/etsObjectType.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" #include "compiler/lowering/util.h" #include "ir/astNode.h" diff --git a/ets2panda/compiler/lowering/ets/lambdaLowering.cpp b/ets2panda/compiler/lowering/ets/lambdaLowering.cpp index 1d45f1c371..80a2b064c1 100644 --- a/ets2panda/compiler/lowering/ets/lambdaLowering.cpp +++ b/ets2panda/compiler/lowering/ets/lambdaLowering.cpp @@ -19,6 +19,8 @@ #include "checker/types/ets/etsTupleType.h" #include "checker/ets/typeRelationContext.h" +#include "checker/types/ets/etsTypeParameter.h" +#include "checker/types/ets/etsFunctionType.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" #include "compiler/lowering/util.h" #include "ir/astNode.h" diff --git a/ets2panda/compiler/lowering/ets/objectIterator.cpp b/ets2panda/compiler/lowering/ets/objectIterator.cpp index 18a5c5c373..ff4577c7ab 100644 --- a/ets2panda/compiler/lowering/ets/objectIterator.cpp +++ b/ets2panda/compiler/lowering/ets/objectIterator.cpp @@ -37,6 +37,9 @@ #include "compiler/lowering/util.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsUnionType.h" #include "util/options.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/compiler/lowering/ets/objectLiteralLowering.cpp b/ets2panda/compiler/lowering/ets/objectLiteralLowering.cpp index a497f98264..4692ee54ed 100644 --- a/ets2panda/compiler/lowering/ets/objectLiteralLowering.cpp +++ b/ets2panda/compiler/lowering/ets/objectLiteralLowering.cpp @@ -15,6 +15,7 @@ #include "objectLiteralLowering.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" #include "compiler/lowering/util.h" diff --git a/ets2panda/compiler/lowering/ets/opAssignment.cpp b/ets2panda/compiler/lowering/ets/opAssignment.cpp index 44b66ee3d2..3343315af5 100644 --- a/ets2panda/compiler/lowering/ets/opAssignment.cpp +++ b/ets2panda/compiler/lowering/ets/opAssignment.cpp @@ -26,6 +26,8 @@ #include "parser/ETSparser.h" #include "varbinder/ETSBinder.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsObjectType.h" #include "compiler/lowering/util.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" #include "ir/opaqueTypeNode.h" diff --git a/ets2panda/compiler/lowering/ets/overloadMappingLowering.cpp b/ets2panda/compiler/lowering/ets/overloadMappingLowering.cpp index a72a5c6517..99c4fe14b2 100644 --- a/ets2panda/compiler/lowering/ets/overloadMappingLowering.cpp +++ b/ets2panda/compiler/lowering/ets/overloadMappingLowering.cpp @@ -15,6 +15,8 @@ #include "overloadMappingLowering.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsUnionType.h" #include "compiler/lowering/util.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/compiler/lowering/ets/primitiveConversionPhase.cpp b/ets2panda/compiler/lowering/ets/primitiveConversionPhase.cpp index 7a27a2001b..bce9887333 100644 --- a/ets2panda/compiler/lowering/ets/primitiveConversionPhase.cpp +++ b/ets2panda/compiler/lowering/ets/primitiveConversionPhase.cpp @@ -15,6 +15,7 @@ #include "compiler/lowering/util.h" #include "primitiveConversionPhase.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/compiler/lowering/ets/primitiveConversionPhase.h b/ets2panda/compiler/lowering/ets/primitiveConversionPhase.h index 2fdd77510e..876e7341d9 100644 --- a/ets2panda/compiler/lowering/ets/primitiveConversionPhase.h +++ b/ets2panda/compiler/lowering/ets/primitiveConversionPhase.h @@ -17,6 +17,7 @@ #define ES2PANDA_COMPILER_LOWERING_PRIMITIVE_CONVERSION_PHASE_H #include "compiler/lowering/phase.h" +#include "checker/types/ets/etsFunctionType.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/compiler/lowering/ets/recordLowering.cpp b/ets2panda/compiler/lowering/ets/recordLowering.cpp index 8c13718bc0..b2de4d39f1 100644 --- a/ets2panda/compiler/lowering/ets/recordLowering.cpp +++ b/ets2panda/compiler/lowering/ets/recordLowering.cpp @@ -16,6 +16,16 @@ #include "recordLowering.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsTypeParameter.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/byteType.h" +#include "checker/types/ets/charType.h" +#include "checker/types/ets/doubleType.h" +#include "checker/types/ets/floatType.h" +#include "checker/types/ets/intType.h" +#include "checker/types/ets/longType.h" +#include "checker/types/ets/shortType.h" +#include "checker/types/ets/etsStringType.h" #include "checker/types/ets/etsAsyncFuncReturnType.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" diff --git a/ets2panda/compiler/lowering/ets/relaxedAnyLowering.cpp b/ets2panda/compiler/lowering/ets/relaxedAnyLowering.cpp index 78d661f391..9d4286f905 100644 --- a/ets2panda/compiler/lowering/ets/relaxedAnyLowering.cpp +++ b/ets2panda/compiler/lowering/ets/relaxedAnyLowering.cpp @@ -15,6 +15,7 @@ #include "relaxedAnyLowering.h" #include "ir/expressions/memberExpression.h" +#include "checker/types/ets/etsUnionType.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/compiler/lowering/ets/spreadLowering.cpp b/ets2panda/compiler/lowering/ets/spreadLowering.cpp index fe71baaaf6..0533107dab 100644 --- a/ets2panda/compiler/lowering/ets/spreadLowering.cpp +++ b/ets2panda/compiler/lowering/ets/spreadLowering.cpp @@ -16,6 +16,8 @@ #include "spreadLowering.h" #include "checker/ETSchecker.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsResizableArrayType.h" #include "compiler/lowering/util.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/compiler/lowering/ets/stringComparison.cpp b/ets2panda/compiler/lowering/ets/stringComparison.cpp index 68d18c745e..4274be1e29 100644 --- a/ets2panda/compiler/lowering/ets/stringComparison.cpp +++ b/ets2panda/compiler/lowering/ets/stringComparison.cpp @@ -16,6 +16,7 @@ #include "varbinder/ETSBinder.h" #include "stringComparison.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" #include "parser/parserImpl.h" #include "utils/arena_containers.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" diff --git a/ets2panda/compiler/lowering/ets/typeFromLowering.cpp b/ets2panda/compiler/lowering/ets/typeFromLowering.cpp index 31f98cba35..ca1492ac57 100644 --- a/ets2panda/compiler/lowering/ets/typeFromLowering.cpp +++ b/ets2panda/compiler/lowering/ets/typeFromLowering.cpp @@ -16,6 +16,7 @@ #include "typeFromLowering.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsObjectType.h" #include "checker/types/ets/etsTupleType.h" #include "compiler/lowering/util.h" #include "compiler/lowering/scopesInit/scopesInitPhase.h" diff --git a/ets2panda/compiler/lowering/ets/unboxLowering.cpp b/ets2panda/compiler/lowering/ets/unboxLowering.cpp index 6cbc281cf1..7174e77a1f 100644 --- a/ets2panda/compiler/lowering/ets/unboxLowering.cpp +++ b/ets2panda/compiler/lowering/ets/unboxLowering.cpp @@ -19,7 +19,12 @@ #include "generated/tokenType.h" #include "ir/visitor/IterateAstVisitor.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsResizableArrayType.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsTypeParameter.h" +#include "checker/types/ets/etsUnionType.h" #include "checker/types/typeFlag.h" #include "checker/types/globalTypesHolder.h" #include "compiler/lowering/util.h" diff --git a/ets2panda/compiler/lowering/ets/unionLowering.cpp b/ets2panda/compiler/lowering/ets/unionLowering.cpp index 2b2bc2713f..805b3b32d4 100644 --- a/ets2panda/compiler/lowering/ets/unionLowering.cpp +++ b/ets2panda/compiler/lowering/ets/unionLowering.cpp @@ -19,6 +19,8 @@ #include "compiler/lowering/util.h" #include "varbinder/ETSBinder.h" #include "checker/ETSchecker.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsFunctionType.h" #include "util/nameMangler.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/compiler/lowering/phase.cpp b/ets2panda/compiler/lowering/phase.cpp index 1fd456e784..0efc4e14ae 100644 --- a/ets2panda/compiler/lowering/phase.cpp +++ b/ets2panda/compiler/lowering/phase.cpp @@ -79,7 +79,6 @@ #include "compiler/lowering/scopesInit/scopesInitPhase.h" #include "generated/diagnostic.h" #include "lexer/token/sourceLocation.h" -#include "public/es2panda_lib.h" #include "util/options.h" namespace ark::es2panda::compiler { diff --git a/ets2panda/declgen_ets2ts/declgenEts2Ts.cpp b/ets2panda/declgen_ets2ts/declgenEts2Ts.cpp index 5864e03905..7d6bc16fc5 100644 --- a/ets2panda/declgen_ets2ts/declgenEts2Ts.cpp +++ b/ets2panda/declgen_ets2ts/declgenEts2Ts.cpp @@ -16,7 +16,10 @@ #include "declgenEts2Ts.h" #include "isolatedDeclgenChecker.h" +#include "checker/types/ets/etsFunctionType.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsObjectType.h" #include "compiler/lowering/phase.h" #include "generated/diagnostic.h" #include "ir/base/classProperty.h" diff --git a/ets2panda/driver/dependency_analyzer/dep_analyzer.h b/ets2panda/driver/dependency_analyzer/dep_analyzer.h index 6bc77bbe94..08857dfe1f 100644 --- a/ets2panda/driver/dependency_analyzer/dep_analyzer.h +++ b/ets2panda/driver/dependency_analyzer/dep_analyzer.h @@ -16,8 +16,6 @@ #ifndef ES2PANDA_DEPENDENCY_ANALYZER_H #define ES2PANDA_DEPENDENCY_ANALYZER_H -#include "public/es2panda_lib.h" -#include "public/public.h" #include "parser/parserImpl.h" #include "util/options.h" #include diff --git a/ets2panda/gerpr b/ets2panda/gerpr new file mode 100644 index 0000000000..c06b8a3e56 --- /dev/null +++ b/ets2panda/gerpr @@ -0,0 +1,790 @@ +checker::Type *PrefixAssertionExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *NamedType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSIntrinsicNode::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return nullptr; +} + +checker::Type *ETSFunctionType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSUnionType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return nullptr; +} + +checker::Type *ETSPackageDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSNewClassInstanceExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSClassLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSStructDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSNeverType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSUndefinedType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSNullType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSTypeReferencePart::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSPrimitiveType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSTypeReference::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSNewMultiDimArrayInstanceExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSWildcardType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSNonNullishTypeNode::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSStringLiteralType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *ETSNewArrayInstanceExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ETSKeyofType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return nullptr; +} + +checker::Type *TSUndefinedKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSBooleanKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSConditionalType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSExternalModuleReference::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSMappedType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypePredicate::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeAssertion::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSParenthesizedType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeParameter::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSEnumMember::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeParameterDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSStringKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeAliasDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSNonNullExpression::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSInterfaceBody::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSThisType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSConstructorType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSIndexedAccessType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSEnumDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeOperator::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSParameterProperty::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSQualifiedName::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSInterfaceDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSInferType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeReference::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSAnyKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSBigintKeyword::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSModuleBlock::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSNullKeyword::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeParameterInstantiation::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTupleType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSVoidKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSLiteralType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSNamedTupleMember::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSAsExpression::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSNeverKeyword::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSObjectKeyword::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSImportEqualsDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSInterfaceHeritage::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSTypeQuery::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSFunctionType::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSIntersectionType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSNumberKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSModuleDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSClassImplements::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSUnionType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSUnknownKeyword::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSArrayType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSImportType::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ImportDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ExportSpecifier::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ImportDefaultSpecifier::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ExportAllDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ExportDefaultDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ExportNamedDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ImportSpecifier::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ImportNamespaceSpecifier::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BrokenTypeNode::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ThisExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *AssignmentExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ObjectExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *FunctionExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BlockExpression::Check([[maybe_unused]] checker::TSChecker *checker) +{ + ES2PANDA_UNREACHABLE(); +} + +checker::Type *OmittedExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ChainExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ArrayExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *MemberExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *UpdateExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *DirectEvalExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *DummyNode::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *YieldExpression::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ClassExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TemplateLiteral::Check([[maybe_unused]] checker::TSChecker *checker) +{ + // NOTE: aszilagyi. + return checker->GlobalAnyType(); +} + +checker::Type *AwaitExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BinaryExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *SuperExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ImportExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TaggedTemplateExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *UnaryExpression::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *Identifier::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *SequenceExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BooleanLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *UndefinedLiteral::Check(checker::TSChecker *checker) +{ + return checker->GlobalUndefinedType(); +} + +checker::Type *NumberLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *StringLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BigIntLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *CharLiteral::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *NullLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *RegExpLiteral::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TypeofExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *NewExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *CallExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ArrowFunctionExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ConditionalExpression::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *CatchClause::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ClassDefinition::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSSignatureDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSMethodSignature::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *SpreadElement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *Decorator::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *MetaProperty::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ClassStaticBlock::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *OverloadDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return nullptr; +} + +checker::Type *ClassProperty::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *Property::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSPropertySignature::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TSIndexSignature::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TemplateElement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *MethodDefinition::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ScriptFunction::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ReturnStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *FunctionDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *VariableDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *SwitchStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *AssertStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *TryStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *AnnotationUsage::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *AnnotationDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ForUpdateStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *LabelledStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ExpressionStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *WhileStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BlockStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ThrowStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *EmptyStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *DebuggerStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *IfStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ForOfStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ForInStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ContinueStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *SwitchCaseStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *VariableDeclarator::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *DoWhileStatement::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *ClassDeclaration::Check(checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *BreakStatement::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} + +checker::Type *OpaqueTypeNode::Check([[maybe_unused]] checker::TSChecker *checker) +{ + return checker->GetAnalyzer()->Check(this); +} diff --git a/ets2panda/ir/as/namedType.cpp b/ets2panda/ir/as/namedType.cpp index 71eac941cf..f4fe6c9bf2 100644 --- a/ets2panda/ir/as/namedType.cpp +++ b/ets2panda/ir/as/namedType.cpp @@ -15,9 +15,6 @@ #include "namedType.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/expressions/identifier.h" #include "ir/ts/tsTypeParameterInstantiation.h" #include "ir/astDump.h" @@ -79,23 +76,4 @@ void NamedType::Dump(SrcDumper *dumper) const dumper->Add("NamedType"); } -void NamedType::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void NamedType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *NamedType::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType NamedType::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/as/prefixAssertionExpression.cpp b/ets2panda/ir/as/prefixAssertionExpression.cpp index 544713d799..5240063322 100644 --- a/ets2panda/ir/as/prefixAssertionExpression.cpp +++ b/ets2panda/ir/as/prefixAssertionExpression.cpp @@ -15,9 +15,6 @@ #include "prefixAssertionExpression.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/typeNode.h" @@ -52,23 +49,4 @@ void PrefixAssertionExpression::Dump(SrcDumper *dumper) const dumper->Add("PrefixAssertionExpression"); } -void PrefixAssertionExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void PrefixAssertionExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *PrefixAssertionExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType PrefixAssertionExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/astDump.cpp b/ets2panda/ir/astDump.cpp index 4706797833..7d916e9c70 100644 --- a/ets2panda/ir/astDump.cpp +++ b/ets2panda/ir/astDump.cpp @@ -23,6 +23,7 @@ #include namespace ark::es2panda::ir { + AstDumper::AstDumper(const ir::AstNode *node, util::StringView sourceCode) : index_(sourceCode) { isSrcEmpty_ = sourceCode.Empty(); diff --git a/ets2panda/ir/astDump.h b/ets2panda/ir/astDump.h index febaf98270..25a9258c0e 100644 --- a/ets2panda/ir/astDump.h +++ b/ets2panda/ir/astDump.h @@ -16,7 +16,6 @@ #ifndef ES2PANDA_IR_AST_DUMP_H #define ES2PANDA_IR_AST_DUMP_H -#include "ir/astNode.h" #include "lexer/token/sourceLocation.h" #include "generated/tokenType.h" #include "lexer/token/number.h" @@ -26,6 +25,11 @@ #include namespace ark::es2panda::ir { + +enum class ModifierFlags : uint32_t; +enum class TSOperatorType; + +class AstNode; class AstDumper { public: class Nullish { diff --git a/ets2panda/ir/astNode.h b/ets2panda/ir/astNode.h index f6bbfea987..ba0143562f 100644 --- a/ets2panda/ir/astNode.h +++ b/ets2panda/ir/astNode.h @@ -21,6 +21,8 @@ #include "astNodeMapping.h" #include "compiler/lowering/phase_id.h" #include "ir/visitor/AstVisitor.h" +#include "ir/srcDump.h" +#include "ir/astDump.h" #include "lexer/token/sourceLocation.h" #include "util/es2pandaMacros.h" @@ -114,7 +116,6 @@ inline std::string_view ToString(AstNodeType nodeType) class AstNodeHistory; class AstDumper; class Expression; -class SrcDumper; class Statement; class ClassElement; template diff --git a/ets2panda/ir/base/catchClause.cpp b/ets2panda/ir/base/catchClause.cpp index c11433d958..877338620c 100644 --- a/ets2panda/ir/base/catchClause.cpp +++ b/ets2panda/ir/base/catchClause.cpp @@ -15,10 +15,9 @@ #include "catchClause.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" - +#include "ir/statements/blockStatement.h" +#include "ir/expressions/identifier.h" +#include "ir/typeNode.h" namespace ark::es2panda::ir { void CatchClause::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -74,26 +73,6 @@ bool CatchClause::IsDefaultCatchClause() const return param_ != nullptr && param_->AsIdentifier()->TypeAnnotation() == nullptr; } -void CatchClause::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void CatchClause::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *CatchClause::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType CatchClause::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - CatchClause::CatchClause(CatchClause const &other, ArenaAllocator *allocator) : TypedStatement(other) { param_ = nullptr; diff --git a/ets2panda/ir/base/classDefinition.cpp b/ets2panda/ir/base/classDefinition.cpp index 002ef7a4f9..26fc2e9839 100644 --- a/ets2panda/ir/base/classDefinition.cpp +++ b/ets2panda/ir/base/classDefinition.cpp @@ -15,17 +15,19 @@ #include "classDefinition.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/base/classStaticBlock.h" #include "ir/base/methodDefinition.h" #include "ir/base/scriptFunction.h" +#include "ir/expressions/functionExpression.h" +#include "ir/expressions/assignmentExpression.h" #include "ir/expressions/identifier.h" +#include "ir/statements/blockStatement.h" +#include "ir/statements/expressionStatement.h" #include "ir/ts/tsClassImplements.h" +#include "ir/ts/tsTypeParameterDeclaration.h" +#include "ir/ts/tsTypeParameterInstantiation.h" namespace ark::es2panda::ir { @@ -467,26 +469,6 @@ void ClassDefinition::Dump(ir::SrcDumper *dumper) const dumper->Endl(); } -void ClassDefinition::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ClassDefinition::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ClassDefinition::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ClassDefinition::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ClassDefinition *ClassDefinition::Construct(ArenaAllocator *allocator) { ArenaVector body {allocator->Adapter()}; diff --git a/ets2panda/ir/base/classProperty.cpp b/ets2panda/ir/base/classProperty.cpp index 29c4a1f6c9..d5a7aff83e 100644 --- a/ets2panda/ir/base/classProperty.cpp +++ b/ets2panda/ir/base/classProperty.cpp @@ -14,11 +14,8 @@ */ #include "classProperty.h" +#include "ir/typeNode.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "compiler/lowering/util.h" namespace ark::es2panda::ir { @@ -248,26 +245,6 @@ void ClassProperty::Dump(ir::SrcDumper *dumper) const dumper->Endl(); } -void ClassProperty::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ClassProperty::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ClassProperty::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ClassProperty::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ClassProperty *ClassProperty::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const key = Key()->Clone(allocator, nullptr)->AsExpression(); diff --git a/ets2panda/ir/base/classStaticBlock.cpp b/ets2panda/ir/base/classStaticBlock.cpp index f8b01d54a7..f5a15b9705 100644 --- a/ets2panda/ir/base/classStaticBlock.cpp +++ b/ets2panda/ir/base/classStaticBlock.cpp @@ -15,10 +15,6 @@ #include "classStaticBlock.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/base/decorator.h" @@ -64,26 +60,6 @@ void ClassStaticBlock::Dump([[maybe_unused]] ir::SrcDumper *dumper) const dumper->Add("}"); } -void ClassStaticBlock::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ClassStaticBlock::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ClassStaticBlock::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ClassStaticBlock::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ir::ScriptFunction *ClassStaticBlock::Function() { return Value()->AsFunctionExpression()->Function(); diff --git a/ets2panda/ir/base/decorator.cpp b/ets2panda/ir/base/decorator.cpp index 573093d668..8693fcef99 100644 --- a/ets2panda/ir/base/decorator.cpp +++ b/ets2panda/ir/base/decorator.cpp @@ -15,10 +15,7 @@ #include "decorator.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expression.h" namespace ark::es2panda::ir { void Decorator::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) @@ -44,26 +41,6 @@ void Decorator::Dump(ir::SrcDumper *dumper) const dumper->Add("Decorator"); } -void Decorator::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void Decorator::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *Decorator::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType Decorator::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - Decorator *Decorator::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const expr = expr_ != nullptr ? expr_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/base/metaProperty.cpp b/ets2panda/ir/base/metaProperty.cpp index 38bed829d8..05a215be6a 100644 --- a/ets2panda/ir/base/metaProperty.cpp +++ b/ets2panda/ir/base/metaProperty.cpp @@ -15,10 +15,6 @@ #include "metaProperty.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { void MetaProperty::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -48,31 +44,11 @@ void MetaProperty::Dump(ir::AstDumper *dumper) const dumper->Add({{"type", "MetaProperty"}, {"kind", kind}}); } -void MetaProperty::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - void MetaProperty::Dump(ir::SrcDumper *dumper) const { dumper->Add("MetaProperty"); } -void MetaProperty::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *MetaProperty::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType MetaProperty::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - MetaProperty *MetaProperty::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(kind_); diff --git a/ets2panda/ir/base/methodDefinition.cpp b/ets2panda/ir/base/methodDefinition.cpp index 28bf80c48b..a17fe7866f 100644 --- a/ets2panda/ir/base/methodDefinition.cpp +++ b/ets2panda/ir/base/methodDefinition.cpp @@ -15,11 +15,9 @@ #include "methodDefinition.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "classDefinition.h" #include "ir/ts/tsInterfaceBody.h" +#include "ir/expressions/functionExpression.h" #include "compiler/lowering/util.h" namespace ark::es2panda::ir { @@ -351,26 +349,6 @@ void MethodDefinition::Dump(ir::SrcDumper *dumper) const } } -void MethodDefinition::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void MethodDefinition::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *MethodDefinition::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType MethodDefinition::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - MethodDefinition *MethodDefinition::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const key = Key()->Clone(allocator, nullptr)->AsExpression(); diff --git a/ets2panda/ir/base/overloadDeclaration.cpp b/ets2panda/ir/base/overloadDeclaration.cpp index 7af8f592ff..cd6227755e 100644 --- a/ets2panda/ir/base/overloadDeclaration.cpp +++ b/ets2panda/ir/base/overloadDeclaration.cpp @@ -14,7 +14,7 @@ */ #include "overloadDeclaration.h" -#include "checker/ETSchecker.h" + #include "compiler/lowering/util.h" namespace ark::es2panda::ir { @@ -105,18 +105,6 @@ void OverloadDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Add("};"); } -void OverloadDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const {} - -checker::Type *OverloadDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType OverloadDeclaration::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - OverloadDeclaration *OverloadDeclaration::Construct(ArenaAllocator *allocator) { return allocator->New(nullptr, ModifierFlags::NONE, allocator); diff --git a/ets2panda/ir/base/property.cpp b/ets2panda/ir/base/property.cpp index 531954ca21..26b87de555 100644 --- a/ets2panda/ir/base/property.cpp +++ b/ets2panda/ir/base/property.cpp @@ -15,9 +15,11 @@ #include "property.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/objectExpression.h" +#include "ir/expressions/arrayExpression.h" +#include "ir/expressions/assignmentExpression.h" +#include "ir/expressions/identifier.h" +#include "ir/expressions/literals/stringLiteral.h" namespace ark::es2panda::ir { Property::Property([[maybe_unused]] Tag const tag, Property const &other, Expression *const key, @@ -170,16 +172,6 @@ void Property::Dump(ir::AstDumper *dumper) const {"kind", kind}}); } -void Property::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void Property::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - void Property::Dump(ir::SrcDumper *dumper) const { if (kind_ == PropertyKind::INIT) { @@ -189,13 +181,4 @@ void Property::Dump(ir::SrcDumper *dumper) const } } -checker::Type *Property::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType Property::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/base/scriptFunction.cpp b/ets2panda/ir/base/scriptFunction.cpp index 0cd1d4a6cf..14c80ee1b5 100644 --- a/ets2panda/ir/base/scriptFunction.cpp +++ b/ets2panda/ir/base/scriptFunction.cpp @@ -15,14 +15,15 @@ #include "scriptFunction.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/typeNode.h" +#include "ir/expressions/identifier.h" +#include "ir/statements/blockStatement.h" +#include "ir/ts/tsTypeParameterDeclaration.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "mem/arena_allocator.h" #include "utils/arena_containers.h" - +#include "util/helpers.h" namespace ark::es2panda::ir { void ScriptFunction::SetBody(AstNode *body) @@ -375,25 +376,6 @@ void ScriptFunction::DumpBody(ir::SrcDumper *dumper) const } } -void ScriptFunction::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void ScriptFunction::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ScriptFunction::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ScriptFunction::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ScriptFunction *ScriptFunction::Construct(ArenaAllocator *allocator) { auto adapter = allocator->Adapter(); diff --git a/ets2panda/ir/base/spreadElement.cpp b/ets2panda/ir/base/spreadElement.cpp index 9b50431515..7e7f79f0f1 100644 --- a/ets2panda/ir/base/spreadElement.cpp +++ b/ets2panda/ir/base/spreadElement.cpp @@ -15,9 +15,9 @@ #include "spreadElement.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" +#include "ir/expressions/objectExpression.h" +#include "ir/expressions/arrayExpression.h" +#include "ir/typeNode.h" namespace ark::es2panda::ir { SpreadElement::SpreadElement([[maybe_unused]] Tag const tag, SpreadElement const &other, @@ -134,25 +134,6 @@ void SpreadElement::Dump(ir::SrcDumper *dumper) const } } -void SpreadElement::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void SpreadElement::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *SpreadElement::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType SpreadElement::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - std::string SpreadElement::ToString() const { auto str = Argument()->ToString(); diff --git a/ets2panda/ir/base/templateElement.cpp b/ets2panda/ir/base/templateElement.cpp index 4ba3be396a..abf458a695 100644 --- a/ets2panda/ir/base/templateElement.cpp +++ b/ets2panda/ir/base/templateElement.cpp @@ -15,10 +15,6 @@ #include "templateElement.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { void TemplateElement::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -40,26 +36,6 @@ void TemplateElement::Dump(ir::SrcDumper *dumper) const dumper->Add(std::string(raw_)); } -void TemplateElement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TemplateElement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TemplateElement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TemplateElement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TemplateElement *TemplateElement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(raw_, cooked_); diff --git a/ets2panda/ir/base/tsIndexSignature.cpp b/ets2panda/ir/base/tsIndexSignature.cpp index 22d8a78b56..1cb5531b09 100644 --- a/ets2panda/ir/base/tsIndexSignature.cpp +++ b/ets2panda/ir/base/tsIndexSignature.cpp @@ -15,9 +15,7 @@ #include "tsIndexSignature.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/identifier.h" namespace ark::es2panda::ir { TSIndexSignature::TSIndexSignatureKind TSIndexSignature::Kind() const noexcept @@ -58,26 +56,6 @@ void TSIndexSignature::Dump(ir::SrcDumper *dumper) const dumper->Add("TSIndexSignature"); } -void TSIndexSignature::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSIndexSignature::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSIndexSignature::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSIndexSignature::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSIndexSignature *TSIndexSignature::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const param = param_ != nullptr ? param_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/base/tsMethodSignature.cpp b/ets2panda/ir/base/tsMethodSignature.cpp index de2b99a6a1..884a14e979 100644 --- a/ets2panda/ir/base/tsMethodSignature.cpp +++ b/ets2panda/ir/base/tsMethodSignature.cpp @@ -16,9 +16,6 @@ #include "tsMethodSignature.h" #include "ir/astDump.h" #include "ir/srcDump.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" namespace ark::es2panda::ir { void TSMethodSignature::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -53,23 +50,4 @@ void TSMethodSignature::Dump(ir::SrcDumper *dumper) const dumper->Add("TSMethodSignature"); } -void TSMethodSignature::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSMethodSignature::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSMethodSignature::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSMethodSignature::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/base/tsPropertySignature.cpp b/ets2panda/ir/base/tsPropertySignature.cpp index d1a2bb2ee1..90e63fed2e 100644 --- a/ets2panda/ir/base/tsPropertySignature.cpp +++ b/ets2panda/ir/base/tsPropertySignature.cpp @@ -15,9 +15,7 @@ #include "tsPropertySignature.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/typeNode.h" namespace ark::es2panda::ir { void TSPropertySignature::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -59,26 +57,6 @@ void TSPropertySignature::Dump(ir::SrcDumper *dumper) const dumper->Add("TSPropertySignature"); } -void TSPropertySignature::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSPropertySignature::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSPropertySignature::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSPropertySignature::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSPropertySignature *TSPropertySignature::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const key = key_ != nullptr ? key_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/base/tsSignatureDeclaration.cpp b/ets2panda/ir/base/tsSignatureDeclaration.cpp index 141398e53a..e9d227195a 100644 --- a/ets2panda/ir/base/tsSignatureDeclaration.cpp +++ b/ets2panda/ir/base/tsSignatureDeclaration.cpp @@ -15,10 +15,6 @@ #include "tsSignatureDeclaration.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -48,23 +44,4 @@ void TSSignatureDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Add("TSSignatureDeclaration"); } -void TSSignatureDeclaration::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSSignatureDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSSignatureDeclaration::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSSignatureDeclaration::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/brokenTypeNode.cpp b/ets2panda/ir/brokenTypeNode.cpp index 05ef63679f..5e377265aa 100644 --- a/ets2panda/ir/brokenTypeNode.cpp +++ b/ets2panda/ir/brokenTypeNode.cpp @@ -14,9 +14,9 @@ */ #include "brokenTypeNode.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" + +#include "checker/ETSchecker.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -39,36 +39,6 @@ void BrokenTypeNode::Dump(ir::SrcDumper *dumper) const dumper->Add(ERROR_TYPE); } -void BrokenTypeNode::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void BrokenTypeNode::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *BrokenTypeNode::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *BrokenTypeNode::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::Type *BrokenTypeNode::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - return checker->GlobalTypeError(); -} - -checker::VerifiedType BrokenTypeNode::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - BrokenTypeNode *BrokenTypeNode::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(allocator); diff --git a/ets2panda/ir/brokenTypeNode.h b/ets2panda/ir/brokenTypeNode.h index f4143f6adf..f38e591289 100644 --- a/ets2panda/ir/brokenTypeNode.h +++ b/ets2panda/ir/brokenTypeNode.h @@ -39,7 +39,6 @@ public: void Compile([[maybe_unused]] compiler::PandaGen *pg) const override; void Compile([[maybe_unused]] compiler::ETSGen *etsg) const override; checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; checker::Type *GetType([[maybe_unused]] checker::ETSChecker *checker) override; diff --git a/ets2panda/ir/ets/etsClassLiteral.cpp b/ets2panda/ir/ets/etsClassLiteral.cpp index ba0830fb30..da8c88a822 100644 --- a/ets2panda/ir/ets/etsClassLiteral.cpp +++ b/ets2panda/ir/ets/etsClassLiteral.cpp @@ -15,9 +15,7 @@ #include "etsClassLiteral.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/typeNode.h" namespace ark::es2panda::ir { void ETSClassLiteral::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) @@ -43,26 +41,6 @@ void ETSClassLiteral::Dump(ir::SrcDumper *dumper) const dumper->Add("ETSClassLiteral"); } -void ETSClassLiteral::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ETSClassLiteral::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ETSClassLiteral::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ETSClassLiteral::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ETSClassLiteral *ETSClassLiteral::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const expr = expr_ != nullptr ? expr_->Clone(allocator, nullptr) : nullptr; diff --git a/ets2panda/ir/ets/etsFunctionType.cpp b/ets2panda/ir/ets/etsFunctionType.cpp index 73b0c3bc03..2253cc30e7 100644 --- a/ets2panda/ir/ets/etsFunctionType.cpp +++ b/ets2panda/ir/ets/etsFunctionType.cpp @@ -15,10 +15,7 @@ #include "etsFunctionType.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/ts/tsTypeParameterDeclaration.h" namespace ark::es2panda::ir { void ETSFunctionType::SetParams(ArenaVector &¶msList) @@ -76,36 +73,6 @@ void ETSFunctionType::Dump(ir::SrcDumper *dumper) const dumper->Add(")"); } -void ETSFunctionType::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ETSFunctionType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ETSFunctionType::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *ETSFunctionType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType ETSFunctionType::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *ETSFunctionType::GetType(checker::ETSChecker *checker) -{ - return Check(checker); -} - ETSFunctionType *ETSFunctionType::Clone(ArenaAllocator *const allocator, AstNode *const parent) { ArenaVector paramsClone(allocator->Adapter()); diff --git a/ets2panda/ir/ets/etsFunctionType.h b/ets2panda/ir/ets/etsFunctionType.h index 3a15549835..cd439123fa 100644 --- a/ets2panda/ir/ets/etsFunctionType.h +++ b/ets2panda/ir/ets/etsFunctionType.h @@ -124,7 +124,6 @@ public: void Compile(compiler::PandaGen *pg) const override; void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check(checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check(checker::ETSChecker *checker) override; checker::Type *GetType([[maybe_unused]] checker::ETSChecker *checker) override; diff --git a/ets2panda/ir/ets/etsIntrinsicNode.cpp b/ets2panda/ir/ets/etsIntrinsicNode.cpp index 9024106ab3..7e973c4e5c 100644 --- a/ets2panda/ir/ets/etsIntrinsicNode.cpp +++ b/ets2panda/ir/ets/etsIntrinsicNode.cpp @@ -14,8 +14,7 @@ */ #include "etsIntrinsicNode.h" - -#include "checker/ETSchecker.h" +#include "ir/typeNode.h" #include "compiler/core/ETSGen.h" namespace ark::es2panda::ir { @@ -119,8 +118,6 @@ private: static const InfosMap infos_; }; -void ETSIntrinsicNode::Compile([[maybe_unused]] compiler::PandaGen *pg) const {} - void ETSIntrinsicNode::Compile(compiler::ETSGen *etsg) const { if (auto info = GetIntrinsicInfoFor(this); LIKELY(info != nullptr)) { @@ -167,11 +164,6 @@ checker::Type *ETSIntrinsicNode::ExpectedTypeAt(checker::ETSChecker *checker, si return nullptr; } -checker::Type *ETSIntrinsicNode::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - checker::VerifiedType ETSIntrinsicNode::Check([[maybe_unused]] checker::ETSChecker *checker) { if (auto info = GetIntrinsicInfoFor(this); LIKELY(info != nullptr)) { diff --git a/ets2panda/ir/ets/etsKeyofType.cpp b/ets2panda/ir/ets/etsKeyofType.cpp index 6a319bcadc..337eb096f0 100644 --- a/ets2panda/ir/ets/etsKeyofType.cpp +++ b/ets2panda/ir/ets/etsKeyofType.cpp @@ -15,8 +15,6 @@ #include "etsKeyofType.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { void ETSKeyofType::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) { @@ -43,46 +41,6 @@ void ETSKeyofType::Dump(ir::SrcDumper *dumper) const type_->Dump(dumper); } -void ETSKeyofType::Compile([[maybe_unused]] compiler::PandaGen *pg) const {} - -checker::Type *ETSKeyofType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType ETSKeyofType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *ETSKeyofType::GetType(checker::ETSChecker *checker) -{ - if (TsType() != nullptr) { - return TsType(); - } - - auto *typeReference = type_->GetType(checker); - ES2PANDA_ASSERT(typeReference); - - if (typeReference->IsETSPrimitiveType()) { - typeReference = checker->MaybeBoxType(typeReference); - } - - if (!typeReference->IsETSObjectType()) { - checker->LogError(diagnostic::KEYOF_REFERENCE_TYPE, {}, Start()); - SetTsType(checker->GlobalTypeError()); - return checker->GlobalTypeError(); - } - - checker::TypeStackElement tse(checker, GetHistoryNode(), {{diagnostic::CYCLIC_TYPE_OF, {}}}, Start()); - if (tse.HasTypeError()) { - return checker->GlobalTypeError(); - } - - SetTsType(checker->CreateUnionFromKeyofType(typeReference->AsETSObjectType())); - return TsType(); -} - ETSKeyofType *ETSKeyofType::Clone(ArenaAllocator *const allocator, AstNode *const parent) { TypeNode *type = type_->Clone(allocator, nullptr); diff --git a/ets2panda/ir/ets/etsNeverType.cpp b/ets2panda/ir/ets/etsNeverType.cpp index 527b3d7b35..6d5a8f118b 100644 --- a/ets2panda/ir/ets/etsNeverType.cpp +++ b/ets2panda/ir/ets/etsNeverType.cpp @@ -15,8 +15,6 @@ #include "etsNeverType.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { void ETSNeverType::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -40,27 +38,6 @@ void ETSNeverType::Dump(ir::SrcDumper *dumper) const dumper->Add("never"); } -void ETSNeverType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - ES2PANDA_UNREACHABLE(); -} - -checker::Type *ETSNeverType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - ES2PANDA_UNREACHABLE(); -} - -checker::VerifiedType ETSNeverType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *ETSNeverType::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - SetTsType(checker->GlobalETSNeverType()); - return TsType(); -} - ETSNeverType *ETSNeverType::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *const clone = allocator->New(allocator); diff --git a/ets2panda/ir/ets/etsNewArrayInstanceExpression.cpp b/ets2panda/ir/ets/etsNewArrayInstanceExpression.cpp index 6031857627..b4b36fb2e3 100644 --- a/ets2panda/ir/ets/etsNewArrayInstanceExpression.cpp +++ b/ets2panda/ir/ets/etsNewArrayInstanceExpression.cpp @@ -15,11 +15,7 @@ #include "etsNewArrayInstanceExpression.h" -#include "checker/ETSchecker.h" #include "checker/ets/typeRelationContext.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" namespace ark::es2panda::ir { void ETSNewArrayInstanceExpression::TransformChildren(const NodeTransformer &cb, @@ -59,25 +55,6 @@ void ETSNewArrayInstanceExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("]"); } -void ETSNewArrayInstanceExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void ETSNewArrayInstanceExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ETSNewArrayInstanceExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ETSNewArrayInstanceExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ETSNewArrayInstanceExpression *ETSNewArrayInstanceExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { diff --git a/ets2panda/ir/ets/etsNewClassInstanceExpression.cpp b/ets2panda/ir/ets/etsNewClassInstanceExpression.cpp index 7c0b525c0e..3ad69e6150 100644 --- a/ets2panda/ir/ets/etsNewClassInstanceExpression.cpp +++ b/ets2panda/ir/ets/etsNewClassInstanceExpression.cpp @@ -15,10 +15,6 @@ #include "etsNewClassInstanceExpression.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" -#include "checker/TSchecker.h" - namespace ark::es2panda::ir { void ETSNewClassInstanceExpression::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -73,26 +69,6 @@ void ETSNewClassInstanceExpression::Dump(ir::SrcDumper *dumper) const dumper->Add(")"); } -void ETSNewClassInstanceExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ETSNewClassInstanceExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ETSNewClassInstanceExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ETSNewClassInstanceExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ETSNewClassInstanceExpression::ETSNewClassInstanceExpression(ETSNewClassInstanceExpression const &other, ArenaAllocator *const allocator) : Expression(static_cast(other)), arguments_(allocator->Adapter()), signature_(other.signature_) @@ -116,9 +92,4 @@ ETSNewClassInstanceExpression *ETSNewClassInstanceExpression::Clone(ArenaAllocat return clone; } -bool ETSNewClassInstanceExpression::TypeIsAllowedForInstantiation(checker::Type *type) -{ - return !(type->IsETSNullType() || type->IsETSUndefinedType() || type->IsETSNeverType() || type->IsETSVoidType()); -} - } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ets/etsNewClassInstanceExpression.h b/ets2panda/ir/ets/etsNewClassInstanceExpression.h index c8c614ddc8..66ddf250c1 100644 --- a/ets2panda/ir/ets/etsNewClassInstanceExpression.h +++ b/ets2panda/ir/ets/etsNewClassInstanceExpression.h @@ -99,7 +99,6 @@ public: void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check(checker::TSChecker *checker) override; checker::VerifiedType Check(checker::ETSChecker *checker) override; - static bool TypeIsAllowedForInstantiation(checker::Type *type); void Accept(ASTVisitorT *v) override { diff --git a/ets2panda/ir/ets/etsNewMultiDimArrayInstanceExpression.cpp b/ets2panda/ir/ets/etsNewMultiDimArrayInstanceExpression.cpp index 08ff84bcf4..d9dcb7ca9d 100644 --- a/ets2panda/ir/ets/etsNewMultiDimArrayInstanceExpression.cpp +++ b/ets2panda/ir/ets/etsNewMultiDimArrayInstanceExpression.cpp @@ -16,9 +16,6 @@ #include "etsNewMultiDimArrayInstanceExpression.h" #include "checker/ets/typeRelationContext.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" namespace ark::es2panda::ir { void ETSNewMultiDimArrayInstanceExpression::TransformChildren(const NodeTransformer &cb, @@ -64,25 +61,6 @@ void ETSNewMultiDimArrayInstanceExpression::Dump(ir::SrcDumper *dumper) const } } -void ETSNewMultiDimArrayInstanceExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void ETSNewMultiDimArrayInstanceExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ETSNewMultiDimArrayInstanceExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ETSNewMultiDimArrayInstanceExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - void ETSNewMultiDimArrayInstanceExpression::ClearPreferredType() { SetPreferredType(nullptr); diff --git a/ets2panda/ir/ets/etsNonNullishTypeNode.cpp b/ets2panda/ir/ets/etsNonNullishTypeNode.cpp index ba8b615177..fd879b0c45 100644 --- a/ets2panda/ir/ets/etsNonNullishTypeNode.cpp +++ b/ets2panda/ir/ets/etsNonNullishTypeNode.cpp @@ -14,7 +14,6 @@ */ #include "etsNonNullishTypeNode.h" -#include "checker/ETSchecker.h" namespace ark::es2panda::ir { void ETSNonNullishTypeNode::TransformChildren([[maybe_unused]] const NodeTransformer &cb, @@ -44,26 +43,6 @@ void ETSNonNullishTypeNode::Dump(ir::SrcDumper *dumper) const dumper->Add(">"); } -void ETSNonNullishTypeNode::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - ES2PANDA_UNREACHABLE(); -} - -checker::Type *ETSNonNullishTypeNode::Check([[maybe_unused]] checker::TSChecker *checker) -{ - ES2PANDA_UNREACHABLE(); -} - -checker::VerifiedType ETSNonNullishTypeNode::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *ETSNonNullishTypeNode::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - return TsType() != nullptr ? TsType() : Check(checker); -} - ETSNonNullishTypeNode *ETSNonNullishTypeNode::Clone(ArenaAllocator *allocator, AstNode *parent) { TypeNode *typeNode = typeNode_->Clone(allocator, nullptr); diff --git a/ets2panda/ir/ets/etsNullishTypes.cpp b/ets2panda/ir/ets/etsNullishTypes.cpp index a0ebf975b7..1ddc1ba82e 100644 --- a/ets2panda/ir/ets/etsNullishTypes.cpp +++ b/ets2panda/ir/ets/etsNullishTypes.cpp @@ -15,8 +15,6 @@ #include "etsNullishTypes.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { void ETSUndefinedType::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -40,27 +38,6 @@ void ETSUndefinedType::Dump(ir::SrcDumper *dumper) const dumper->Add("undefined"); } -void ETSUndefinedType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - ES2PANDA_UNREACHABLE(); -} - -checker::Type *ETSUndefinedType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - ES2PANDA_UNREACHABLE(); -} - -checker::VerifiedType ETSUndefinedType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *ETSUndefinedType::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - SetTsType(checker->GlobalETSUndefinedType()); - return TsType(); -} - ETSUndefinedType *ETSUndefinedType::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *const clone = allocator->New(allocator); @@ -99,27 +76,6 @@ void ETSNullType::Dump(ir::SrcDumper *dumper) const dumper->Add("null"); } -void ETSNullType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - ES2PANDA_UNREACHABLE(); -} - -checker::Type *ETSNullType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - ES2PANDA_UNREACHABLE(); -} - -checker::VerifiedType ETSNullType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *ETSNullType::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - SetTsType(checker->GlobalETSNullType()); - return TsType(); -} - ETSNullType *ETSNullType::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *const clone = allocator->New(allocator); diff --git a/ets2panda/ir/ets/etsPackageDeclaration.cpp b/ets2panda/ir/ets/etsPackageDeclaration.cpp index e6de02bf1e..5712951c77 100644 --- a/ets2panda/ir/ets/etsPackageDeclaration.cpp +++ b/ets2panda/ir/ets/etsPackageDeclaration.cpp @@ -15,9 +15,7 @@ #include "etsPackageDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expression.h" namespace ark::es2panda::ir { void ETSPackageDeclaration::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -46,25 +44,6 @@ void ETSPackageDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Endl(); } -void ETSPackageDeclaration::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void ETSPackageDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ETSPackageDeclaration::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ETSPackageDeclaration::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ETSPackageDeclaration *ETSPackageDeclaration::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto const name = name_ != nullptr ? name_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/ets/etsParameterExpression.cpp b/ets2panda/ir/ets/etsParameterExpression.cpp index 2dbccd6b9f..f92a28fe87 100644 --- a/ets2panda/ir/ets/etsParameterExpression.cpp +++ b/ets2panda/ir/ets/etsParameterExpression.cpp @@ -15,10 +15,8 @@ #include "etsParameterExpression.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/typeNode.h" +#include "ir/base/spreadElement.h" namespace ark::es2panda::ir { @@ -245,26 +243,6 @@ void ETSParameterExpression::Dump(ir::SrcDumper *const dumper) const } } -void ETSParameterExpression::Compile(compiler::PandaGen *const pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ETSParameterExpression::Compile(compiler::ETSGen *const etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ETSParameterExpression::Check(checker::TSChecker *const checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ETSParameterExpression::Check(checker::ETSChecker *const checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ETSParameterExpression *ETSParameterExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { AnnotatedExpression *identOrSpread = nullptr; diff --git a/ets2panda/ir/ets/etsPrimitiveType.cpp b/ets2panda/ir/ets/etsPrimitiveType.cpp index 69661b129d..d05471b090 100644 --- a/ets2panda/ir/ets/etsPrimitiveType.cpp +++ b/ets2panda/ir/ets/etsPrimitiveType.cpp @@ -15,11 +15,6 @@ #include "etsPrimitiveType.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { void ETSPrimitiveType::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -74,80 +69,6 @@ void ETSPrimitiveType::Dump(ir::SrcDumper *dumper) const } } -void ETSPrimitiveType::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ETSPrimitiveType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ETSPrimitiveType::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *ETSPrimitiveType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalAnyType(); -} - -checker::VerifiedType ETSPrimitiveType::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *ETSPrimitiveType::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - switch (GetPrimitiveType()) { - case PrimitiveType::BYTE: { - SetTsType(checker->GlobalByteBuiltinType()); - return TsType(); - } - case PrimitiveType::SHORT: { - SetTsType(checker->GlobalShortBuiltinType()); - return TsType(); - } - case PrimitiveType::INT: { - SetTsType(checker->GlobalIntBuiltinType()); - return TsType(); - } - case PrimitiveType::LONG: { - SetTsType(checker->GlobalLongBuiltinType()); - return TsType(); - } - case PrimitiveType::FLOAT: { - SetTsType(checker->GlobalFloatBuiltinType()); - return TsType(); - } - case PrimitiveType::DOUBLE: { - SetTsType(checker->GlobalDoubleBuiltinType()); - return TsType(); - } - case PrimitiveType::BOOLEAN: { - SetTsType(checker->GlobalETSBooleanBuiltinType()); - return TsType(); - } - case PrimitiveType::CHAR: { - SetTsType(checker->GlobalCharBuiltinType()); - return TsType(); - } - case PrimitiveType::VOID: { - if (LIKELY(checker->CheckVoidAnnotation(this))) { - SetTsType(checker->GlobalVoidType()); - return TsType(); - } - - return checker->InvalidateType(this); - } - default: { - ES2PANDA_UNREACHABLE(); - } - } -} - ETSPrimitiveType *ETSPrimitiveType::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(GetPrimitiveType(), allocator); diff --git a/ets2panda/ir/ets/etsStringLiteralType.cpp b/ets2panda/ir/ets/etsStringLiteralType.cpp index cff8978020..61680f3ba9 100644 --- a/ets2panda/ir/ets/etsStringLiteralType.cpp +++ b/ets2panda/ir/ets/etsStringLiteralType.cpp @@ -15,7 +15,7 @@ #include "etsStringLiteralType.h" -#include "checker/ETSchecker.h" +#include "checker/types/ets/etsStringType.h" namespace ark::es2panda::ir { void ETSStringLiteralType::TransformChildren([[maybe_unused]] const NodeTransformer &cb, @@ -41,27 +41,6 @@ void ETSStringLiteralType::Dump(ir::SrcDumper *dumper) const dumper->Add("\"" + value_.Mutf8() + "\""); } -void ETSStringLiteralType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - ES2PANDA_UNREACHABLE(); -} - -checker::Type *ETSStringLiteralType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - ES2PANDA_UNREACHABLE(); -} - -checker::VerifiedType ETSStringLiteralType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *ETSStringLiteralType::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - SetTsType(checker->CreateETSStringLiteralType(value_)); - return TsType(); -} - ETSStringLiteralType *ETSStringLiteralType::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *const clone = allocator->New(value_, allocator); diff --git a/ets2panda/ir/ets/etsStructDeclaration.cpp b/ets2panda/ir/ets/etsStructDeclaration.cpp index efad97ab17..870ff701fc 100644 --- a/ets2panda/ir/ets/etsStructDeclaration.cpp +++ b/ets2panda/ir/ets/etsStructDeclaration.cpp @@ -15,9 +15,7 @@ #include "etsStructDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" +#include "ir/base/classDefinition.h" namespace ark::es2panda::ir { void ETSStructDeclaration::Dump(ir::AstDumper *dumper) const @@ -32,14 +30,4 @@ void ETSStructDeclaration::Dump(ir::SrcDumper *dumper) const } } -checker::Type *ETSStructDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) -{ - ES2PANDA_UNREACHABLE(); -} - -checker::VerifiedType ETSStructDeclaration::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - ES2PANDA_ASSERT(checker->IsAnyError()); - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ets/etsTuple.cpp b/ets2panda/ir/ets/etsTuple.cpp index 3012e89b11..df51f1a2b8 100644 --- a/ets2panda/ir/ets/etsTuple.cpp +++ b/ets2panda/ir/ets/etsTuple.cpp @@ -15,8 +15,8 @@ #include "etsTuple.h" -#include "checker/ETSchecker.h" #include "checker/types/ets/etsTupleType.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::ir { diff --git a/ets2panda/ir/ets/etsTuple.h b/ets2panda/ir/ets/etsTuple.h index 6039a546e5..a84b34be6b 100644 --- a/ets2panda/ir/ets/etsTuple.h +++ b/ets2panda/ir/ets/etsTuple.h @@ -16,7 +16,6 @@ #ifndef ES2PANDA_IR_ETS_TUPLE_H #define ES2PANDA_IR_ETS_TUPLE_H -#include "checker/ETSchecker.h" #include "ir/typeNode.h" namespace ark::es2panda::ir { diff --git a/ets2panda/ir/ets/etsTypeReference.cpp b/ets2panda/ir/ets/etsTypeReference.cpp index dc213924fb..8c1e2b89b9 100644 --- a/ets2panda/ir/ets/etsTypeReference.cpp +++ b/ets2panda/ir/ets/etsTypeReference.cpp @@ -15,10 +15,7 @@ #include "etsTypeReference.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::ir { @@ -111,36 +108,6 @@ void ETSTypeReference::Dump(ir::SrcDumper *dumper) const Part()->Dump(dumper); } -void ETSTypeReference::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void ETSTypeReference::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ETSTypeReference::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ETSTypeReference::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} -checker::Type *ETSTypeReference::GetType(checker::ETSChecker *checker) -{ - if (TsType() != nullptr) { - return TsType(); - } - auto *type = Part()->GetType(checker); - if (IsReadonlyType()) { - type = checker->GetReadonlyType(type); - } - return SetTsType(type); -} - ETSTypeReference *ETSTypeReference::Clone(ArenaAllocator *const allocator, AstNode *const parent) { ETSTypeReferencePart *partClone = nullptr; diff --git a/ets2panda/ir/ets/etsTypeReferencePart.cpp b/ets2panda/ir/ets/etsTypeReferencePart.cpp index fb40b130ed..bfde41a8f8 100644 --- a/ets2panda/ir/ets/etsTypeReferencePart.cpp +++ b/ets2panda/ir/ets/etsTypeReferencePart.cpp @@ -15,11 +15,7 @@ #include "etsTypeReferencePart.h" -#include "checker/ETSchecker.h" #include "checker/ets/typeRelationContext.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" namespace ark::es2panda::ir { @@ -98,25 +94,6 @@ void ETSTypeReferencePart::Dump(ir::SrcDumper *dumper) const } } -void ETSTypeReferencePart::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void ETSTypeReferencePart::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ETSTypeReferencePart::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ETSTypeReferencePart::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - static checker::Type *HandleFixedArrayType(checker::ETSChecker *const checker, ETSTypeReferencePart *ref) { auto typeParams = ref->TypeParams(); diff --git a/ets2panda/ir/ets/etsUnionType.cpp b/ets2panda/ir/ets/etsUnionType.cpp index 95f556c907..e4dcce20b5 100644 --- a/ets2panda/ir/ets/etsUnionType.cpp +++ b/ets2panda/ir/ets/etsUnionType.cpp @@ -15,7 +15,7 @@ #include "etsUnionType.h" -#include "checker/ETSchecker.h" +#include "checker/types/ets/etsTypeParameter.h" namespace ark::es2panda::ir { void ETSUnionType::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -58,55 +58,6 @@ void ETSUnionType::Dump(ir::SrcDumper *dumper) const dumper->Add(")"); } -void ETSUnionType::Compile([[maybe_unused]] compiler::PandaGen *pg) const {} - -checker::Type *ETSUnionType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType ETSUnionType::Check(checker::ETSChecker *checker) -{ - for (auto *it : Types()) { - it->Check(checker); - } - - return {this, GetType(checker)}; -} - -static bool CheckConstituentTypesValid(ArenaVector const &constituentTypes) -{ - for (auto &it : constituentTypes) { - if (it->IsTypeError()) { - return false; - } - } - return true; -} - -checker::Type *ETSUnionType::GetType(checker::ETSChecker *checker) -{ - if (TsType() != nullptr) { - return TsType(); - } - checker->CheckAnnotations(this); - - ArenaVector types(checker->Allocator()->Adapter()); - - for (auto *it : Types()) { - types.push_back(it->GetType(checker)); - } - - checker->Relation()->SetNode(this); - if (!CheckConstituentTypesValid(types)) { - SetTsType(checker->GlobalTypeError()); - } else { - SetTsType(checker->CreateETSUnionType(std::move(types))); - } - checker->Relation()->SetNode(nullptr); - return TsType(); -} - ETSUnionType *ETSUnionType::Clone(ArenaAllocator *const allocator, AstNode *const parent) { ArenaVector types(allocator->Adapter()); diff --git a/ets2panda/ir/ets/etsWildcardType.cpp b/ets2panda/ir/ets/etsWildcardType.cpp index e021bd39b4..6a2f8cf5d2 100644 --- a/ets2panda/ir/ets/etsWildcardType.cpp +++ b/ets2panda/ir/ets/etsWildcardType.cpp @@ -15,10 +15,6 @@ #include "etsWildcardType.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/ets/etsTypeReference.h" @@ -58,33 +54,4 @@ void ETSWildcardType::Dump(ir::SrcDumper *dumper) const dumper->Add("ETSWildcardType"); } -void ETSWildcardType::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ETSWildcardType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ETSWildcardType::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *ETSWildcardType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType ETSWildcardType::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *ETSWildcardType::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - return checker->GlobalWildcardType(); -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ets/etsWildcardType.h b/ets2panda/ir/ets/etsWildcardType.h index d97e155308..f026b00158 100644 --- a/ets2panda/ir/ets/etsWildcardType.h +++ b/ets2panda/ir/ets/etsWildcardType.h @@ -46,7 +46,6 @@ public: void Compile(compiler::PandaGen *pg) const override; void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check(checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check(checker::ETSChecker *checker) override; checker::Type *GetType([[maybe_unused]] checker::ETSChecker *checker) override; diff --git a/ets2panda/ir/expressions/arrayExpression.cpp b/ets2panda/ir/expressions/arrayExpression.cpp index b74e9c4d71..2858b26a12 100644 --- a/ets2panda/ir/expressions/arrayExpression.cpp +++ b/ets2panda/ir/expressions/arrayExpression.cpp @@ -16,13 +16,11 @@ #include "arrayExpression.h" #include -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" #include "checker/ets/typeRelationContext.h" #include "checker/ts/destructuringContext.h" #include "checker/types/ets/etsTupleType.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsResizableArrayType.h" namespace ark::es2panda::ir { ArrayExpression::ArrayExpression([[maybe_unused]] Tag const tag, ArrayExpression const &other, @@ -199,21 +197,6 @@ void ArrayExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("]"); } -void ArrayExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ArrayExpression::Compile(compiler::ETSGen *const etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ArrayExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - checker::Type *CheckAssignmentPattern(Expression *it, checker::TSChecker *checker, checker::Type *elementType, bool &addOptional, checker::ElementFlags &memberFlag) { @@ -399,11 +382,6 @@ bool ArrayExpression::TrySetPreferredTypeForNestedArrayExpr(checker::ETSChecker return true; } -checker::VerifiedType ArrayExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - std::optional ArrayExpression::ExtractPossiblePreferredType(checker::Type *type) { ES2PANDA_ASSERT(type); diff --git a/ets2panda/ir/expressions/arrowFunctionExpression.cpp b/ets2panda/ir/expressions/arrowFunctionExpression.cpp index 6a735503ac..ad7074dfcc 100644 --- a/ets2panda/ir/expressions/arrowFunctionExpression.cpp +++ b/ets2panda/ir/expressions/arrowFunctionExpression.cpp @@ -15,10 +15,8 @@ #include "arrowFunctionExpression.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" +#include "ir/base/scriptFunction.h" +#include "ir/expressions/functionExpression.h" namespace ark::es2panda::ir { void ArrowFunctionExpression::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -56,26 +54,6 @@ void ArrowFunctionExpression::Dump(ir::SrcDumper *dumper) const dumper->Add(")"); } -void ArrowFunctionExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ArrowFunctionExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ArrowFunctionExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ArrowFunctionExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ArrowFunctionExpression::ArrowFunctionExpression(ArrowFunctionExpression const &other, ArenaAllocator *const allocator) : AnnotationAllowed(static_cast(other), allocator) { @@ -100,54 +78,6 @@ ArrowFunctionExpression *ArrowFunctionExpression::Clone(ArenaAllocator *const al return clone; } -ir::TypeNode *ArrowFunctionExpression::CreateReturnNodeFromType(checker::ETSChecker *checker, checker::Type *returnType) -{ - /* - Construct a synthetic Node with the correct ts_type_. - */ - ES2PANDA_ASSERT(returnType != nullptr); - auto *ident = checker->AllocNode(util::StringView(""), checker->Allocator()); - auto *const part = checker->AllocNode(ident, checker->Allocator()); - auto *returnNode = checker->AllocNode(part, checker->Allocator()); - ES2PANDA_ASSERT(returnNode); - returnNode->SetTsType(returnType); - return returnNode; -} - -ir::TypeNode *ArrowFunctionExpression::CreateTypeAnnotation(checker::ETSChecker *checker) -{ - ir::TypeNode *returnNode = nullptr; - /* - There are two scenarios for lambda type inference: defined or undefined return type. - example code: - ``` - enum Color { Red, Blue} - // has Return Type Color - let x = () : Color => {return Color.Red} - // No Return Type Color - let y = () => {return Color.Red} - ``` - */ - if (Function()->ReturnTypeAnnotation() == nullptr) { - /* - When lambda expression does not declare a return type, we need to construct the - declaration node of lambda according to the Function()->Signature()->ReturnType(). - */ - returnNode = CreateReturnNodeFromType(checker, Function()->Signature()->ReturnType()); - } else { - returnNode = Function()->ReturnTypeAnnotation()->Clone(checker->Allocator(), nullptr); - returnNode->SetTsType(Function()->ReturnTypeAnnotation()->TsType()); - } - - ArenaVector params {checker->Allocator()->Adapter()}; - checker->CopyParams(Function()->Params(), params, nullptr); - - auto signature = ir::FunctionSignature(nullptr, std::move(params), returnNode); - auto *funcType = checker->AllocNode(std::move(signature), ir::ScriptFunctionFlags::NONE, - checker->Allocator()); - return funcType; -} - bool ArrowFunctionExpression::IsVarFromSubscope(const varbinder::Variable *var) const { // The parameter scope's and the function scope's common ancestor lives outside the function, so we have to check diff --git a/ets2panda/ir/expressions/arrowFunctionExpression.h b/ets2panda/ir/expressions/arrowFunctionExpression.h index 2550cc7e0d..e3f7f9cb0f 100644 --- a/ets2panda/ir/expressions/arrowFunctionExpression.h +++ b/ets2panda/ir/expressions/arrowFunctionExpression.h @@ -71,8 +71,6 @@ public: void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check(checker::TSChecker *checker) override; checker::VerifiedType Check(checker::ETSChecker *checker) override; - ir::TypeNode *CreateTypeAnnotation(checker::ETSChecker *checker); - ir::TypeNode *CreateReturnNodeFromType(checker::ETSChecker *checker, checker::Type *returnType); bool IsVarFromSubscope(const varbinder::Variable *var) const; void Accept(ASTVisitorT *v) override diff --git a/ets2panda/ir/expressions/assignmentExpression.cpp b/ets2panda/ir/expressions/assignmentExpression.cpp index 2505910c5f..c52f36ab58 100644 --- a/ets2panda/ir/expressions/assignmentExpression.cpp +++ b/ets2panda/ir/expressions/assignmentExpression.cpp @@ -16,9 +16,10 @@ #include "assignmentExpression.h" #include "compiler/base/lreference.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" + +#include "ir/base/spreadElement.h" +#include "ir/expressions/objectExpression.h" +#include "ir/expressions/arrayExpression.h" namespace ark::es2panda::ir { @@ -121,34 +122,6 @@ void AssignmentExpression::Dump(ir::SrcDumper *dumper) const right_->Dump(dumper); } -void AssignmentExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void AssignmentExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -void AssignmentExpression::CompilePattern(compiler::PandaGen *pg) const -{ - compiler::RegScope rs(pg); - auto lref = compiler::JSLReference::Create(pg, left_, false); - right_->Compile(pg); - lref.SetValue(); -} - -checker::Type *AssignmentExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType AssignmentExpression::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - AssignmentExpression::AssignmentExpression([[maybe_unused]] Tag const tag, AssignmentExpression const &other, Expression *const left, Expression *const right) : AssignmentExpression(other) diff --git a/ets2panda/ir/expressions/assignmentExpression.h b/ets2panda/ir/expressions/assignmentExpression.h index 614ea5d8f6..df565b8a6a 100644 --- a/ets2panda/ir/expressions/assignmentExpression.h +++ b/ets2panda/ir/expressions/assignmentExpression.h @@ -154,7 +154,6 @@ public: void Dump(ir::SrcDumper *dumper) const override; void Compile(compiler::PandaGen *pg) const override; void Compile(compiler::ETSGen *etsg) const override; - void CompilePattern(compiler::PandaGen *pg) const; checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; diff --git a/ets2panda/ir/expressions/awaitExpression.cpp b/ets2panda/ir/expressions/awaitExpression.cpp index d9e6b54668..a4234bbaa6 100644 --- a/ets2panda/ir/expressions/awaitExpression.cpp +++ b/ets2panda/ir/expressions/awaitExpression.cpp @@ -15,10 +15,6 @@ #include "awaitExpression.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" - namespace ark::es2panda::ir { void AwaitExpression::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -50,26 +46,6 @@ void AwaitExpression::Dump(ir::SrcDumper *dumper) const } } -void AwaitExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void AwaitExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *AwaitExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType AwaitExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - AwaitExpression *AwaitExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const argument = argument_ != nullptr ? argument_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/expressions/binaryExpression.cpp b/ets2panda/ir/expressions/binaryExpression.cpp index b7de84484e..e805ab6e74 100644 --- a/ets2panda/ir/expressions/binaryExpression.cpp +++ b/ets2panda/ir/expressions/binaryExpression.cpp @@ -15,10 +15,6 @@ #include "binaryExpression.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" - namespace ark::es2panda::ir { void BinaryExpression::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) { @@ -60,40 +56,6 @@ void BinaryExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("))"); } -void BinaryExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void BinaryExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -void BinaryExpression::CompileOperands(compiler::ETSGen *etsg, compiler::VReg lhs) const -{ - left_->Compile(etsg); - - if (operator_ == lexer::TokenType::KEYW_INSTANCEOF) { - etsg->StoreAccumulator(left_, lhs); - } else { - etsg->ApplyConversionAndStoreAccumulator(left_, lhs, operationType_); - } - - right_->Compile(etsg); - etsg->ApplyConversion(right_, operationType_); -} - -checker::Type *BinaryExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType BinaryExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - BinaryExpression *BinaryExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const left = left_ != nullptr ? left_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/expressions/blockExpression.cpp b/ets2panda/ir/expressions/blockExpression.cpp index 853f4973fc..78bc645d8d 100644 --- a/ets2panda/ir/expressions/blockExpression.cpp +++ b/ets2panda/ir/expressions/blockExpression.cpp @@ -15,9 +15,6 @@ #include "blockExpression.h" -#include "compiler/core/ETSGen.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { BlockExpression::BlockExpression(ArenaVector &&statements) @@ -82,23 +79,4 @@ void BlockExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("})"); } -void BlockExpression::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - ES2PANDA_UNREACHABLE(); -} - -void BlockExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *BlockExpression::Check([[maybe_unused]] checker::TSChecker *checker) -{ - ES2PANDA_UNREACHABLE(); -} - -checker::VerifiedType BlockExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/expressions/callExpression.cpp b/ets2panda/ir/expressions/callExpression.cpp index 4be13e81f7..e7e91e6a23 100644 --- a/ets2panda/ir/expressions/callExpression.cpp +++ b/ets2panda/ir/expressions/callExpression.cpp @@ -15,9 +15,11 @@ #include "callExpression.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/memberExpression.h" +#include "ir/expressions/functionExpression.h" +#include "ir/statements/blockStatement.h" + +#include "ir/ts/tsTypeParameterInstantiation.h" namespace ark::es2panda::ir { void CallExpression::SetArguments(ArenaVector &&argumentsList) @@ -114,26 +116,6 @@ void CallExpression::Dump(ir::SrcDumper *dumper) const } } -void CallExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void CallExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *CallExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType CallExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - CallExpression::CallExpression(CallExpression const &other, ArenaAllocator *const allocator) : MaybeOptionalExpression(static_cast(other)), arguments_(allocator->Adapter()), diff --git a/ets2panda/ir/expressions/chainExpression.cpp b/ets2panda/ir/expressions/chainExpression.cpp index 8407013cb3..5a47320c40 100644 --- a/ets2panda/ir/expressions/chainExpression.cpp +++ b/ets2panda/ir/expressions/chainExpression.cpp @@ -15,10 +15,6 @@ #include "chainExpression.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { void ChainExpression::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -45,39 +41,6 @@ void ChainExpression::Dump(ir::SrcDumper *dumper) const dumper->Add(")"); } -void ChainExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ChainExpression::CompileToReg(compiler::PandaGen *pg, compiler::VReg &objReg) const -{ - compiler::OptionalChain chain(pg, this); - - if (expression_->IsMemberExpression()) { - objReg = pg->AllocReg(); - expression_->AsMemberExpression()->CompileToReg(pg, objReg); - } else { - objReg = compiler::VReg::Invalid(); - expression_->Compile(pg); - } -} - -void ChainExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ChainExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ChainExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ChainExpression *ChainExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const expression = expression_ != nullptr ? expression_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/expressions/chainExpression.h b/ets2panda/ir/expressions/chainExpression.h index 4e2ba3bd88..3f1951d02e 100644 --- a/ets2panda/ir/expressions/chainExpression.h +++ b/ets2panda/ir/expressions/chainExpression.h @@ -16,7 +16,8 @@ #ifndef ES2PANDA_IR_EXPRESSION_CHAIN_EXPRESSION_H #define ES2PANDA_IR_EXPRESSION_CHAIN_EXPRESSION_H -#include "ir/expression.h" +#include "compiler/base/optionalChain.h" +#include "ir/expressions/memberExpression.h" #include "ir/irnode.h" namespace ark::es2panda::checker { diff --git a/ets2panda/ir/expressions/classExpression.cpp b/ets2panda/ir/expressions/classExpression.cpp index 36a0f7fa2e..46a7057248 100644 --- a/ets2panda/ir/expressions/classExpression.cpp +++ b/ets2panda/ir/expressions/classExpression.cpp @@ -15,9 +15,7 @@ #include "classExpression.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/base/classDefinition.h" namespace ark::es2panda::ir { void ClassExpression::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -43,26 +41,6 @@ void ClassExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("ClassExpression"); } -void ClassExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ClassExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ClassExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ClassExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ClassExpression *ClassExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const def = def_ != nullptr ? def_->Clone(allocator, nullptr)->AsClassDefinition() : nullptr; diff --git a/ets2panda/ir/expressions/conditionalExpression.cpp b/ets2panda/ir/expressions/conditionalExpression.cpp index e0db6c2ec3..960add5924 100644 --- a/ets2panda/ir/expressions/conditionalExpression.cpp +++ b/ets2panda/ir/expressions/conditionalExpression.cpp @@ -15,10 +15,6 @@ #include "conditionalExpression.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" - namespace ark::es2panda::ir { void ConditionalExpression::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -71,26 +67,6 @@ void ConditionalExpression::Dump(ir::SrcDumper *dumper) const } } -void ConditionalExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ConditionalExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ConditionalExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ConditionalExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ConditionalExpression *ConditionalExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const test = test_->Clone(allocator, nullptr)->AsExpression(); diff --git a/ets2panda/ir/expressions/directEvalExpression.cpp b/ets2panda/ir/expressions/directEvalExpression.cpp index d5a7fdb968..2d402e602a 100644 --- a/ets2panda/ir/expressions/directEvalExpression.cpp +++ b/ets2panda/ir/expressions/directEvalExpression.cpp @@ -17,29 +17,6 @@ #include "directEvalExpression.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { -void DirectEvalExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void DirectEvalExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *DirectEvalExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType DirectEvalExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/expressions/dummyNode.cpp b/ets2panda/ir/expressions/dummyNode.cpp index bf4b171b8f..2f9db25003 100644 --- a/ets2panda/ir/expressions/dummyNode.cpp +++ b/ets2panda/ir/expressions/dummyNode.cpp @@ -15,10 +15,6 @@ #include "dummyNode.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -43,23 +39,4 @@ void DummyNode::Dump(ir::SrcDumper *dumper) const dumper->Add(std::string(name_)); } -void DummyNode::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void DummyNode::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *DummyNode::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType DummyNode::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/expressions/functionExpression.cpp b/ets2panda/ir/expressions/functionExpression.cpp index b5096815fc..e9604997fc 100644 --- a/ets2panda/ir/expressions/functionExpression.cpp +++ b/ets2panda/ir/expressions/functionExpression.cpp @@ -15,9 +15,7 @@ #include "functionExpression.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/base/scriptFunction.h" namespace ark::es2panda::ir { void FunctionExpression::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -43,26 +41,6 @@ void FunctionExpression::Dump(ir::SrcDumper *dumper) const func_->Dump(dumper); } -void FunctionExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void FunctionExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *FunctionExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType FunctionExpression::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - FunctionExpression *FunctionExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { ES2PANDA_ASSERT(func_->Clone(allocator, nullptr) != nullptr); diff --git a/ets2panda/ir/expressions/identifier.cpp b/ets2panda/ir/expressions/identifier.cpp index 050fd78b37..ec2a14d1cc 100644 --- a/ets2panda/ir/expressions/identifier.cpp +++ b/ets2panda/ir/expressions/identifier.cpp @@ -15,10 +15,13 @@ #include "identifier.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" +#include "ir/base/classDefinition.h" +#include "ir/base/scriptFunction.h" +#include "ir/base/tsPropertySignature.h" +#include "ir/base/classProperty.h" +#include "ir/statements/variableDeclarator.h" +#include "ir/ts/tsEnumMember.h" +#include "ir/typeNode.h" namespace ark::es2panda::ir { Identifier::Identifier([[maybe_unused]] Tag const tag, Identifier const &other, ArenaAllocator *const allocator) @@ -147,26 +150,6 @@ void Identifier::Dump(ir::SrcDumper *dumper) const dumper->PushTask([dumper, name = std::string(name_)] { dumper->DumpNode(name); }); } -void Identifier::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void Identifier::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *Identifier::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType Identifier::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - bool Identifier::IsDeclaration(ScriptExtension ext) const { // We can determine reference status from parent node diff --git a/ets2panda/ir/expressions/importExpression.cpp b/ets2panda/ir/expressions/importExpression.cpp index fc1c140d4d..b71ee403c6 100644 --- a/ets2panda/ir/expressions/importExpression.cpp +++ b/ets2panda/ir/expressions/importExpression.cpp @@ -15,10 +15,6 @@ #include "importExpression.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { void ImportExpression::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) { @@ -43,25 +39,6 @@ void ImportExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("ImportExpression"); } -void ImportExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ImportExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} -checker::Type *ImportExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ImportExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ImportExpression *ImportExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const source = source_ != nullptr ? source_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/expressions/literals/bigIntLiteral.cpp b/ets2panda/ir/expressions/literals/bigIntLiteral.cpp index 95cc4f3eaa..b7dbf4788b 100644 --- a/ets2panda/ir/expressions/literals/bigIntLiteral.cpp +++ b/ets2panda/ir/expressions/literals/bigIntLiteral.cpp @@ -15,11 +15,6 @@ #include "bigIntLiteral.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { void BigIntLiteral::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -38,26 +33,6 @@ void BigIntLiteral::Dump(ir::SrcDumper *dumper) const dumper->Add(std::string(src_) + "n"); } -void BigIntLiteral::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void BigIntLiteral::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *BigIntLiteral::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType BigIntLiteral::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - BigIntLiteral *BigIntLiteral::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(src_); diff --git a/ets2panda/ir/expressions/literals/bigIntLiteral.h b/ets2panda/ir/expressions/literals/bigIntLiteral.h index 8e34cbf538..c6c20e6f8c 100644 --- a/ets2panda/ir/expressions/literals/bigIntLiteral.h +++ b/ets2panda/ir/expressions/literals/bigIntLiteral.h @@ -16,6 +16,7 @@ #ifndef ES2PANDA_IR_EXPRESSION_LITERAL_BIGINT_LITERAL_H #define ES2PANDA_IR_EXPRESSION_LITERAL_BIGINT_LITERAL_H +#include "ir/typeNode.h" #include "ir/expressions/literal.h" #include "util/ustring.h" diff --git a/ets2panda/ir/expressions/literals/booleanLiteral.cpp b/ets2panda/ir/expressions/literals/booleanLiteral.cpp index 01025493fb..00a7332f59 100644 --- a/ets2panda/ir/expressions/literals/booleanLiteral.cpp +++ b/ets2panda/ir/expressions/literals/booleanLiteral.cpp @@ -15,11 +15,6 @@ #include "booleanLiteral.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { void BooleanLiteral::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -38,26 +33,6 @@ void BooleanLiteral::Dump(ir::SrcDumper *dumper) const dumper->Add(boolean_ ? "true" : "false"); } -void BooleanLiteral::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void BooleanLiteral::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *BooleanLiteral::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType BooleanLiteral::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - BooleanLiteral *BooleanLiteral::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(boolean_); diff --git a/ets2panda/ir/expressions/literals/charLiteral.cpp b/ets2panda/ir/expressions/literals/charLiteral.cpp index 3dcd401f22..43b02c6b01 100644 --- a/ets2panda/ir/expressions/literals/charLiteral.cpp +++ b/ets2panda/ir/expressions/literals/charLiteral.cpp @@ -15,10 +15,7 @@ #include "charLiteral.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/ETSchecker.h" +#include "util/helpers.h" namespace ark::es2panda::ir { void CharLiteral::TransformChildren([[maybe_unused]] const NodeTransformer &cb, @@ -38,26 +35,6 @@ void CharLiteral::Dump(ir::SrcDumper *dumper) const dumper->Add("c\'" + ToString() + "\'"); } -void CharLiteral::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void CharLiteral::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *CharLiteral::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType CharLiteral::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - CharLiteral *CharLiteral::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(char_); diff --git a/ets2panda/ir/expressions/literals/nullLiteral.cpp b/ets2panda/ir/expressions/literals/nullLiteral.cpp index f88e2e8532..bf7741e996 100644 --- a/ets2panda/ir/expressions/literals/nullLiteral.cpp +++ b/ets2panda/ir/expressions/literals/nullLiteral.cpp @@ -15,10 +15,6 @@ #include "nullLiteral.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { void NullLiteral::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -37,26 +33,6 @@ void NullLiteral::Dump(ir::SrcDumper *dumper) const dumper->Add("null"); } -void NullLiteral::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void NullLiteral::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *NullLiteral::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType NullLiteral::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - NullLiteral *NullLiteral::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(); diff --git a/ets2panda/ir/expressions/literals/numberLiteral.cpp b/ets2panda/ir/expressions/literals/numberLiteral.cpp index d3cf60f026..06d44907d1 100644 --- a/ets2panda/ir/expressions/literals/numberLiteral.cpp +++ b/ets2panda/ir/expressions/literals/numberLiteral.cpp @@ -15,10 +15,8 @@ #include "numberLiteral.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "util/dtoa_helper.h" +#include "libpandabase/utils/bit_helpers.h" namespace ark::es2panda::ir { @@ -76,26 +74,6 @@ void NumberLiteral::Dump(ir::SrcDumper *dumper) const dumper->Add(std::string(number_.Str())); } -void NumberLiteral::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void NumberLiteral::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *NumberLiteral::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType NumberLiteral::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - NumberLiteral *NumberLiteral::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(number_); diff --git a/ets2panda/ir/expressions/literals/regExpLiteral.cpp b/ets2panda/ir/expressions/literals/regExpLiteral.cpp index 71b31dc0c9..999d501c14 100644 --- a/ets2panda/ir/expressions/literals/regExpLiteral.cpp +++ b/ets2panda/ir/expressions/literals/regExpLiteral.cpp @@ -15,10 +15,7 @@ #include "regExpLiteral.h" -#include "compiler/core/pandagen.h" #include "compiler/core/regScope.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" namespace ark::es2panda::ir { void RegExpLiteral::TransformChildren([[maybe_unused]] const NodeTransformer &cb, @@ -38,26 +35,6 @@ void RegExpLiteral::Dump(ir::SrcDumper *dumper) const dumper->Add(std::string(pattern_)); } -void RegExpLiteral::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void RegExpLiteral::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *RegExpLiteral::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType RegExpLiteral::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - RegExpLiteral *RegExpLiteral::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(pattern_, flags_, flagsStr_); diff --git a/ets2panda/ir/expressions/literals/stringLiteral.cpp b/ets2panda/ir/expressions/literals/stringLiteral.cpp index c0345f6b61..018223e943 100644 --- a/ets2panda/ir/expressions/literals/stringLiteral.cpp +++ b/ets2panda/ir/expressions/literals/stringLiteral.cpp @@ -15,10 +15,6 @@ #include "stringLiteral.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { void StringLiteral::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -37,26 +33,6 @@ void StringLiteral::Dump(ir::SrcDumper *dumper) const dumper->Add("\"" + util::Helpers::CreateEscapedString(std::string(str_)) + "\""); } -void StringLiteral::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void StringLiteral::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *StringLiteral::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType StringLiteral::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - StringLiteral *StringLiteral::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(str_); diff --git a/ets2panda/ir/expressions/literals/stringLiteral.h b/ets2panda/ir/expressions/literals/stringLiteral.h index 0023873e05..e8e0dc7bba 100644 --- a/ets2panda/ir/expressions/literals/stringLiteral.h +++ b/ets2panda/ir/expressions/literals/stringLiteral.h @@ -18,6 +18,7 @@ #include "ir/expressions/literal.h" #include "util/es2pandaMacros.h" +#include "util/helpers.h" #include "util/ustring.h" namespace ark::es2panda::ir { diff --git a/ets2panda/ir/expressions/literals/undefinedLiteral.cpp b/ets2panda/ir/expressions/literals/undefinedLiteral.cpp index d30067ede8..d8c00c6cac 100644 --- a/ets2panda/ir/expressions/literals/undefinedLiteral.cpp +++ b/ets2panda/ir/expressions/literals/undefinedLiteral.cpp @@ -15,10 +15,6 @@ #include "undefinedLiteral.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -40,27 +36,6 @@ void UndefinedLiteral::Dump(ir::SrcDumper *dumper) const dumper->Add("undefined"); } -void UndefinedLiteral::Compile(compiler::PandaGen *pg) const -{ - pg->LoadConst(this, compiler::Constant::JS_UNDEFINED); -} - -void UndefinedLiteral::Compile(compiler::ETSGen *etsg) const -{ - etsg->LoadAccumulatorUndefined(this); -} - -checker::Type *UndefinedLiteral::Check(checker::TSChecker *checker) -{ - return checker->GlobalUndefinedType(); -} - -checker::VerifiedType UndefinedLiteral::Check(checker::ETSChecker *checker) -{ - SetTsType(checker->GlobalETSUndefinedType()); - return {this, TsType()}; -} - UndefinedLiteral *UndefinedLiteral::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *const clone = allocator->New(); diff --git a/ets2panda/ir/expressions/memberExpression.cpp b/ets2panda/ir/expressions/memberExpression.cpp index 984599ecf5..c9106690e9 100644 --- a/ets2panda/ir/expressions/memberExpression.cpp +++ b/ets2panda/ir/expressions/memberExpression.cpp @@ -15,11 +15,13 @@ #include "memberExpression.h" -#include "checker/TSchecker.h" #include "checker/ets/castingContext.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsObjectType.h" #include "checker/types/ets/etsTupleType.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "checker/types/ets/etsUnionType.h" +#include "checker/types/ets/etsExtensionFuncHelperType.h" + #include "util/diagnostic.h" #include "util/es2pandaMacros.h" @@ -91,65 +93,6 @@ void MemberExpression::Dump(ir::SrcDumper *dumper) const } } -void MemberExpression::LoadRhs(compiler::PandaGen *pg) const -{ - compiler::RegScope rs(pg); - bool isSuper = object_->IsSuperExpression(); - compiler::Operand prop = pg->ToPropertyKey(property_, computed_, isSuper); - - if (isSuper) { - pg->LoadSuperProperty(this, prop); - } else if (IsPrivateReference()) { - const auto &name = property_->AsIdentifier()->Name(); - compiler::VReg objReg = pg->AllocReg(); - pg->StoreAccumulator(this, objReg); - compiler::VReg ctor = pg->AllocReg(); - compiler::Function::LoadClassContexts(this, pg, ctor, name); - pg->ClassPrivateFieldGet(this, ctor, objReg, name); - } else { - pg->LoadObjProperty(this, prop); - } -} - -void MemberExpression::CompileToRegs(compiler::PandaGen *pg, compiler::VReg object, compiler::VReg property) const -{ - object_->Compile(pg); - pg->StoreAccumulator(this, object); - - pg->OptionalChainCheck(IsOptional(), object); - - if (!computed_) { - pg->LoadAccumulatorString(this, property_->AsIdentifier()->Name()); - } else { - property_->Compile(pg); - } - - pg->StoreAccumulator(this, property); -} - -void MemberExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void MemberExpression::CompileToReg(compiler::PandaGen *pg, compiler::VReg objReg) const -{ - object_->Compile(pg); - pg->StoreAccumulator(this, objReg); - pg->OptionalChainCheck(IsOptional(), objReg); - LoadRhs(pg); -} - -void MemberExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *MemberExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - std::pair MemberExpression::ResolveObjectMember( checker::ETSChecker *checker) const { @@ -566,11 +509,6 @@ checker::Type *MemberExpression::CheckComputed(checker::ETSChecker *checker, che return nullptr; } -checker::VerifiedType MemberExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - MemberExpression *MemberExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(Tag {}, *this, allocator); diff --git a/ets2panda/ir/expressions/memberExpression.h b/ets2panda/ir/expressions/memberExpression.h index 4c72e652fe..6f42c5f78a 100644 --- a/ets2panda/ir/expressions/memberExpression.h +++ b/ets2panda/ir/expressions/memberExpression.h @@ -17,17 +17,18 @@ #define ES2PANDA_IR_EXPRESSION_MEMBER_EXPRESSION_H #include "checker/checkerContext.h" -#include "checker/types/ets/etsObjectType.h" #include "ir/expression.h" - +#include "varbinder/variable.h" namespace ark::es2panda::compiler { class JSCompiler; class ETSCompiler; } // namespace ark::es2panda::compiler namespace ark::es2panda::checker { -class ETSObjectType; class ETSAnalyzer; +class ETSFunctionType; +class ETSObjectType; +class ETSUnionType; } // namespace ark::es2panda::checker namespace ark::es2panda::ir { diff --git a/ets2panda/ir/expressions/newExpression.cpp b/ets2panda/ir/expressions/newExpression.cpp index 121a9871a1..8ff139c4b6 100644 --- a/ets2panda/ir/expressions/newExpression.cpp +++ b/ets2panda/ir/expressions/newExpression.cpp @@ -15,10 +15,6 @@ #include "newExpression.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { NewExpression::NewExpression([[maybe_unused]] Tag const tag, NewExpression const &other, ArenaAllocator *const allocator) @@ -78,23 +74,4 @@ void NewExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("NewExpression"); } -void NewExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void NewExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *NewExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType NewExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/expressions/objectExpression.cpp b/ets2panda/ir/expressions/objectExpression.cpp index 36bc52d2ff..85943984f0 100644 --- a/ets2panda/ir/expressions/objectExpression.cpp +++ b/ets2panda/ir/expressions/objectExpression.cpp @@ -15,8 +15,6 @@ #include "objectExpression.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" #include "checker/ts/destructuringContext.h" namespace ark::es2panda::ir { @@ -222,11 +220,6 @@ void ObjectExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("}"); } -void ObjectExpression::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - // CC-OFFNXT(G.FMT.10-CPP) project code style std::tuple ObjectExpression::CheckPatternIsShorthand(CheckPatternIsShorthandArgs *args) @@ -376,21 +369,6 @@ bool ObjectExpression::CheckAssignmentPattern(Property *prop, varbinder::Variabl return true; } -checker::Type *ObjectExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -void ObjectExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::VerifiedType ObjectExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - void ObjectExpression::CleanCheckInformation() { SetPreferredType(nullptr); diff --git a/ets2panda/ir/expressions/omittedExpression.cpp b/ets2panda/ir/expressions/omittedExpression.cpp index a804144ab3..072929fcd2 100644 --- a/ets2panda/ir/expressions/omittedExpression.cpp +++ b/ets2panda/ir/expressions/omittedExpression.cpp @@ -15,10 +15,6 @@ #include "omittedExpression.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { void OmittedExpression::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -37,26 +33,6 @@ void OmittedExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("OmittedExpression"); } -void OmittedExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void OmittedExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *OmittedExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType OmittedExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - OmittedExpression *OmittedExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(); diff --git a/ets2panda/ir/expressions/sequenceExpression.cpp b/ets2panda/ir/expressions/sequenceExpression.cpp index f84e542b58..06e2475089 100644 --- a/ets2panda/ir/expressions/sequenceExpression.cpp +++ b/ets2panda/ir/expressions/sequenceExpression.cpp @@ -15,11 +15,6 @@ #include "sequenceExpression.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { SequenceExpression::SequenceExpression([[maybe_unused]] Tag const tag, SequenceExpression const &other, ArenaAllocator *const allocator) @@ -73,23 +68,4 @@ void SequenceExpression::Dump(ir::SrcDumper *dumper) const } } -void SequenceExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void SequenceExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *SequenceExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType SequenceExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/expressions/superExpression.cpp b/ets2panda/ir/expressions/superExpression.cpp index 027182de8a..244418a7bd 100644 --- a/ets2panda/ir/expressions/superExpression.cpp +++ b/ets2panda/ir/expressions/superExpression.cpp @@ -15,11 +15,6 @@ #include "superExpression.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { void SuperExpression::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -38,26 +33,6 @@ void SuperExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("super"); } -void SuperExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void SuperExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *SuperExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType SuperExpression::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - SuperExpression *SuperExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(); diff --git a/ets2panda/ir/expressions/taggedTemplateExpression.cpp b/ets2panda/ir/expressions/taggedTemplateExpression.cpp index 069005b553..d8aeeddcb3 100644 --- a/ets2panda/ir/expressions/taggedTemplateExpression.cpp +++ b/ets2panda/ir/expressions/taggedTemplateExpression.cpp @@ -15,9 +15,9 @@ #include "taggedTemplateExpression.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" -#include "checker/TSchecker.h" +#include "ir/expressions/identifier.h" +#include "ir/expressions/templateLiteral.h" +#include "ir/ts/tsTypeParameterInstantiation.h" namespace ark::es2panda::ir { void TaggedTemplateExpression::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -63,26 +63,6 @@ void TaggedTemplateExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("TaggedTemplateExpression"); } -void TaggedTemplateExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TaggedTemplateExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TaggedTemplateExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TaggedTemplateExpression::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TaggedTemplateExpression *TaggedTemplateExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const tag = tag_ != nullptr ? tag_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/expressions/templateLiteral.cpp b/ets2panda/ir/expressions/templateLiteral.cpp index 4275fe126a..3566a97ac9 100644 --- a/ets2panda/ir/expressions/templateLiteral.cpp +++ b/ets2panda/ir/expressions/templateLiteral.cpp @@ -15,11 +15,6 @@ #include "templateLiteral.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { TemplateLiteral::TemplateLiteral([[maybe_unused]] Tag const tag, TemplateLiteral const &other, ArenaAllocator *const allocator) @@ -100,27 +95,6 @@ void TemplateLiteral::Dump(ir::SrcDumper *dumper) const dumper->Add("`"); } -void TemplateLiteral::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -checker::Type *TemplateLiteral::Check([[maybe_unused]] checker::TSChecker *checker) -{ - // NOTE: aszilagyi. - return checker->GlobalAnyType(); -} - -void TemplateLiteral::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::VerifiedType TemplateLiteral::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - util::StringView TemplateLiteral::GetMultilineString() const { return multilineString_; diff --git a/ets2panda/ir/expressions/thisExpression.cpp b/ets2panda/ir/expressions/thisExpression.cpp index 269fb8a222..003035b7b0 100644 --- a/ets2panda/ir/expressions/thisExpression.cpp +++ b/ets2panda/ir/expressions/thisExpression.cpp @@ -15,11 +15,6 @@ #include "thisExpression.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { void ThisExpression::TransformChildren([[maybe_unused]] const NodeTransformer &cb, [[maybe_unused]] std::string_view const transformationName) @@ -38,26 +33,6 @@ void ThisExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("this"); } -void ThisExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ThisExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ThisExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ThisExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ThisExpression *ThisExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(); diff --git a/ets2panda/ir/expressions/typeofExpression.cpp b/ets2panda/ir/expressions/typeofExpression.cpp index c5d2b5e4d7..8c985ae1a1 100644 --- a/ets2panda/ir/expressions/typeofExpression.cpp +++ b/ets2panda/ir/expressions/typeofExpression.cpp @@ -15,11 +15,6 @@ #include "typeofExpression.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { void TypeofExpression::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) { @@ -46,26 +41,6 @@ void TypeofExpression::Dump(ir::SrcDumper *dumper) const dumper->Add(")"); } -void TypeofExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TypeofExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TypeofExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TypeofExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TypeofExpression *TypeofExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const argument = argument_->Clone(allocator, nullptr)->AsExpression(); diff --git a/ets2panda/ir/expressions/unaryExpression.cpp b/ets2panda/ir/expressions/unaryExpression.cpp index 1208f24c21..d1a352ea23 100644 --- a/ets2panda/ir/expressions/unaryExpression.cpp +++ b/ets2panda/ir/expressions/unaryExpression.cpp @@ -15,11 +15,6 @@ #include "unaryExpression.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { void UnaryExpression::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -51,26 +46,6 @@ void UnaryExpression::Dump(ir::SrcDumper *dumper) const } } -void UnaryExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void UnaryExpression::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *UnaryExpression::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType UnaryExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - UnaryExpression *UnaryExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const argument = argument_ != nullptr ? argument_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/expressions/updateExpression.cpp b/ets2panda/ir/expressions/updateExpression.cpp index 4d8f148bf2..511b08ef59 100644 --- a/ets2panda/ir/expressions/updateExpression.cpp +++ b/ets2panda/ir/expressions/updateExpression.cpp @@ -15,11 +15,6 @@ #include "updateExpression.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { void UpdateExpression::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -53,26 +48,6 @@ void UpdateExpression::Dump(ir::SrcDumper *dumper) const dumper->Add(")"); } -void UpdateExpression::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void UpdateExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *UpdateExpression::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType UpdateExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - UpdateExpression *UpdateExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const argument = argument_ != nullptr ? argument_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/expressions/yieldExpression.cpp b/ets2panda/ir/expressions/yieldExpression.cpp index 23e17be10d..20f40240a5 100644 --- a/ets2panda/ir/expressions/yieldExpression.cpp +++ b/ets2panda/ir/expressions/yieldExpression.cpp @@ -15,10 +15,7 @@ #include "yieldExpression.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "compiler/function/generatorFunctionBuilder.h" -#include "checker/TSchecker.h" namespace ark::es2panda::ir { void YieldExpression::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -48,26 +45,6 @@ void YieldExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("YieldExpression"); } -void YieldExpression::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void YieldExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *YieldExpression::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType YieldExpression::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - YieldExpression *YieldExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const argument = argument_ != nullptr ? argument_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/module/exportAllDeclaration.cpp b/ets2panda/ir/module/exportAllDeclaration.cpp index b61b9dd17c..098d2f7969 100644 --- a/ets2panda/ir/module/exportAllDeclaration.cpp +++ b/ets2panda/ir/module/exportAllDeclaration.cpp @@ -15,9 +15,9 @@ #include "exportAllDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/identifier.h" +#include "ir/expressions/literals/stringLiteral.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -56,23 +56,4 @@ void ExportAllDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Add("ExportAllDeclaration"); } -void ExportAllDeclaration::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ExportAllDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ExportAllDeclaration::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ExportAllDeclaration::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/module/exportDefaultDeclaration.cpp b/ets2panda/ir/module/exportDefaultDeclaration.cpp index 5d96ad38e2..345c9bc40f 100644 --- a/ets2panda/ir/module/exportDefaultDeclaration.cpp +++ b/ets2panda/ir/module/exportDefaultDeclaration.cpp @@ -15,9 +15,6 @@ #include "exportDefaultDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -46,23 +43,4 @@ void ExportDefaultDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Add("ExportDefaultDeclaration"); } -void ExportDefaultDeclaration::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ExportDefaultDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ExportDefaultDeclaration::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ExportDefaultDeclaration::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/module/exportNamedDeclaration.cpp b/ets2panda/ir/module/exportNamedDeclaration.cpp index e351e25179..27d71522c7 100644 --- a/ets2panda/ir/module/exportNamedDeclaration.cpp +++ b/ets2panda/ir/module/exportNamedDeclaration.cpp @@ -15,9 +15,9 @@ #include "exportNamedDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/literals/stringLiteral.h" +#include "ir/module/exportSpecifier.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -82,23 +82,4 @@ void ExportNamedDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Add(" }"); } -void ExportNamedDeclaration::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ExportNamedDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ExportNamedDeclaration::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ExportNamedDeclaration::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/module/exportSpecifier.cpp b/ets2panda/ir/module/exportSpecifier.cpp index 1c28d57fe5..f09fed57e5 100644 --- a/ets2panda/ir/module/exportSpecifier.cpp +++ b/ets2panda/ir/module/exportSpecifier.cpp @@ -15,9 +15,8 @@ #include "exportSpecifier.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/identifier.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -62,23 +61,4 @@ void ExportSpecifier::Dump(ir::SrcDumper *dumper) const } } -void ExportSpecifier::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ExportSpecifier::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ExportSpecifier::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ExportSpecifier::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/module/importDeclaration.cpp b/ets2panda/ir/module/importDeclaration.cpp index 161970f5f5..6ad579ea04 100644 --- a/ets2panda/ir/module/importDeclaration.cpp +++ b/ets2panda/ir/module/importDeclaration.cpp @@ -15,9 +15,8 @@ #include "importDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/literals/stringLiteral.h" + #include "ir/astDump.h" #include "ir/srcDump.h" #include "utils/arena_containers.h" @@ -85,26 +84,6 @@ void ImportDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Endl(); } -void ImportDeclaration::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ImportDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ImportDeclaration::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ImportDeclaration::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ImportDeclaration *ImportDeclaration::Construct(ArenaAllocator *allocator) { ArenaVector specifiers(allocator->Adapter()); diff --git a/ets2panda/ir/module/importDefaultSpecifier.cpp b/ets2panda/ir/module/importDefaultSpecifier.cpp index cd2c11fd56..b149216268 100644 --- a/ets2panda/ir/module/importDefaultSpecifier.cpp +++ b/ets2panda/ir/module/importDefaultSpecifier.cpp @@ -15,9 +15,8 @@ #include "importDefaultSpecifier.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/identifier.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -45,23 +44,4 @@ void ImportDefaultSpecifier::Dump(ir::SrcDumper *dumper) const local_->Dump(dumper); } -void ImportDefaultSpecifier::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ImportDefaultSpecifier::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ImportDefaultSpecifier::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ImportDefaultSpecifier::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/module/importNamespaceSpecifier.cpp b/ets2panda/ir/module/importNamespaceSpecifier.cpp index 4425928858..5703e123c1 100644 --- a/ets2panda/ir/module/importNamespaceSpecifier.cpp +++ b/ets2panda/ir/module/importNamespaceSpecifier.cpp @@ -15,9 +15,8 @@ #include "importNamespaceSpecifier.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/identifier.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -49,23 +48,4 @@ void ImportNamespaceSpecifier::Dump(ir::SrcDumper *dumper) const local_->Dump(dumper); } -void ImportNamespaceSpecifier::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ImportNamespaceSpecifier::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ImportNamespaceSpecifier::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ImportNamespaceSpecifier::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/module/importSpecifier.cpp b/ets2panda/ir/module/importSpecifier.cpp index fd79082120..2f33ea6864 100644 --- a/ets2panda/ir/module/importSpecifier.cpp +++ b/ets2panda/ir/module/importSpecifier.cpp @@ -15,9 +15,8 @@ #include "importSpecifier.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/identifier.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -59,22 +58,4 @@ void ImportSpecifier::Dump(ir::SrcDumper *dumper) const } } -void ImportSpecifier::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void ImportSpecifier::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ImportSpecifier::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ImportSpecifier::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/opaqueTypeNode.cpp b/ets2panda/ir/opaqueTypeNode.cpp index 0c4ebd8d9c..3163c1c148 100644 --- a/ets2panda/ir/opaqueTypeNode.cpp +++ b/ets2panda/ir/opaqueTypeNode.cpp @@ -14,9 +14,9 @@ */ #include "opaqueTypeNode.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" + +#include "checker/types/type.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -44,36 +44,6 @@ void OpaqueTypeNode::Dump(ir::SrcDumper *dumper) const dumper->Add(TsType()->ToString()); } -void OpaqueTypeNode::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void OpaqueTypeNode::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *OpaqueTypeNode::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *OpaqueTypeNode::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::Type *OpaqueTypeNode::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - return TsType(); -} - -checker::VerifiedType OpaqueTypeNode::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - void OpaqueTypeNode::CleanCheckInformation() {} void OpaqueTypeNode::CleanUp() {} diff --git a/ets2panda/ir/opaqueTypeNode.h b/ets2panda/ir/opaqueTypeNode.h index a5948b290d..490be304d9 100644 --- a/ets2panda/ir/opaqueTypeNode.h +++ b/ets2panda/ir/opaqueTypeNode.h @@ -45,7 +45,6 @@ public: void Compile([[maybe_unused]] compiler::PandaGen *pg) const override; void Compile([[maybe_unused]] compiler::ETSGen *etsg) const override; checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; checker::Type *GetType([[maybe_unused]] checker::ETSChecker *checker) override; void CleanCheckInformation() override; diff --git a/ets2panda/ir/srcDump.h b/ets2panda/ir/srcDump.h index 226108b506..cd4bb33652 100644 --- a/ets2panda/ir/srcDump.h +++ b/ets2panda/ir/srcDump.h @@ -16,7 +16,6 @@ #ifndef ES2PANDA_IR_SRCDUMP_H #define ES2PANDA_IR_SRCDUMP_H -#include #include #include "generated/tokenType.h" #include @@ -27,6 +26,8 @@ namespace ark::es2panda::ir { +class AstNode; + // Forward declarations class ClassDefinition; class TSTypeAliasDeclaration; diff --git a/ets2panda/ir/statements/annotationDeclaration.cpp b/ets2panda/ir/statements/annotationDeclaration.cpp index 3a63bbd8f8..5f62c1a884 100644 --- a/ets2panda/ir/statements/annotationDeclaration.cpp +++ b/ets2panda/ir/statements/annotationDeclaration.cpp @@ -14,9 +14,12 @@ */ #include "annotationDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" + +#include "ir/ets/etsTypeReference.h" +#include "ir/ets/etsTypeReferencePart.h" + +#include "ir/ts/tsClassImplements.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -125,25 +128,6 @@ void AnnotationDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Add("}"); dumper->Endl(); } -void AnnotationDeclaration::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void AnnotationDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *AnnotationDeclaration::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType AnnotationDeclaration::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} Identifier *AnnotationDeclaration::GetBaseName() const { diff --git a/ets2panda/ir/statements/annotationUsage.cpp b/ets2panda/ir/statements/annotationUsage.cpp index 2d22aed190..cfa48b8526 100644 --- a/ets2panda/ir/statements/annotationUsage.cpp +++ b/ets2panda/ir/statements/annotationUsage.cpp @@ -14,9 +14,11 @@ */ #include "annotationUsage.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" + +#include "ir/base/classProperty.h" +#include "ir/expressions/identifier.h" +#include "ir/ets/etsTypeReference.h" +#include "ir/ets/etsTypeReferencePart.h" namespace ark::es2panda::ir { void AnnotationUsage::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -95,26 +97,6 @@ AnnotationUsage *AnnotationUsage::Clone(ArenaAllocator *const allocator, AstNode return clone; } -void AnnotationUsage::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void AnnotationUsage::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *AnnotationUsage::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType AnnotationUsage::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - Identifier *AnnotationUsage::GetBaseName() const { if (expr_->IsIdentifier()) { diff --git a/ets2panda/ir/statements/assertStatement.cpp b/ets2panda/ir/statements/assertStatement.cpp index dce93e6570..941422a005 100644 --- a/ets2panda/ir/statements/assertStatement.cpp +++ b/ets2panda/ir/statements/assertStatement.cpp @@ -17,10 +17,7 @@ #include "varbinder/ETSBinder.h" #include "compiler/base/condition.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" + #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/expression.h" @@ -47,26 +44,6 @@ void AssertStatement::Dump([[maybe_unused]] ir::SrcDumper *dumper) const ES2PANDA_UNREACHABLE(); } -void AssertStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void AssertStatement::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *AssertStatement::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType AssertStatement::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - AssertStatement *AssertStatement::Clone([[maybe_unused]] ArenaAllocator *const allocator, [[maybe_unused]] AstNode *const parent) { diff --git a/ets2panda/ir/statements/blockStatement.cpp b/ets2panda/ir/statements/blockStatement.cpp index 63f18d40c1..f3a63654cd 100644 --- a/ets2panda/ir/statements/blockStatement.cpp +++ b/ets2panda/ir/statements/blockStatement.cpp @@ -15,14 +15,12 @@ #include "blockStatement.h" -#include "compiler/core/pandagen.h" #include "compiler/core/regScope.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" + #include "ir/astDump.h" #include "ir/srcDump.h" #include "utils/arena_containers.h" +#include "util/helpers.h" namespace ark::es2panda::ir { void BlockStatement::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -95,26 +93,6 @@ void BlockStatement::Dump(ir::SrcDumper *dumper) const } } -void BlockStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void BlockStatement::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *BlockStatement::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType BlockStatement::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - BlockStatement *BlockStatement::Construct(ArenaAllocator *allocator) { ArenaVector statementList(allocator->Adapter()); diff --git a/ets2panda/ir/statements/breakStatement.cpp b/ets2panda/ir/statements/breakStatement.cpp index afbca163d3..22e46e78e7 100644 --- a/ets2panda/ir/statements/breakStatement.cpp +++ b/ets2panda/ir/statements/breakStatement.cpp @@ -15,12 +15,11 @@ #include "breakStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" +#include "ir/expressions/identifier.h" + #include "ir/astDump.h" #include "ir/srcDump.h" -#include "checker/ETSchecker.h" +#include "util/helpers.h" namespace ark::es2panda::ir { void BreakStatement::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) @@ -55,26 +54,6 @@ void BreakStatement::Dump(ir::SrcDumper *dumper) const dumper->Add(";"); } -void BreakStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void BreakStatement::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *BreakStatement::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType BreakStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - BreakStatement *BreakStatement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const ident = ident_ != nullptr ? ident_->Clone(allocator, nullptr) : nullptr; diff --git a/ets2panda/ir/statements/classDeclaration.cpp b/ets2panda/ir/statements/classDeclaration.cpp index 2eb415d04b..39c9910a14 100644 --- a/ets2panda/ir/statements/classDeclaration.cpp +++ b/ets2panda/ir/statements/classDeclaration.cpp @@ -15,9 +15,8 @@ #include "classDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/base/classDefinition.h" + #include "ir/astDump.h" #include "ir/srcDump.h" #include @@ -70,23 +69,4 @@ void ClassDeclaration::Dump(ir::SrcDumper *dumper) const } } -void ClassDeclaration::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ClassDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ClassDeclaration::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ClassDeclaration::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/statements/continueStatement.cpp b/ets2panda/ir/statements/continueStatement.cpp index ab35d97e73..6375b0320f 100644 --- a/ets2panda/ir/statements/continueStatement.cpp +++ b/ets2panda/ir/statements/continueStatement.cpp @@ -15,9 +15,8 @@ #include "continueStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "util/helpers.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -54,26 +53,6 @@ void ContinueStatement::Dump(ir::SrcDumper *dumper) const dumper->Add(";"); } -void ContinueStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ContinueStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ContinueStatement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ContinueStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ContinueStatement *ContinueStatement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const ident = ident_ != nullptr ? ident_->Clone(allocator, nullptr) : nullptr; diff --git a/ets2panda/ir/statements/debuggerStatement.cpp b/ets2panda/ir/statements/debuggerStatement.cpp index fa84ad325d..67d348ac9e 100644 --- a/ets2panda/ir/statements/debuggerStatement.cpp +++ b/ets2panda/ir/statements/debuggerStatement.cpp @@ -15,9 +15,6 @@ #include "debuggerStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -39,23 +36,4 @@ void DebuggerStatement::Dump(ir::SrcDumper *dumper) const dumper->Add("DebuggerStatement"); } -void DebuggerStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void DebuggerStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *DebuggerStatement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType DebuggerStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/statements/doWhileStatement.cpp b/ets2panda/ir/statements/doWhileStatement.cpp index 58e70f28f5..5e376de270 100644 --- a/ets2panda/ir/statements/doWhileStatement.cpp +++ b/ets2panda/ir/statements/doWhileStatement.cpp @@ -19,12 +19,12 @@ #include "varbinder/scope.h" #include "compiler/base/condition.h" #include "compiler/core/labelTarget.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" + #include "ir/astDump.h" #include "ir/srcDump.h" +#include "util/helpers.h" + namespace ark::es2panda::ir { void DoWhileStatement::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) { @@ -68,26 +68,6 @@ void DoWhileStatement::Dump(ir::SrcDumper *dumper) const dumper->Add(")"); } -void DoWhileStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void DoWhileStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *DoWhileStatement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType DoWhileStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - DoWhileStatement *DoWhileStatement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const body = body_->Clone(allocator, nullptr)->AsStatement(); diff --git a/ets2panda/ir/statements/emptyStatement.cpp b/ets2panda/ir/statements/emptyStatement.cpp index e7e6c976b1..4aafa2cbe7 100644 --- a/ets2panda/ir/statements/emptyStatement.cpp +++ b/ets2panda/ir/statements/emptyStatement.cpp @@ -15,9 +15,6 @@ #include "emptyStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -39,31 +36,11 @@ void EmptyStatement::Dump(ir::SrcDumper *dumper) const dumper->Add(""); } -void EmptyStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void EmptyStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - bool EmptyStatement::IsBrokenStatement() { return isBrokenStatement_; } -checker::Type *EmptyStatement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType EmptyStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - [[nodiscard]] EmptyStatement *EmptyStatement::Clone(ArenaAllocator *allocator, AstNode *parent) { EmptyStatement *stmt = allocator->New(IsBrokenStatement()); diff --git a/ets2panda/ir/statements/expressionStatement.cpp b/ets2panda/ir/statements/expressionStatement.cpp index 58cbd0e3d1..a9d7c168b8 100644 --- a/ets2panda/ir/statements/expressionStatement.cpp +++ b/ets2panda/ir/statements/expressionStatement.cpp @@ -15,10 +15,6 @@ #include "expressionStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { void ExpressionStatement::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -59,23 +55,4 @@ ExpressionStatement *ExpressionStatement::Clone(ArenaAllocator *const allocator, return clone; } -void ExpressionStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ExpressionStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ExpressionStatement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ExpressionStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/statements/forInStatement.cpp b/ets2panda/ir/statements/forInStatement.cpp index 9436f75696..cfd789bb81 100644 --- a/ets2panda/ir/statements/forInStatement.cpp +++ b/ets2panda/ir/statements/forInStatement.cpp @@ -18,12 +18,12 @@ #include "varbinder/scope.h" #include "compiler/base/lreference.h" #include "compiler/core/labelTarget.h" -#include "compiler/core/pandagen.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" + #include "ir/astDump.h" #include "ir/srcDump.h" +#include "util/helpers.h" + namespace ark::es2panda::ir { void ForInStatement::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -60,26 +60,6 @@ void ForInStatement::Dump(ir::SrcDumper *dumper) const dumper->Add("ForInStatement"); } -void ForInStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ForInStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ForInStatement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ForInStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ForInStatement *ForInStatement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const left = left_->Clone(allocator, nullptr); diff --git a/ets2panda/ir/statements/forOfStatement.cpp b/ets2panda/ir/statements/forOfStatement.cpp index 6292698091..0f2de58354 100644 --- a/ets2panda/ir/statements/forOfStatement.cpp +++ b/ets2panda/ir/statements/forOfStatement.cpp @@ -15,9 +15,10 @@ #include "forOfStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" +#include "checker/ETSchecker.h" +#include "checker/types/ets/etsFunctionType.h" +#include "checker/types/ets/etsObjectType.h" +#include "checker/types/ets/etsUnionType.h" namespace ark::es2panda::ir { @@ -94,26 +95,6 @@ void ForOfStatement::Dump(ir::SrcDumper *dumper) const dumper->Add("}"); } -void ForOfStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ForOfStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ForOfStatement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ForOfStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ForOfStatement *ForOfStatement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const left = left_ != nullptr ? left_->Clone(allocator, nullptr) : nullptr; diff --git a/ets2panda/ir/statements/forUpdateStatement.cpp b/ets2panda/ir/statements/forUpdateStatement.cpp index cd0d2d5317..fa3c4a7c2a 100644 --- a/ets2panda/ir/statements/forUpdateStatement.cpp +++ b/ets2panda/ir/statements/forUpdateStatement.cpp @@ -18,12 +18,12 @@ #include "compiler/base/condition.h" #include "compiler/base/lreference.h" #include "compiler/core/labelTarget.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" + #include "ir/astDump.h" #include "ir/srcDump.h" +#include "util/helpers.h" + namespace ark::es2panda::ir { void ForUpdateStatement::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -105,26 +105,6 @@ void ForUpdateStatement::Dump(ir::SrcDumper *dumper) const dumper->Add("}"); } -void ForUpdateStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ForUpdateStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ForUpdateStatement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ForUpdateStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ForUpdateStatement *ForUpdateStatement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { ir::AstNode *init = nullptr; diff --git a/ets2panda/ir/statements/functionDeclaration.cpp b/ets2panda/ir/statements/functionDeclaration.cpp index a677ab5035..396ed8215e 100644 --- a/ets2panda/ir/statements/functionDeclaration.cpp +++ b/ets2panda/ir/statements/functionDeclaration.cpp @@ -16,11 +16,9 @@ #include "functionDeclaration.h" #include "varbinder/variable.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" + #include "ir/astDump.h" #include "ir/srcDump.h" -#include "compiler/core/pandagen.h" namespace ark::es2panda::ir { @@ -79,26 +77,6 @@ void FunctionDeclaration::Dump(ir::SrcDumper *dumper) const func->Dump(dumper); } -void FunctionDeclaration::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void FunctionDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *FunctionDeclaration::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType FunctionDeclaration::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - FunctionDeclaration *FunctionDeclaration::Construct(ArenaAllocator *allocator) { return allocator->New(allocator, nullptr); diff --git a/ets2panda/ir/statements/ifStatement.cpp b/ets2panda/ir/statements/ifStatement.cpp index 9b50804416..28708a9c73 100644 --- a/ets2panda/ir/statements/ifStatement.cpp +++ b/ets2panda/ir/statements/ifStatement.cpp @@ -15,11 +15,11 @@ #include "ifStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "util/helpers.h" +#include "ir/expression.h" namespace ark::es2panda::ir { + void IfStatement::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { if (auto *transformedNode = cb(test_); test_ != transformedNode) { @@ -82,26 +82,6 @@ void IfStatement::Dump(ir::SrcDumper *dumper) const } } -void IfStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void IfStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *IfStatement::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType IfStatement::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - IfStatement *IfStatement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const test = test_->Clone(allocator, nullptr)->AsExpression(); diff --git a/ets2panda/ir/statements/labelledStatement.cpp b/ets2panda/ir/statements/labelledStatement.cpp index 0a4f1c2b7f..68f1586aaa 100644 --- a/ets2panda/ir/statements/labelledStatement.cpp +++ b/ets2panda/ir/statements/labelledStatement.cpp @@ -15,12 +15,13 @@ #include "labelledStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/identifier.h" + #include "ir/astDump.h" #include "ir/srcDump.h" +#include "util/helpers.h" + namespace ark::es2panda::ir { void LabelledStatement::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -76,26 +77,6 @@ const ir::AstNode *LabelledStatement::GetReferencedStatement() const } } -void LabelledStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void LabelledStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *LabelledStatement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType LabelledStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - LabelledStatement *LabelledStatement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const ident = ident_->Clone(allocator, nullptr); diff --git a/ets2panda/ir/statements/loopStatement.cpp b/ets2panda/ir/statements/loopStatement.cpp index 1396aa3bec..31db45e258 100644 --- a/ets2panda/ir/statements/loopStatement.cpp +++ b/ets2panda/ir/statements/loopStatement.cpp @@ -19,9 +19,4 @@ #include "checker/checker.h" namespace ark::es2panda::ir { -checker::VerifiedType LoopStatement::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - ES2PANDA_UNREACHABLE(); - return {this, nullptr}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/statements/returnStatement.cpp b/ets2panda/ir/statements/returnStatement.cpp index a14d552090..55c6ab6657 100644 --- a/ets2panda/ir/statements/returnStatement.cpp +++ b/ets2panda/ir/statements/returnStatement.cpp @@ -15,9 +15,9 @@ #include "returnStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" +#include "checker/ETSchecker.h" + +#include "ir/base/scriptFunction.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -54,26 +54,6 @@ void ReturnStatement::Dump(ir::SrcDumper *dumper) const dumper->Add(";"); } -void ReturnStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ReturnStatement::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ReturnStatement::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ReturnStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - void ReturnStatement::SetReturnType(checker::ETSChecker *checker, checker::Type *type) { returnType_ = type; diff --git a/ets2panda/ir/statements/switchCaseStatement.cpp b/ets2panda/ir/statements/switchCaseStatement.cpp index 07d1b0d3af..7a130f9b00 100644 --- a/ets2panda/ir/statements/switchCaseStatement.cpp +++ b/ets2panda/ir/statements/switchCaseStatement.cpp @@ -15,9 +15,6 @@ #include "switchCaseStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "checker/ets/typeRelationContext.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -81,26 +78,6 @@ void SwitchCaseStatement::Dump(ir::SrcDumper *dumper) const } } -void SwitchCaseStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void SwitchCaseStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *SwitchCaseStatement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType SwitchCaseStatement::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - // Auxilary function extracted from the 'Check' method for 'SwitchStatement' to reduce function's size. void SwitchCaseStatement::CheckAndTestCase(checker::ETSChecker *checker, checker::Type *comparedExprType, checker::Type *unboxedDiscType, ir::Expression *node, bool &isDefaultCase) diff --git a/ets2panda/ir/statements/switchStatement.cpp b/ets2panda/ir/statements/switchStatement.cpp index c9bc019eaa..b76596b0d6 100644 --- a/ets2panda/ir/statements/switchStatement.cpp +++ b/ets2panda/ir/statements/switchStatement.cpp @@ -14,13 +14,13 @@ */ #include "switchStatement.h" +#include "ir/statements/switchCaseStatement.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" #include "ir/astDump.h" #include "ir/srcDump.h" +#include "util/helpers.h" + namespace ark::es2panda::ir { void SwitchStatement::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -71,26 +71,6 @@ void SwitchStatement::Dump(ir::SrcDumper *dumper) const dumper->Add("}"); } -void SwitchStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void SwitchStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *SwitchStatement::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType SwitchStatement::Check(checker::ETSChecker *const checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - SwitchStatement *SwitchStatement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const discriminant = discriminant_->Clone(allocator, nullptr)->AsExpression(); diff --git a/ets2panda/ir/statements/throwStatement.cpp b/ets2panda/ir/statements/throwStatement.cpp index ee2f446c43..1b0003f10a 100644 --- a/ets2panda/ir/statements/throwStatement.cpp +++ b/ets2panda/ir/statements/throwStatement.cpp @@ -15,9 +15,7 @@ #include "throwStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" +#include "ir/expression.h" namespace ark::es2panda::ir { void ThrowStatement::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) @@ -46,26 +44,6 @@ void ThrowStatement::Dump(ir::SrcDumper *dumper) const dumper->Add(";"); } -void ThrowStatement::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void ThrowStatement::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *ThrowStatement::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType ThrowStatement::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - ThrowStatement *ThrowStatement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const expression = argument_->Clone(allocator, nullptr)->AsExpression(); diff --git a/ets2panda/ir/statements/tryStatement.cpp b/ets2panda/ir/statements/tryStatement.cpp index acc5b4d085..76e07219ed 100644 --- a/ets2panda/ir/statements/tryStatement.cpp +++ b/ets2panda/ir/statements/tryStatement.cpp @@ -15,9 +15,6 @@ #include "tryStatement.h" -#include "checker/TSchecker.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" #include "compiler/core/dynamicContext.h" #include "compiler/base/catchTable.h" #include "ir/astDump.h" @@ -99,26 +96,6 @@ bool TryStatement::HasDefaultCatchClause() const return (!catchClauses_.empty() && catchClauses_.back()->IsDefaultCatchClause()); } -void TryStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TryStatement::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TryStatement::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TryStatement::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TryStatement::TryStatement(TryStatement const &other, ArenaAllocator *allocator) : Statement(other), catchClauses_(allocator->Adapter()), diff --git a/ets2panda/ir/statements/variableDeclaration.cpp b/ets2panda/ir/statements/variableDeclaration.cpp index ad2bc7f2e9..3478a00326 100644 --- a/ets2panda/ir/statements/variableDeclaration.cpp +++ b/ets2panda/ir/statements/variableDeclaration.cpp @@ -15,10 +15,6 @@ #include "variableDeclaration.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "utils/arena_containers.h" namespace ark::es2panda::ir { @@ -193,26 +189,6 @@ VariableDeclaration *VariableDeclaration::Clone(ArenaAllocator *const allocator, return clone; } -void VariableDeclaration::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void VariableDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *VariableDeclaration::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType VariableDeclaration::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - VariableDeclaration *VariableDeclaration::Construct(ArenaAllocator *allocator) { ArenaVector declarators(allocator->Adapter()); diff --git a/ets2panda/ir/statements/variableDeclarator.cpp b/ets2panda/ir/statements/variableDeclarator.cpp index 621d394dbd..1e363fdf20 100644 --- a/ets2panda/ir/statements/variableDeclarator.cpp +++ b/ets2panda/ir/statements/variableDeclarator.cpp @@ -15,10 +15,7 @@ #include "variableDeclarator.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" +#include "ir/typeNode.h" namespace ark::es2panda::ir { void VariableDeclarator::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) @@ -94,23 +91,4 @@ VariableDeclarator *VariableDeclarator::Clone(ArenaAllocator *const allocator, A return clone; } -void VariableDeclarator::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void VariableDeclarator::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *VariableDeclarator::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType VariableDeclarator::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/statements/whileStatement.cpp b/ets2panda/ir/statements/whileStatement.cpp index 5bdc886393..2b8eb313b7 100644 --- a/ets2panda/ir/statements/whileStatement.cpp +++ b/ets2panda/ir/statements/whileStatement.cpp @@ -17,14 +17,15 @@ #include "compiler/base/condition.h" #include "compiler/core/labelTarget.h" -#include "compiler/core/pandagen.h" -#include "compiler/core/ETSGen.h" + #include "compiler/core/regScope.h" -#include "checker/TSchecker.h" + #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/expression.h" +#include "util/helpers.h" + namespace ark::es2panda::ir { void WhileStatement::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -67,26 +68,6 @@ void WhileStatement::Dump(ir::SrcDumper *dumper) const dumper->Add("}"); } -void WhileStatement::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void WhileStatement::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *WhileStatement::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType WhileStatement::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - WhileStatement *WhileStatement::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const test = test_->Clone(allocator, nullptr)->AsExpression(); diff --git a/ets2panda/ir/ts/tsAnyKeyword.cpp b/ets2panda/ir/ts/tsAnyKeyword.cpp index d2e6f05057..2eea5a59e5 100644 --- a/ets2panda/ir/ts/tsAnyKeyword.cpp +++ b/ets2panda/ir/ts/tsAnyKeyword.cpp @@ -15,9 +15,6 @@ #include "tsAnyKeyword.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -44,28 +41,4 @@ void TSAnyKeyword::Dump(ir::SrcDumper *dumper) const dumper->Add("TSAnyKeyword"); } -void TSAnyKeyword::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSAnyKeyword::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSAnyKeyword::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSAnyKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalAnyType(); -} - -checker::VerifiedType TSAnyKeyword::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsArrayType.cpp b/ets2panda/ir/ts/tsArrayType.cpp index 970e276230..610e671f50 100644 --- a/ets2panda/ir/ts/tsArrayType.cpp +++ b/ets2panda/ir/ts/tsArrayType.cpp @@ -15,11 +15,6 @@ #include "tsArrayType.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" - namespace ark::es2panda::ir { void TSArrayType::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -58,41 +53,6 @@ void TSArrayType::Dump(ir::SrcDumper *dumper) const dumper->Add("[]"); } -void TSArrayType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSArrayType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSArrayType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSArrayType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->Allocator()->New(elementType_->GetType(checker)); -} - -checker::VerifiedType TSArrayType::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *TSArrayType::GetType(checker::ETSChecker *checker) -{ - checker::Type *type = checker->CreateETSArrayType(elementType_->GetType(checker), IsReadonlyType()); - if (IsReadonlyType()) { - type = checker->GetReadonlyType(type); - } - SetTsType(type); - return type; -} - TSArrayType *TSArrayType::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const elementTypeClone = elementType_ != nullptr ? elementType_->Clone(allocator, nullptr) : nullptr; diff --git a/ets2panda/ir/ts/tsAsExpression.cpp b/ets2panda/ir/ts/tsAsExpression.cpp index 90f1c4efca..089461a8fd 100644 --- a/ets2panda/ir/ts/tsAsExpression.cpp +++ b/ets2panda/ir/ts/tsAsExpression.cpp @@ -15,10 +15,9 @@ #include "tsAsExpression.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/typeNode.h" + +#include "parser/program/program.h" namespace ark::es2panda::ir { Expression *TSAsExpression::Expr() noexcept @@ -70,26 +69,6 @@ void TSAsExpression::Dump(ir::SrcDumper *dumper) const dumper->Add(")"); } -void TSAsExpression::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSAsExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSAsExpression::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSAsExpression::Check(checker::ETSChecker *const checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSAsExpression *TSAsExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const expression = expression_ != nullptr ? expression_->Clone(allocator, nullptr)->AsExpression() : nullptr; diff --git a/ets2panda/ir/ts/tsBigintKeyword.cpp b/ets2panda/ir/ts/tsBigintKeyword.cpp index ce2950480b..f9a9e715fc 100644 --- a/ets2panda/ir/ts/tsBigintKeyword.cpp +++ b/ets2panda/ir/ts/tsBigintKeyword.cpp @@ -15,12 +15,8 @@ #include "tsBigintKeyword.h" -#include "checker/ETSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" -#include "checker/TSchecker.h" namespace ark::es2panda::ir { void TSBigintKeyword::TransformChildren([[maybe_unused]] const NodeTransformer &cb, @@ -45,27 +41,4 @@ void TSBigintKeyword::Dump(ir::SrcDumper *dumper) const dumper->Add("TSBigintKeyword"); } -void TSBigintKeyword::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSBigintKeyword::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSBigintKeyword::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSBigintKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalBigintType(); -} - -checker::VerifiedType TSBigintKeyword::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsBooleanKeyword.cpp b/ets2panda/ir/ts/tsBooleanKeyword.cpp index 62244a79bb..dc0794f152 100644 --- a/ets2panda/ir/ts/tsBooleanKeyword.cpp +++ b/ets2panda/ir/ts/tsBooleanKeyword.cpp @@ -15,9 +15,6 @@ #include "tsBooleanKeyword.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -44,31 +41,6 @@ void TSBooleanKeyword::Dump(ir::SrcDumper *dumper) const dumper->Add("TSBooleanKeyword"); } -void TSBooleanKeyword::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSBooleanKeyword::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSBooleanKeyword::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSBooleanKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalBooleanType(); -} - -checker::VerifiedType TSBooleanKeyword::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSBooleanKeyword *TSBooleanKeyword::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *clone = allocator->New(allocator); diff --git a/ets2panda/ir/ts/tsClassImplements.cpp b/ets2panda/ir/ts/tsClassImplements.cpp index dfe2da11df..cdc8c35b46 100644 --- a/ets2panda/ir/ts/tsClassImplements.cpp +++ b/ets2panda/ir/ts/tsClassImplements.cpp @@ -15,9 +15,6 @@ #include "tsClassImplements.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/ts/tsTypeParameter.h" @@ -54,23 +51,4 @@ void TSClassImplements::Dump(ir::SrcDumper *dumper) const ES2PANDA_ASSERT(typeParameters_ == nullptr); } -void TSClassImplements::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSClassImplements::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSClassImplements::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSClassImplements::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsConditionalType.cpp b/ets2panda/ir/ts/tsConditionalType.cpp index 4e5e61df52..da1732054a 100644 --- a/ets2panda/ir/ts/tsConditionalType.cpp +++ b/ets2panda/ir/ts/tsConditionalType.cpp @@ -15,9 +15,6 @@ #include "tsConditionalType.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -72,27 +69,4 @@ void TSConditionalType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSConditionalType"); } -void TSConditionalType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSConditionalType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSConditionalType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSConditionalType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType TSConditionalType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsConditionalType.h b/ets2panda/ir/ts/tsConditionalType.h index 0750383584..aee95878e4 100644 --- a/ets2panda/ir/ts/tsConditionalType.h +++ b/ets2panda/ir/ts/tsConditionalType.h @@ -58,7 +58,6 @@ public: void Compile([[maybe_unused]] compiler::PandaGen *pg) const override; void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; void Accept(ASTVisitorT *v) override diff --git a/ets2panda/ir/ts/tsConstructorType.cpp b/ets2panda/ir/ts/tsConstructorType.cpp index 0320d2f8c8..4e6768266a 100644 --- a/ets2panda/ir/ts/tsConstructorType.cpp +++ b/ets2panda/ir/ts/tsConstructorType.cpp @@ -15,10 +15,8 @@ #include "tsConstructorType.h" -#include "checker/TSchecker.h" #include "checker/types/signature.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -51,27 +49,4 @@ void TSConstructorType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSConstructorType"); } -void TSConstructorType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSConstructorType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSConstructorType::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSConstructorType::GetType(checker::TSChecker *checker) -{ - return checker->CheckTypeCached(this); -} - -checker::VerifiedType TSConstructorType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsEnumDeclaration.cpp b/ets2panda/ir/ts/tsEnumDeclaration.cpp index dbad8fa2ef..5efc4762ef 100644 --- a/ets2panda/ir/ts/tsEnumDeclaration.cpp +++ b/ets2panda/ir/ts/tsEnumDeclaration.cpp @@ -16,10 +16,10 @@ #include "tsEnumDeclaration.h" #include -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "util/helpers.h" +#include "ir/expressions/identifier.h" +#include "ir/expressions/memberExpression.h" +#include "ir/expressions/literals/stringLiteral.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "utils/arena_containers.h" @@ -132,48 +132,6 @@ void TSEnumDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Endl(); } -// NOTE (csabahurton): this method has not been moved to TSAnalyizer.cpp, because it is not used. -varbinder::EnumMemberResult EvaluateMemberExpression(checker::TSChecker *checker, - [[maybe_unused]] varbinder::EnumVariable *enumVar, - ir::MemberExpression *expr) -{ - if (checker::TSChecker::IsConstantMemberAccess(expr->AsExpression())) { - if (expr->Check(checker)->TypeFlags() == checker::TypeFlag::ENUM) { - util::StringView name; - if (!expr->IsComputed()) { - name = expr->Property()->AsIdentifier()->Name(); - } else { - ES2PANDA_ASSERT(checker::TSChecker::IsStringLike(expr->Property())); - name = reinterpret_cast(expr->Property())->Str(); - } - - // NOTE: aszilagyi. - } - } - - return false; -} - -void TSEnumDeclaration::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSEnumDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSEnumDeclaration::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSEnumDeclaration::Check(checker::ETSChecker *const checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSEnumDeclaration *TSEnumDeclaration::Construct(ArenaAllocator *allocator) { ArenaVector members(allocator->Adapter()); diff --git a/ets2panda/ir/ts/tsEnumMember.cpp b/ets2panda/ir/ts/tsEnumMember.cpp index f4f126095a..b567d1231e 100644 --- a/ets2panda/ir/ts/tsEnumMember.cpp +++ b/ets2panda/ir/ts/tsEnumMember.cpp @@ -15,9 +15,9 @@ #include "tsEnumMember.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expression.h" +#include "ir/expressions/identifier.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -67,23 +67,4 @@ util::StringView TSEnumMember::Name() const return key_->AsIdentifier()->Name(); } -void TSEnumMember::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSEnumMember::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSEnumMember::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSEnumMember::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsExternalModuleReference.cpp b/ets2panda/ir/ts/tsExternalModuleReference.cpp index 12207c3d4f..ffb9780e57 100644 --- a/ets2panda/ir/ts/tsExternalModuleReference.cpp +++ b/ets2panda/ir/ts/tsExternalModuleReference.cpp @@ -15,9 +15,6 @@ #include "tsExternalModuleReference.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -45,23 +42,4 @@ void TSExternalModuleReference::Dump(ir::SrcDumper *dumper) const dumper->Add("TSExternalModuleReference"); } -void TSExternalModuleReference::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSExternalModuleReference::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSExternalModuleReference::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSExternalModuleReference::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsFunctionType.cpp b/ets2panda/ir/ts/tsFunctionType.cpp index e12589bd31..9b3990f3d9 100644 --- a/ets2panda/ir/ts/tsFunctionType.cpp +++ b/ets2panda/ir/ts/tsFunctionType.cpp @@ -15,11 +15,9 @@ #include "tsFunctionType.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" #include "checker/types/signature.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" + +#include "ir/ts/tsTypeParameterDeclaration.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -51,35 +49,6 @@ void TSFunctionType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSFunctionType"); } -void TSFunctionType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSFunctionType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSFunctionType::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSFunctionType::GetType(checker::TSChecker *checker) -{ - return checker->CheckTypeCached(this); -} - -checker::VerifiedType TSFunctionType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *TSFunctionType::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - return nullptr; -} - TSFunctionType *TSFunctionType::Clone(ArenaAllocator *allocator, AstNode *parent) { // Clone the function signature diff --git a/ets2panda/ir/ts/tsFunctionType.h b/ets2panda/ir/ts/tsFunctionType.h index dcf8375b4c..33363543a8 100644 --- a/ets2panda/ir/ts/tsFunctionType.h +++ b/ets2panda/ir/ts/tsFunctionType.h @@ -93,7 +93,6 @@ public: checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::ETSChecker *checker) override; TSFunctionType *Clone(ArenaAllocator *allocator, AstNode *parent) override; diff --git a/ets2panda/ir/ts/tsImportEqualsDeclaration.cpp b/ets2panda/ir/ts/tsImportEqualsDeclaration.cpp index efaa388380..07cdfd8b7e 100644 --- a/ets2panda/ir/ts/tsImportEqualsDeclaration.cpp +++ b/ets2panda/ir/ts/tsImportEqualsDeclaration.cpp @@ -15,9 +15,6 @@ #include "tsImportEqualsDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/expression.h" @@ -56,22 +53,4 @@ void TSImportEqualsDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Add("TSImportEqualsDeclaration"); } -void TSImportEqualsDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSImportEqualsDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSImportEqualsDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSImportEqualsDeclaration::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsImportType.cpp b/ets2panda/ir/ts/tsImportType.cpp index 5762b63a59..9d8715501f 100644 --- a/ets2panda/ir/ts/tsImportType.cpp +++ b/ets2panda/ir/ts/tsImportType.cpp @@ -15,9 +15,6 @@ #include "tsImportType.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/ts/tsTypeParameter.h" @@ -79,28 +76,4 @@ void TSImportType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSImportType"); } -void TSImportType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSImportType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSImportType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSImportType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType TSImportType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsImportType.h b/ets2panda/ir/ts/tsImportType.h index f57b659efd..fdd2966d80 100644 --- a/ets2panda/ir/ts/tsImportType.h +++ b/ets2panda/ir/ts/tsImportType.h @@ -60,7 +60,6 @@ public: void Compile([[maybe_unused]] compiler::PandaGen *pg) const override; void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; void Accept(ASTVisitorT *v) override diff --git a/ets2panda/ir/ts/tsIndexedAccessType.cpp b/ets2panda/ir/ts/tsIndexedAccessType.cpp index 73270348c9..1451f319eb 100644 --- a/ets2panda/ir/ts/tsIndexedAccessType.cpp +++ b/ets2panda/ir/ts/tsIndexedAccessType.cpp @@ -15,13 +15,9 @@ #include "tsIndexedAccessType.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" -#include "checker/TSchecker.h" - namespace ark::es2panda::ir { void TSIndexedAccessType::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -58,39 +54,6 @@ void TSIndexedAccessType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSIndexedAccessType"); } -void TSIndexedAccessType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSIndexedAccessType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSIndexedAccessType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSIndexedAccessType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - if (TsType() != nullptr) { - return TsType(); - } - - checker::Type *baseType = objectType_->GetType(checker); - checker::Type *indexType = indexType_->GetType(checker); - checker::Type *resolved = checker->GetPropertyTypeForIndexType(baseType, indexType); - - SetTsType(resolved); - return TsType(); -} - -checker::VerifiedType TSIndexedAccessType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSIndexedAccessType *TSIndexedAccessType::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *clonedObjectType = objectType_->Clone(allocator, nullptr)->AsTypeNode(); diff --git a/ets2panda/ir/ts/tsInferType.cpp b/ets2panda/ir/ts/tsInferType.cpp index 98d102636e..fa582af5c5 100644 --- a/ets2panda/ir/ts/tsInferType.cpp +++ b/ets2panda/ir/ts/tsInferType.cpp @@ -15,9 +15,6 @@ #include "tsInferType.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/ts/tsTypeParameter.h" @@ -51,27 +48,4 @@ void TSInferType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSInferType"); } -void TSInferType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSInferType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSInferType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSInferType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType TSInferType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsInferType.h b/ets2panda/ir/ts/tsInferType.h index 64057b5ae8..8081d597fe 100644 --- a/ets2panda/ir/ts/tsInferType.h +++ b/ets2panda/ir/ts/tsInferType.h @@ -40,7 +40,6 @@ public: void Compile([[maybe_unused]] compiler::PandaGen *pg) const override; void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; void Accept(ASTVisitorT *v) override diff --git a/ets2panda/ir/ts/tsInterfaceBody.cpp b/ets2panda/ir/ts/tsInterfaceBody.cpp index 94c56deddb..2a258cc3e8 100644 --- a/ets2panda/ir/ts/tsInterfaceBody.cpp +++ b/ets2panda/ir/ts/tsInterfaceBody.cpp @@ -15,9 +15,6 @@ #include "tsInterfaceBody.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -52,23 +49,4 @@ void TSInterfaceBody::Dump(ir::SrcDumper *dumper) const } } -void TSInterfaceBody::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSInterfaceBody::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSInterfaceBody::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSInterfaceBody::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsInterfaceDeclaration.cpp b/ets2panda/ir/ts/tsInterfaceDeclaration.cpp index bd793e5a9c..14c4c40bfd 100644 --- a/ets2panda/ir/ts/tsInterfaceDeclaration.cpp +++ b/ets2panda/ir/ts/tsInterfaceDeclaration.cpp @@ -19,10 +19,7 @@ #include "utils/arena_containers.h" #include "varbinder/declaration.h" #include "varbinder/variable.h" -#include "checker/TSchecker.h" -#include "checker/ETSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -225,26 +222,6 @@ void TSInterfaceDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Endl(); } -void TSInterfaceDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSInterfaceDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSInterfaceDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSInterfaceDeclaration::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSInterfaceDeclaration *TSInterfaceDeclaration::Construct(ArenaAllocator *allocator) { ArenaVector extends(allocator->Adapter()); diff --git a/ets2panda/ir/ts/tsInterfaceHeritage.cpp b/ets2panda/ir/ts/tsInterfaceHeritage.cpp index c87aff667f..e0bc3c78dc 100644 --- a/ets2panda/ir/ts/tsInterfaceHeritage.cpp +++ b/ets2panda/ir/ts/tsInterfaceHeritage.cpp @@ -15,9 +15,8 @@ #include "tsInterfaceHeritage.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/typeNode.h" + #include "ir/astDump.h" #include "ir/srcDump.h" @@ -49,23 +48,4 @@ void TSInterfaceHeritage::Dump(ir::SrcDumper *dumper) const expr_->Dump(dumper); } -void TSInterfaceHeritage::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSInterfaceHeritage::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSInterfaceHeritage::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSInterfaceHeritage::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsIntersectionType.cpp b/ets2panda/ir/ts/tsIntersectionType.cpp index 8305344470..0ac5e34927 100644 --- a/ets2panda/ir/ts/tsIntersectionType.cpp +++ b/ets2panda/ir/ts/tsIntersectionType.cpp @@ -15,12 +15,10 @@ #include "tsIntersectionType.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "checker/types/ets/etsObjectType.h" + #include "ir/astDump.h" #include "ir/srcDump.h" -#include "checker/ETSchecker.h" namespace ark::es2panda::ir { void TSIntersectionType::TransformChildren(const NodeTransformer &cb, std::string_view const transformationName) @@ -56,33 +54,4 @@ void TSIntersectionType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSIntersectionType"); } -void TSIntersectionType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSIntersectionType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSIntersectionType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSIntersectionType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::Type *TSIntersectionType::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - // NOTE: validate - return checker->GlobalETSObjectType(); -} - -checker::VerifiedType TSIntersectionType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsIntersectionType.h b/ets2panda/ir/ts/tsIntersectionType.h index 11abbca848..9ab16d37aa 100644 --- a/ets2panda/ir/ts/tsIntersectionType.h +++ b/ets2panda/ir/ts/tsIntersectionType.h @@ -38,7 +38,6 @@ public: void Compile([[maybe_unused]] compiler::PandaGen *pg) const override; void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::Type *GetType([[maybe_unused]] checker::ETSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; diff --git a/ets2panda/ir/ts/tsLiteralType.cpp b/ets2panda/ir/ts/tsLiteralType.cpp index 5ea315e81b..7ec8070554 100644 --- a/ets2panda/ir/ts/tsLiteralType.cpp +++ b/ets2panda/ir/ts/tsLiteralType.cpp @@ -15,11 +15,8 @@ #include "tsLiteralType.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" -#include "checker/TSchecker.h" namespace ark::es2panda::ir { void TSLiteralType::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) @@ -50,36 +47,6 @@ void TSLiteralType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSLiteralType"); } -void TSLiteralType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSLiteralType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSLiteralType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSLiteralType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - if (TsType() != nullptr) { - return TsType(); - } - - SetTsType(literal_->Check(checker)); - return TsType(); -} - -checker::VerifiedType TSLiteralType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSLiteralType *TSLiteralType::Clone(ArenaAllocator *allocator, AstNode *parent) { // Clone the literal expression diff --git a/ets2panda/ir/ts/tsMappedType.cpp b/ets2panda/ir/ts/tsMappedType.cpp index 393e8ec921..c9678a9685 100644 --- a/ets2panda/ir/ts/tsMappedType.cpp +++ b/ets2panda/ir/ts/tsMappedType.cpp @@ -15,9 +15,6 @@ #include "tsMappedType.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/typeNode.h" @@ -71,30 +68,6 @@ void TSMappedType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSMappedType"); } -void TSMappedType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSMappedType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSMappedType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSMappedType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType TSMappedType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSMappedType *TSMappedType::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *clonedTypeParameter = typeParameter_->Clone(allocator, nullptr)->AsTSTypeParameter(); diff --git a/ets2panda/ir/ts/tsMappedType.h b/ets2panda/ir/ts/tsMappedType.h index 0b2faa31d0..e8fbbcf825 100644 --- a/ets2panda/ir/ts/tsMappedType.h +++ b/ets2panda/ir/ts/tsMappedType.h @@ -59,7 +59,6 @@ public: void Compile([[maybe_unused]] compiler::PandaGen *pg) const override; void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; TSMappedType *Clone(ArenaAllocator *allocator, AstNode *parent) override; diff --git a/ets2panda/ir/ts/tsModuleBlock.cpp b/ets2panda/ir/ts/tsModuleBlock.cpp index db77f5dee4..7f5c6913fe 100644 --- a/ets2panda/ir/ts/tsModuleBlock.cpp +++ b/ets2panda/ir/ts/tsModuleBlock.cpp @@ -15,9 +15,6 @@ #include "tsModuleBlock.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -49,22 +46,4 @@ void TSModuleBlock::Dump(ir::SrcDumper *dumper) const dumper->Add("TSModuleBlock"); } -void TSModuleBlock::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSModuleBlock::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSModuleBlock::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSModuleBlock::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsModuleDeclaration.cpp b/ets2panda/ir/ts/tsModuleDeclaration.cpp index 0f90e8f8e0..1b9098caa9 100644 --- a/ets2panda/ir/ts/tsModuleDeclaration.cpp +++ b/ets2panda/ir/ts/tsModuleDeclaration.cpp @@ -15,9 +15,6 @@ #include "tsModuleDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -57,23 +54,4 @@ void TSModuleDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Add("TSModuleDeclaration"); } -void TSModuleDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSModuleDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSModuleDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSModuleDeclaration::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsNamedTupleMember.cpp b/ets2panda/ir/ts/tsNamedTupleMember.cpp index 26a2ad54af..50124d9355 100644 --- a/ets2panda/ir/ts/tsNamedTupleMember.cpp +++ b/ets2panda/ir/ts/tsNamedTupleMember.cpp @@ -15,10 +15,6 @@ #include "tsNamedTupleMember.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -60,23 +56,4 @@ void TSNamedTupleMember::Dump(ir::SrcDumper *dumper) const dumper->Add("TSNamedTupleMember"); } -void TSNamedTupleMember::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSNamedTupleMember::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSNamedTupleMember::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSNamedTupleMember::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsNeverKeyword.cpp b/ets2panda/ir/ts/tsNeverKeyword.cpp index cca5897610..7cc1340e6a 100644 --- a/ets2panda/ir/ts/tsNeverKeyword.cpp +++ b/ets2panda/ir/ts/tsNeverKeyword.cpp @@ -15,11 +15,8 @@ #include "tsNeverKeyword.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" -#include "checker/TSchecker.h" namespace ark::es2panda::ir { void TSNeverKeyword::TransformChildren([[maybe_unused]] const NodeTransformer &cb, @@ -44,28 +41,4 @@ void TSNeverKeyword::Dump(ir::SrcDumper *dumper) const dumper->Add("TSNeverKeyword"); } -void TSNeverKeyword::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSNeverKeyword::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSNeverKeyword::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSNeverKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalNeverType(); -} - -checker::VerifiedType TSNeverKeyword::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsNonNullExpression.cpp b/ets2panda/ir/ts/tsNonNullExpression.cpp index 61768c5e4c..99ba4aae42 100644 --- a/ets2panda/ir/ts/tsNonNullExpression.cpp +++ b/ets2panda/ir/ts/tsNonNullExpression.cpp @@ -15,11 +15,6 @@ #include "tsNonNullExpression.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { void TSNonNullExpression::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) { @@ -46,26 +41,6 @@ void TSNonNullExpression::Dump(ir::SrcDumper *dumper) const dumper->Add("!"); } -void TSNonNullExpression::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSNonNullExpression::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSNonNullExpression::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSNonNullExpression::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSNonNullExpression *TSNonNullExpression::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const expr = expr_->Clone(allocator, nullptr)->AsExpression(); diff --git a/ets2panda/ir/ts/tsNullKeyword.cpp b/ets2panda/ir/ts/tsNullKeyword.cpp index c8789804e5..ed6a7c4ab4 100644 --- a/ets2panda/ir/ts/tsNullKeyword.cpp +++ b/ets2panda/ir/ts/tsNullKeyword.cpp @@ -15,11 +15,8 @@ #include "tsNullKeyword.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" -#include "checker/TSchecker.h" namespace ark::es2panda::ir { void TSNullKeyword::TransformChildren([[maybe_unused]] const NodeTransformer &cb, @@ -44,27 +41,4 @@ void TSNullKeyword::Dump(ir::SrcDumper *dumper) const dumper->Add("TSNullKeyword"); } -void TSNullKeyword::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSNullKeyword::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSNullKeyword::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSNullKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalNullType(); -} - -checker::VerifiedType TSNullKeyword::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsNumberKeyword.cpp b/ets2panda/ir/ts/tsNumberKeyword.cpp index c6752bc8ac..ca5627d2fb 100644 --- a/ets2panda/ir/ts/tsNumberKeyword.cpp +++ b/ets2panda/ir/ts/tsNumberKeyword.cpp @@ -15,9 +15,6 @@ #include "tsNumberKeyword.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -44,31 +41,6 @@ void TSNumberKeyword::Dump(ir::SrcDumper *dumper) const dumper->Add("TSNumberKeyword"); } -void TSNumberKeyword::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSNumberKeyword::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSNumberKeyword::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSNumberKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalNumberType(); -} - -checker::VerifiedType TSNumberKeyword::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSNumberKeyword *TSNumberKeyword::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *clone = allocator->New(allocator); diff --git a/ets2panda/ir/ts/tsObjectKeyword.cpp b/ets2panda/ir/ts/tsObjectKeyword.cpp index 5eacf64462..5f8845d8f6 100644 --- a/ets2panda/ir/ts/tsObjectKeyword.cpp +++ b/ets2panda/ir/ts/tsObjectKeyword.cpp @@ -15,9 +15,6 @@ #include "tsObjectKeyword.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -44,28 +41,4 @@ void TSObjectKeyword::Dump(ir::SrcDumper *dumper) const dumper->Add("TSObjectKeyword"); } -void TSObjectKeyword::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSObjectKeyword::Compile([[maybe_unused]] compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSObjectKeyword::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSObjectKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalNonPrimitiveType(); -} - -checker::VerifiedType TSObjectKeyword::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsParameterProperty.cpp b/ets2panda/ir/ts/tsParameterProperty.cpp index 047484053f..f0edc761f0 100644 --- a/ets2panda/ir/ts/tsParameterProperty.cpp +++ b/ets2panda/ir/ts/tsParameterProperty.cpp @@ -15,9 +15,6 @@ #include "tsParameterProperty.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/expression.h" @@ -54,22 +51,4 @@ void TSParameterProperty::Dump(ir::SrcDumper *dumper) const dumper->Add("TSParameterProperty"); } -void TSParameterProperty::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSParameterProperty::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSParameterProperty::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSParameterProperty::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsParenthesizedType.cpp b/ets2panda/ir/ts/tsParenthesizedType.cpp index 5e2ed2f554..bbcad566e9 100644 --- a/ets2panda/ir/ts/tsParenthesizedType.cpp +++ b/ets2panda/ir/ts/tsParenthesizedType.cpp @@ -15,11 +15,8 @@ #include "tsParenthesizedType.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" -#include "checker/TSchecker.h" namespace ark::es2panda::ir { void TSParenthesizedType::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) @@ -51,33 +48,4 @@ void TSParenthesizedType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSParenthesizedType"); } -void TSParenthesizedType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSParenthesizedType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSParenthesizedType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSParenthesizedType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - if (TsType() != nullptr) { - return TsType(); - } - - SetTsType(type_->GetType(checker)); - return TsType(); -} - -checker::VerifiedType TSParenthesizedType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsQualifiedName.cpp b/ets2panda/ir/ts/tsQualifiedName.cpp index f47595f293..6eb6023ddd 100644 --- a/ets2panda/ir/ts/tsQualifiedName.cpp +++ b/ets2panda/ir/ts/tsQualifiedName.cpp @@ -15,10 +15,7 @@ #include "tsQualifiedName.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "ir/expressions/identifier.h" namespace ark::es2panda::ir { TSQualifiedName::TSQualifiedName(Expression *left, Identifier *right, ArenaAllocator *allocator) @@ -67,25 +64,6 @@ void TSQualifiedName::Dump(ir::SrcDumper *dumper) const right_->Dump(dumper); } -void TSQualifiedName::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSQualifiedName::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSQualifiedName::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSQualifiedName::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - util::StringView TSQualifiedName::Name() const { util::UString packageName(allocator_); diff --git a/ets2panda/ir/ts/tsStringKeyword.cpp b/ets2panda/ir/ts/tsStringKeyword.cpp index aa9f5fc9f8..0f1f4b9f49 100644 --- a/ets2panda/ir/ts/tsStringKeyword.cpp +++ b/ets2panda/ir/ts/tsStringKeyword.cpp @@ -15,9 +15,6 @@ #include "tsStringKeyword.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -44,31 +41,6 @@ void TSStringKeyword::Dump(ir::SrcDumper *dumper) const dumper->Add("TSStringKeyword"); } -void TSStringKeyword::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSStringKeyword::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSStringKeyword::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSStringKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalStringType(); -} - -checker::VerifiedType TSStringKeyword::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSStringKeyword *TSStringKeyword::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *clone = allocator->New(allocator); diff --git a/ets2panda/ir/ts/tsThisType.cpp b/ets2panda/ir/ts/tsThisType.cpp index ded68e430b..774648ce3e 100644 --- a/ets2panda/ir/ts/tsThisType.cpp +++ b/ets2panda/ir/ts/tsThisType.cpp @@ -15,10 +15,7 @@ #include "tsThisType.h" -#include "checker/ETSchecker.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" +#include "checker/types/ets/etsObjectType.h" namespace ark::es2panda::ir { void TSThisType::TransformChildren([[maybe_unused]] const NodeTransformer &cb, @@ -42,39 +39,6 @@ void TSThisType::Dump(ir::SrcDumper *dumper) const dumper->Add("this"); } -void TSThisType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSThisType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSThisType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSThisType::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType TSThisType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *TSThisType::GetType([[maybe_unused]] checker::ETSChecker *checker) -{ - auto *containingClass = checker->Context().ContainingClass(); - if (containingClass == nullptr) { - return checker->GlobalTypeError(); - } - return containingClass; -} - TSThisType *TSThisType::Clone(ArenaAllocator *const allocator, AstNode *const parent) { auto *const clone = allocator->New(allocator); diff --git a/ets2panda/ir/ts/tsThisType.h b/ets2panda/ir/ts/tsThisType.h index e5367ce02f..43e88d8450 100644 --- a/ets2panda/ir/ts/tsThisType.h +++ b/ets2panda/ir/ts/tsThisType.h @@ -30,7 +30,6 @@ public: void Compile([[maybe_unused]] compiler::PandaGen *pg) const override; void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; checker::Type *GetType([[maybe_unused]] checker::ETSChecker *checker) override; TSThisType *Clone(ArenaAllocator *allocator, AstNode *parent) override; diff --git a/ets2panda/ir/ts/tsTupleType.cpp b/ets2panda/ir/ts/tsTupleType.cpp index 26691a49de..4581862f04 100644 --- a/ets2panda/ir/ts/tsTupleType.cpp +++ b/ets2panda/ir/ts/tsTupleType.cpp @@ -15,10 +15,9 @@ #include "tsTupleType.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "util/helpers.h" #include "varbinder/scope.h" + #include "checker/TSchecker.h" #include "checker/types/ts/indexInfo.h" #include "ir/astDump.h" @@ -61,16 +60,6 @@ void TSTupleType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSTupleType"); } -void TSTupleType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSTupleType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - checker::Type *GetNumberIndexType(ArenaVector numberIndexTypes, checker::TSChecker *checker) { checker::Type *numberIndexType = nullptr; @@ -152,16 +141,6 @@ checker::Type *TSTupleType::GetType(checker::TSChecker *checker) return TsType(); } -checker::Type *TSTupleType::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSTupleType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSTupleType *TSTupleType::Clone(ArenaAllocator *allocator, AstNode *parent) { ArenaVector clonedElementTypes(allocator->Adapter()); diff --git a/ets2panda/ir/ts/tsTypeAliasDeclaration.cpp b/ets2panda/ir/ts/tsTypeAliasDeclaration.cpp index d19433ee84..ef4b9187a6 100644 --- a/ets2panda/ir/ts/tsTypeAliasDeclaration.cpp +++ b/ets2panda/ir/ts/tsTypeAliasDeclaration.cpp @@ -15,9 +15,6 @@ #include "tsTypeAliasDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/typeNode.h" @@ -137,26 +134,6 @@ void TSTypeAliasDeclaration::Dump(ir::SrcDumper *dumper) const dumper->Endl(); } -void TSTypeAliasDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSTypeAliasDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSTypeAliasDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSTypeAliasDeclaration::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSTypeAliasDeclaration *TSTypeAliasDeclaration::Construct(ArenaAllocator *allocator) { return allocator->New(allocator, nullptr, nullptr, nullptr); diff --git a/ets2panda/ir/ts/tsTypeAssertion.cpp b/ets2panda/ir/ts/tsTypeAssertion.cpp index 64ecd80634..0b1b466d33 100644 --- a/ets2panda/ir/ts/tsTypeAssertion.cpp +++ b/ets2panda/ir/ts/tsTypeAssertion.cpp @@ -15,9 +15,6 @@ #include "tsTypeAssertion.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/typeNode.h" @@ -54,23 +51,4 @@ void TSTypeAssertion::Dump(ir::SrcDumper *dumper) const dumper->Add("TSTypeAssertion"); } -void TSTypeAssertion::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSTypeAssertion::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSTypeAssertion::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSTypeAssertion::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsTypeLiteral.cpp b/ets2panda/ir/ts/tsTypeLiteral.cpp index f79e4e20c3..0b467faf5d 100644 --- a/ets2panda/ir/ts/tsTypeLiteral.cpp +++ b/ets2panda/ir/ts/tsTypeLiteral.cpp @@ -15,14 +15,12 @@ #include "tsTypeLiteral.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "varbinder/variable.h" #include "varbinder/declaration.h" -#include "checker/TSchecker.h" + #include "checker/types/signature.h" namespace ark::es2panda::ir { @@ -59,41 +57,6 @@ void TSTypeLiteral::Dump(ir::SrcDumper *dumper) const dumper->Add("TSTypeLiteral"); } -void TSTypeLiteral::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSTypeLiteral::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSTypeLiteral::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSTypeLiteral::GetType(checker::TSChecker *checker) -{ - if (TsType() != nullptr) { - return TsType(); - } - - checker::ObjectDescriptor *desc = checker->Allocator()->New(checker->Allocator()); - checker::Type *type = checker->Allocator()->New(desc); - ES2PANDA_ASSERT(type != nullptr); - type->SetVariable(Variable()); - - SetTsType(type); - return TsType(); -} - -checker::VerifiedType TSTypeLiteral::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSTypeLiteral *TSTypeLiteral::Clone(ArenaAllocator *allocator, AstNode *parent) { ArenaVector clonedMembers(allocator->Adapter()); diff --git a/ets2panda/ir/ts/tsTypeOperator.cpp b/ets2panda/ir/ts/tsTypeOperator.cpp index 345217052f..b34fedc13c 100644 --- a/ets2panda/ir/ts/tsTypeOperator.cpp +++ b/ets2panda/ir/ts/tsTypeOperator.cpp @@ -15,9 +15,6 @@ #include "tsTypeOperator.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -53,30 +50,6 @@ void TSTypeOperator::Dump(ir::SrcDumper *dumper) const dumper->Add("TSTypeOperator"); } -void TSTypeOperator::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSTypeOperator::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSTypeOperator::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSTypeOperator::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType TSTypeOperator::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSTypeOperator *TSTypeOperator::Clone(ArenaAllocator *allocator, AstNode *parent) { // Clone the type annotation diff --git a/ets2panda/ir/ts/tsTypeOperator.h b/ets2panda/ir/ts/tsTypeOperator.h index 1c8e52791c..61d2996d64 100644 --- a/ets2panda/ir/ts/tsTypeOperator.h +++ b/ets2panda/ir/ts/tsTypeOperator.h @@ -53,7 +53,6 @@ public: void Compile([[maybe_unused]] compiler::PandaGen *pg) const override; void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; TSTypeOperator *Clone(ArenaAllocator *allocator, AstNode *parent) override; diff --git a/ets2panda/ir/ts/tsTypeParameter.cpp b/ets2panda/ir/ts/tsTypeParameter.cpp index 5e997562f4..ef8290db5c 100644 --- a/ets2panda/ir/ts/tsTypeParameter.cpp +++ b/ets2panda/ir/ts/tsTypeParameter.cpp @@ -15,9 +15,6 @@ #include "tsTypeParameter.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/typeNode.h" @@ -119,25 +116,6 @@ void TSTypeParameter::Dump(ir::SrcDumper *dumper) const } } -void TSTypeParameter::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSTypeParameter::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSTypeParameter::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSTypeParameter::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSTypeParameter *TSTypeParameter::Construct(ArenaAllocator *allocator) { return allocator->New(nullptr, nullptr, nullptr, allocator); diff --git a/ets2panda/ir/ts/tsTypeParameterDeclaration.cpp b/ets2panda/ir/ts/tsTypeParameterDeclaration.cpp index 1ae682e17f..0ed9520fb8 100644 --- a/ets2panda/ir/ts/tsTypeParameterDeclaration.cpp +++ b/ets2panda/ir/ts/tsTypeParameterDeclaration.cpp @@ -15,9 +15,6 @@ #include "tsTypeParameterDeclaration.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/ts/tsTypeParameter.h" @@ -67,25 +64,6 @@ void TSTypeParameterDeclaration::Dump(ir::SrcDumper *dumper) const } } -void TSTypeParameterDeclaration::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSTypeParameterDeclaration::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSTypeParameterDeclaration::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSTypeParameterDeclaration::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSTypeParameterDeclaration *TSTypeParameterDeclaration::Construct(ArenaAllocator *allocator) { ArenaVector params(allocator->Adapter()); diff --git a/ets2panda/ir/ts/tsTypeParameterInstantiation.cpp b/ets2panda/ir/ts/tsTypeParameterInstantiation.cpp index 306816edea..622c6b9216 100644 --- a/ets2panda/ir/ts/tsTypeParameterInstantiation.cpp +++ b/ets2panda/ir/ts/tsTypeParameterInstantiation.cpp @@ -15,10 +15,6 @@ #include "tsTypeParameterInstantiation.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" - namespace ark::es2panda::ir { TSTypeParameterInstantiation::TSTypeParameterInstantiation([[maybe_unused]] Tag const tag, TSTypeParameterInstantiation const &other, @@ -75,23 +71,4 @@ void TSTypeParameterInstantiation::Dump(ir::SrcDumper *dumper) const dumper->Add(">"); } -void TSTypeParameterInstantiation::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSTypeParameterInstantiation::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSTypeParameterInstantiation::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSTypeParameterInstantiation::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsTypePredicate.cpp b/ets2panda/ir/ts/tsTypePredicate.cpp index 68f10c467b..92a7bd933d 100644 --- a/ets2panda/ir/ts/tsTypePredicate.cpp +++ b/ets2panda/ir/ts/tsTypePredicate.cpp @@ -15,9 +15,6 @@ #include "tsTypePredicate.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/typeNode.h" @@ -65,27 +62,4 @@ void TSTypePredicate::Dump(ir::SrcDumper *dumper) const dumper->Add("TSTypePredicate"); } -void TSTypePredicate::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSTypePredicate::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSTypePredicate::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSTypePredicate::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return nullptr; -} - -checker::VerifiedType TSTypePredicate::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsTypePredicate.h b/ets2panda/ir/ts/tsTypePredicate.h index 47105611f7..c8f66ffc6a 100644 --- a/ets2panda/ir/ts/tsTypePredicate.h +++ b/ets2panda/ir/ts/tsTypePredicate.h @@ -52,7 +52,6 @@ public: void Compile([[maybe_unused]] compiler::PandaGen *pg) const override; void Compile(compiler::ETSGen *etsg) const override; checker::Type *Check([[maybe_unused]] checker::TSChecker *checker) override; - checker::Type *GetType([[maybe_unused]] checker::TSChecker *checker) override; checker::VerifiedType Check([[maybe_unused]] checker::ETSChecker *checker) override; void Accept(ASTVisitorT *v) override diff --git a/ets2panda/ir/ts/tsTypeQuery.cpp b/ets2panda/ir/ts/tsTypeQuery.cpp index 8a0018cdc5..824d2b6a4c 100644 --- a/ets2panda/ir/ts/tsTypeQuery.cpp +++ b/ets2panda/ir/ts/tsTypeQuery.cpp @@ -15,12 +15,8 @@ #include "tsTypeQuery.h" -#include "checker/ETSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" -#include "checker/TSchecker.h" namespace ark::es2panda::ir { void TSTypeQuery::TransformChildren(const NodeTransformer &cb, std::string_view transformationName) @@ -51,28 +47,4 @@ void TSTypeQuery::Dump(ir::SrcDumper *dumper) const dumper->Add("TSTypeQuery"); } -void TSTypeQuery::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSTypeQuery::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSTypeQuery::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSTypeQuery::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSTypeQuery::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsTypeReference.cpp b/ets2panda/ir/ts/tsTypeReference.cpp index 1618aa19d5..3198595b4f 100644 --- a/ets2panda/ir/ts/tsTypeReference.cpp +++ b/ets2panda/ir/ts/tsTypeReference.cpp @@ -18,12 +18,11 @@ #include "varbinder/declaration.h" #include "varbinder/scope.h" #include "varbinder/variable.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" + #include "ir/astDump.h" #include "ir/srcDump.h" #include "ir/expressions/identifier.h" +#include "ir/expressions/memberExpression.h" #include "ir/ts/tsInterfaceDeclaration.h" #include "ir/ts/tsTypeAliasDeclaration.h" #include "ir/ts/tsTypeParameterInstantiation.h" @@ -73,15 +72,6 @@ void TSTypeReference::Dump(ir::SrcDumper *dumper) const BaseName()->Dump(dumper); } -void TSTypeReference::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} -void TSTypeReference::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - ir::Identifier *TSTypeReference::BaseName() const { if (typeName_->IsIdentifier()) { @@ -103,37 +93,6 @@ ir::Identifier *TSTypeReference::BaseName() const return iter->Property()->AsIdentifier(); } -checker::Type *TSTypeReference::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSTypeReference::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - if (TsType() != nullptr) { - return TsType(); - } - - if (typeName_->IsTSQualifiedName()) { - return checker->GlobalAnyType(); - } - - ES2PANDA_ASSERT(typeName_->IsIdentifier()); - varbinder::Variable *var = typeName_->AsIdentifier()->Variable(); - - if (var == nullptr) { - checker->ThrowTypeError({"Cannot find name ", typeName_->AsIdentifier()->Name()}, Start()); - } - - SetTsType(checker->GetTypeReferenceType(this, var)); - return TsType(); -} - -checker::VerifiedType TSTypeReference::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSTypeReference *TSTypeReference::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *clonedTypeName = typeName_->Clone(allocator, nullptr)->AsExpression(); diff --git a/ets2panda/ir/ts/tsUndefinedKeyword.cpp b/ets2panda/ir/ts/tsUndefinedKeyword.cpp index fc10fda907..0ed72b466a 100644 --- a/ets2panda/ir/ts/tsUndefinedKeyword.cpp +++ b/ets2panda/ir/ts/tsUndefinedKeyword.cpp @@ -15,9 +15,6 @@ #include "tsUndefinedKeyword.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -44,28 +41,4 @@ void TSUndefinedKeyword::Dump(ir::SrcDumper *dumper) const dumper->Add("TSUndefinedKeyword"); } -void TSUndefinedKeyword::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSUndefinedKeyword::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSUndefinedKeyword::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSUndefinedKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalUndefinedType(); -} - -checker::VerifiedType TSUndefinedKeyword::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsUnionType.cpp b/ets2panda/ir/ts/tsUnionType.cpp index 97cc33ed09..abb09697f1 100644 --- a/ets2panda/ir/ts/tsUnionType.cpp +++ b/ets2panda/ir/ts/tsUnionType.cpp @@ -15,9 +15,6 @@ #include "tsUnionType.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -54,42 +51,6 @@ void TSUnionType::Dump(ir::SrcDumper *dumper) const dumper->Add("TSUnionType"); } -void TSUnionType::Compile([[maybe_unused]] compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSUnionType::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSUnionType::Check([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::VerifiedType TSUnionType::Check([[maybe_unused]] checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - -checker::Type *TSUnionType::GetType(checker::TSChecker *checker) -{ - if (TsType() != nullptr) { - return TsType(); - } - - ArenaVector types(checker->Allocator()->Adapter()); - - for (auto *it : types_) { - types.push_back(it->GetType(checker)); - } - - SetTsType(checker->CreateUnionType(std::move(types))); - return TsType(); -} - TSUnionType *TSUnionType::Clone(ArenaAllocator *allocator, AstNode *parent) { // Clone all type nodes in the union diff --git a/ets2panda/ir/ts/tsUnknownKeyword.cpp b/ets2panda/ir/ts/tsUnknownKeyword.cpp index ebd721e2d6..c9ed18eff7 100644 --- a/ets2panda/ir/ts/tsUnknownKeyword.cpp +++ b/ets2panda/ir/ts/tsUnknownKeyword.cpp @@ -15,9 +15,6 @@ #include "tsUnknownKeyword.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -44,28 +41,4 @@ void TSUnknownKeyword::Dump(ir::SrcDumper *dumper) const dumper->Add("TSUnknownKeyword"); } -void TSUnknownKeyword::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSUnknownKeyword::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSUnknownKeyword::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSUnknownKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalUnknownType(); -} - -checker::VerifiedType TSUnknownKeyword::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} } // namespace ark::es2panda::ir diff --git a/ets2panda/ir/ts/tsVoidKeyword.cpp b/ets2panda/ir/ts/tsVoidKeyword.cpp index e938461aa2..e15e9ee721 100644 --- a/ets2panda/ir/ts/tsVoidKeyword.cpp +++ b/ets2panda/ir/ts/tsVoidKeyword.cpp @@ -15,9 +15,6 @@ #include "tsVoidKeyword.h" -#include "checker/TSchecker.h" -#include "compiler/core/ETSGen.h" -#include "compiler/core/pandagen.h" #include "ir/astDump.h" #include "ir/srcDump.h" @@ -44,31 +41,6 @@ void TSVoidKeyword::Dump(ir::SrcDumper *dumper) const dumper->Add("TSVoidKeyword"); } -void TSVoidKeyword::Compile(compiler::PandaGen *pg) const -{ - pg->GetAstCompiler()->Compile(this); -} - -void TSVoidKeyword::Compile(compiler::ETSGen *etsg) const -{ - etsg->GetAstCompiler()->Compile(this); -} - -checker::Type *TSVoidKeyword::Check(checker::TSChecker *checker) -{ - return checker->GetAnalyzer()->Check(this); -} - -checker::Type *TSVoidKeyword::GetType([[maybe_unused]] checker::TSChecker *checker) -{ - return checker->GlobalVoidType(); -} - -checker::VerifiedType TSVoidKeyword::Check(checker::ETSChecker *checker) -{ - return {this, checker->GetAnalyzer()->Check(this)}; -} - TSVoidKeyword *TSVoidKeyword::Clone(ArenaAllocator *allocator, AstNode *parent) { auto *clone = allocator->New(allocator); diff --git a/ets2panda/ir/visitor/IterateAstVisitor.h b/ets2panda/ir/visitor/IterateAstVisitor.h index 79274780e6..a5d7a357f6 100644 --- a/ets2panda/ir/visitor/IterateAstVisitor.h +++ b/ets2panda/ir/visitor/IterateAstVisitor.h @@ -16,27 +16,168 @@ #ifndef ES2PANDA_COMPILER_CORE_ITERATE_AST_VISITOR_H #define ES2PANDA_COMPILER_CORE_ITERATE_AST_VISITOR_H -#include "AstVisitor.h" #include "ir/brokenTypeNode.h" -#include "ir/expressions/literals/undefinedLiteral.h" -#include "ir/expressions/blockExpression.h" +#include "ir/opaqueTypeNode.h" + +#include "ir/module/exportAllDeclaration.h" +#include "ir/module/exportDefaultDeclaration.h" +#include "ir/module/exportNamedDeclaration.h" +#include "ir/module/exportSpecifier.h" +#include "ir/module/importDefaultSpecifier.h" +#include "ir/module/importNamespaceSpecifier.h" + +#include "ir/ets/etsClassLiteral.h" +#include "ir/ets/etsStructDeclaration.h" #include "ir/ets/etsIntrinsicNode.h" #include "ir/ets/etsUnionType.h" #include "ir/ets/etsStringLiteralType.h" #include "ir/ets/etsTuple.h" +#include "ir/ets/etsTypeReference.h" +#include "ir/ets/etsTypeReferencePart.h" #include "ir/ets/etsNeverType.h" #include "ir/ets/etsNullishTypes.h" -#include "ir/statements/functionDeclaration.h" -#include "ir/expressions/functionExpression.h" +#include "ir/ets/etsReExportDeclaration.h" +#include "ir/ets/etsNewArrayInstanceExpression.h" +#include "ir/ets/etsNewMultiDimArrayInstanceExpression.h" +#include "ir/ets/etsNewClassInstanceExpression.h" +#include "ir/ets/etsFunctionType.h" +#include "ir/ets/etsNonNullishTypeNode.h" +#include "ir/ets/etsPackageDeclaration.h" +#include "ir/ets/etsPrimitiveType.h" +#include "ir/ets/etsWildcardType.h" +#include "ir/ets/etsKeyofType.h" +#include "ir/ets/etsModule.h" + +#include "ir/ts/tsAsExpression.h" +#include "ir/ts/tsEnumDeclaration.h" +#include "ir/ts/tsEnumMember.h" +#include "ir/ts/tsExternalModuleReference.h" +#include "ir/ts/tsNonNullExpression.h" +#include "ir/ts/tsTypeAssertion.h" +#include "ir/ts/tsAnyKeyword.h" +#include "ir/ts/tsArrayType.h" +#include "ir/ts/tsBigintKeyword.h" +#include "ir/ts/tsBooleanKeyword.h" +#include "ir/ts/tsLiteralType.h" +#include "ir/ts/tsNeverKeyword.h" +#include "ir/ts/tsNullKeyword.h" +#include "ir/ts/tsNumberKeyword.h" +#include "ir/ts/tsObjectKeyword.h" +#include "ir/ts/tsParenthesizedType.h" +#include "ir/ts/tsStringKeyword.h" +#include "ir/ts/tsTypeLiteral.h" +#include "ir/ts/tsUndefinedKeyword.h" +#include "ir/ts/tsUnionType.h" +#include "ir/ts/tsUnknownKeyword.h" +#include "ir/ts/tsVoidKeyword.h" +#include "ir/ts/tsConditionalType.h" +#include "ir/ts/tsConstructorType.h" +#include "ir/ts/tsFunctionType.h" +#include "ir/ts/tsImportEqualsDeclaration.h" +#include "ir/ts/tsImportType.h" +#include "ir/ts/tsInferType.h" +#include "ir/ts/tsIntersectionType.h" +#include "ir/ts/tsMappedType.h" +#include "ir/ts/tsModuleBlock.h" +#include "ir/ts/tsModuleDeclaration.h" +#include "ir/ts/tsParameterProperty.h" +#include "ir/ts/tsThisType.h" +#include "ir/ts/tsTypeAliasDeclaration.h" +#include "ir/ts/tsTypeOperator.h" +#include "ir/ts/tsTypeParameter.h" +#include "ir/ts/tsTypeParameterDeclaration.h" +#include "ir/ts/tsTypeParameterInstantiation.h" +#include "ir/ts/tsTypePredicate.h" +#include "ir/ts/tsTypeReference.h" +#include "ir/ts/tsClassImplements.h" +#include "ir/ts/tsIndexedAccessType.h" +#include "ir/ts/tsInterfaceBody.h" +#include "ir/ts/tsInterfaceDeclaration.h" +#include "ir/ts/tsInterfaceHeritage.h" +#include "ir/ts/tsNamedTupleMember.h" +#include "ir/ts/tsQualifiedName.h" +#include "ir/ts/tsTupleType.h" +#include "ir/ts/tsTypeQuery.h" + +#include "ir/base/spreadElement.h" #include "ir/base/scriptFunction.h" -#include "ir/base/methodDefinition.h" +#include "ir/base/catchClause.h" +#include "ir/base/classDefinition.h" #include "ir/base/classProperty.h" +#include "ir/base/classStaticBlock.h" +#include "ir/base/decorator.h" +#include "ir/base/methodDefinition.h" +#include "ir/base/metaProperty.h" +#include "ir/base/overloadDeclaration.h" +#include "ir/base/property.h" +#include "ir/base/tsMethodSignature.h" +#include "ir/base/tsPropertySignature.h" +#include "ir/base/tsSignatureDeclaration.h" +#include "ir/base/tsIndexSignature.h" + +#include "ir/expressions/assignmentExpression.h" +#include "ir/expressions/taggedTemplateExpression.h" +#include "ir/expressions/typeofExpression.h" +#include "ir/expressions/unaryExpression.h" +#include "ir/expressions/updateExpression.h" +#include "ir/expressions/yieldExpression.h" + +#include "ir/expressions/arrowFunctionExpression.h" +#include "ir/expressions/arrayExpression.h" +#include "ir/expressions/objectExpression.h" +#include "ir/expressions/sequenceExpression.h" +#include "ir/expressions/templateLiteral.h" +#include "ir/expressions/functionExpression.h" +#include "ir/expressions/awaitExpression.h" +#include "ir/expressions/binaryExpression.h" +#include "ir/expressions/callExpression.h" +#include "ir/expressions/classExpression.h" +#include "ir/expressions/chainExpression.h" #include "ir/expressions/identifier.h" +#include "ir/expressions/importExpression.h" #include "ir/expressions/dummyNode.h" -#include "ir/ets/etsReExportDeclaration.h" +#include "ir/expressions/directEvalExpression.h" +#include "ir/expressions/blockExpression.h" +#include "ir/expressions/conditionalExpression.h" +#include "ir/expressions/thisExpression.h" +#include "ir/expressions/literals/undefinedLiteral.h" +#include "ir/expressions/literals/bigIntLiteral.h" +#include "ir/expressions/literals/booleanLiteral.h" +#include "ir/expressions/literals/charLiteral.h" +#include "ir/expressions/literals/nullLiteral.h" +#include "ir/expressions/literals/numberLiteral.h" +#include "ir/expressions/literals/regExpLiteral.h" +#include "ir/expressions/newExpression.h" +#include "ir/expressions/omittedExpression.h" +#include "ir/expressions/superExpression.h" + +#include "ir/statements/assertStatement.h" #include "ir/statements/annotationDeclaration.h" +#include "ir/statements/breakStatement.h" +#include "ir/statements/blockStatement.h" +#include "ir/statements/continueStatement.h" +#include "ir/statements/debuggerStatement.h" +#include "ir/statements/doWhileStatement.h" +#include "ir/statements/emptyStatement.h" +#include "ir/statements/expressionStatement.h" +#include "ir/statements/forInStatement.h" +#include "ir/statements/forOfStatement.h" +#include "ir/statements/forUpdateStatement.h" +#include "ir/statements/labelledStatement.h" +#include "ir/statements/functionDeclaration.h" +#include "ir/statements/ifStatement.h" #include "ir/statements/variableDeclaration.h" #include "ir/statements/variableDeclarator.h" +#include "ir/statements/switchCaseStatement.h" +#include "ir/statements/switchStatement.h" +#include "ir/statements/tryStatement.h" +#include "ir/statements/throwStatement.h" +#include "ir/statements/whileStatement.h" + +#include "ir/as/namedType.h" +#include "ir/as/prefixAssertionExpression.h" + +#include "AstVisitor.h" namespace ark::es2panda::ir::visitor { diff --git a/ets2panda/parser/ETSparserAnnotations.cpp b/ets2panda/parser/ETSparserAnnotations.cpp index e294a8573b..139827b44c 100644 --- a/ets2panda/parser/ETSparserAnnotations.cpp +++ b/ets2panda/parser/ETSparserAnnotations.cpp @@ -16,11 +16,34 @@ #include "ETSparser.h" #include "generated/diagnostic.h" #include "lexer/lexer.h" +#include "ir/base/classProperty.h" +#include "ir/base/methodDefinition.h" +#include "ir/ets/etsFunctionType.h" #include "ir/ets/etsTuple.h" #include "ir/ets/etsUnionType.h" +#include "ir/ets/etsStructDeclaration.h" +#include "ir/ets/etsStringLiteralType.h" +#include "ir/ets/etsNullishTypes.h" +#include "ir/ets/etsTypeReference.h" +#include "ir/ets/etsTypeReferencePart.h" +#include "ir/ets/etsModule.h" +#include "ir/ts/tsInterfaceDeclaration.h" +#include "ir/ts/tsTypeAliasDeclaration.h" +#include "ir/ts/tsArrayType.h" +#include "ir/ts/tsTypeParameter.h" + +#include "ir/expressions/identifier.h" +#include "ir/expressions/arrayExpression.h" +#include "ir/expressions/arrowFunctionExpression.h" #include "ir/statements/annotationDeclaration.h" +#include "ir/statements/expressionStatement.h" +#include "ir/statements/functionDeclaration.h" +#include "ir/statements/variableDeclaration.h" +#include "ir/statements/variableDeclarator.h" #include "ir/brokenTypeNode.h" +#include "generated/signatures.h" + namespace ark::es2panda::parser { ir::Statement *ETSParser::ParseTopLevelAnnotation(ir::ModifierFlags memberModifiers) diff --git a/ets2panda/parser/ETSparserClasses.cpp b/ets2panda/parser/ETSparserClasses.cpp index f9d858dbc7..9ce22f83e1 100644 --- a/ets2panda/parser/ETSparserClasses.cpp +++ b/ets2panda/parser/ETSparserClasses.cpp @@ -37,6 +37,7 @@ #include "ir/base/methodDefinition.h" #include "ir/base/classStaticBlock.h" #include "ir/base/spreadElement.h" +#include "ir/base/overloadDeclaration.h" #include "ir/expressions/identifier.h" #include "ir/expressions/functionExpression.h" #include "ir/expressions/dummyNode.h" diff --git a/ets2panda/parser/ETSparserEnums.cpp b/ets2panda/parser/ETSparserEnums.cpp index 44434862cb..0127dea39d 100644 --- a/ets2panda/parser/ETSparserEnums.cpp +++ b/ets2panda/parser/ETSparserEnums.cpp @@ -43,6 +43,7 @@ #include "ir/statements/classDeclaration.h" #include "ir/statements/variableDeclarator.h" #include "ir/statements/variableDeclaration.h" +#include "ir/expressions/binaryExpression.h" #include "ir/expressions/dummyNode.h" #include "ir/expressions/callExpression.h" #include "ir/expressions/thisExpression.h" diff --git a/ets2panda/parser/ETSparserExpressions.cpp b/ets2panda/parser/ETSparserExpressions.cpp index f1cd269a67..811550354a 100644 --- a/ets2panda/parser/ETSparserExpressions.cpp +++ b/ets2panda/parser/ETSparserExpressions.cpp @@ -16,8 +16,95 @@ #include "ETSparser.h" #include "lexer/lexer.h" -#include "ir/expressions/literals/undefinedLiteral.h" +#include "ir/brokenTypeNode.h" +#include "ir/ets/etsClassLiteral.h" +#include "ir/ets/etsStructDeclaration.h" +#include "ir/ets/etsIntrinsicNode.h" +#include "ir/ets/etsUnionType.h" +#include "ir/ets/etsStringLiteralType.h" #include "ir/ets/etsTuple.h" +#include "ir/ets/etsTypeReference.h" +#include "ir/ets/etsTypeReferencePart.h" +#include "ir/ets/etsNeverType.h" +#include "ir/ets/etsNullishTypes.h" +#include "ir/ets/etsReExportDeclaration.h" +#include "ir/ets/etsNewArrayInstanceExpression.h" +#include "ir/ets/etsNewMultiDimArrayInstanceExpression.h" +#include "ir/ets/etsNewClassInstanceExpression.h" +#include "ir/ets/etsFunctionType.h" +#include "ir/ets/etsNonNullishTypeNode.h" +#include "ir/ets/etsPackageDeclaration.h" +#include "ir/ets/etsPrimitiveType.h" +#include "ir/ets/etsWildcardType.h" +#include "ir/ets/etsKeyofType.h" +#include "ir/ets/etsModule.h" + +#include "ir/ts/tsAsExpression.h" +#include "ir/ts/tsNonNullExpression.h" +#include "ir/ts/tsTypeAssertion.h" + +#include "ir/base/spreadElement.h" +#include "ir/base/scriptFunction.h" +#include "ir/base/catchClause.h" +#include "ir/base/classDefinition.h" +#include "ir/base/classProperty.h" +#include "ir/base/classStaticBlock.h" +#include "ir/base/decorator.h" +#include "ir/base/methodDefinition.h" +#include "ir/base/metaProperty.h" +#include "ir/base/overloadDeclaration.h" +#include "ir/base/property.h" +#include "ir/base/tsMethodSignature.h" +#include "ir/base/tsPropertySignature.h" +#include "ir/base/tsSignatureDeclaration.h" +#include "ir/base/tsIndexSignature.h" + +#include "ir/expressions/assignmentExpression.h" +#include "ir/expressions/taggedTemplateExpression.h" +#include "ir/expressions/typeofExpression.h" +#include "ir/expressions/unaryExpression.h" +#include "ir/expressions/updateExpression.h" +#include "ir/expressions/yieldExpression.h" +#include "ir/expressions/arrowFunctionExpression.h" +#include "ir/expressions/arrayExpression.h" +#include "ir/expressions/objectExpression.h" +#include "ir/expressions/sequenceExpression.h" +#include "ir/expressions/templateLiteral.h" +#include "ir/expressions/functionExpression.h" +#include "ir/expressions/awaitExpression.h" +#include "ir/expressions/binaryExpression.h" +#include "ir/expressions/callExpression.h" +#include "ir/expressions/classExpression.h" +#include "ir/expressions/chainExpression.h" +#include "ir/expressions/identifier.h" +#include "ir/expressions/importExpression.h" +#include "ir/expressions/dummyNode.h" +#include "ir/expressions/directEvalExpression.h" +#include "ir/expressions/blockExpression.h" +#include "ir/expressions/conditionalExpression.h" +#include "ir/expressions/thisExpression.h" +#include "ir/expressions/literals/undefinedLiteral.h" +#include "ir/expressions/literals/bigIntLiteral.h" +#include "ir/expressions/literals/booleanLiteral.h" +#include "ir/expressions/literals/charLiteral.h" +#include "ir/expressions/literals/nullLiteral.h" +#include "ir/expressions/literals/numberLiteral.h" +#include "ir/expressions/literals/regExpLiteral.h" +#include "ir/expressions/newExpression.h" +#include "ir/expressions/omittedExpression.h" +#include "ir/expressions/superExpression.h" + +#include "ir/statements/assertStatement.h" +#include "ir/statements/annotationDeclaration.h" +#include "ir/statements/breakStatement.h" +#include "ir/statements/blockStatement.h" +#include "ir/statements/continueStatement.h" +#include "ir/statements/debuggerStatement.h" +#include "ir/statements/doWhileStatement.h" +#include "ir/statements/emptyStatement.h" +#include "ir/statements/functionDeclaration.h" +#include "ir/statements/variableDeclaration.h" +#include "ir/statements/variableDeclarator.h" namespace ark::es2panda::parser { class FunctionContext; diff --git a/ets2panda/parser/ETSparserStatements.cpp b/ets2panda/parser/ETSparserStatements.cpp index bb7d3f6db0..7fbe2df617 100644 --- a/ets2panda/parser/ETSparserStatements.cpp +++ b/ets2panda/parser/ETSparserStatements.cpp @@ -34,6 +34,7 @@ #include "ir/base/methodDefinition.h" #include "ir/base/classStaticBlock.h" #include "ir/base/spreadElement.h" +#include "ir/base/overloadDeclaration.h" #include "ir/expressions/identifier.h" #include "ir/expressions/functionExpression.h" #include "ir/statements/functionDeclaration.h" diff --git a/ets2panda/parser/ETSparserTypes.cpp b/ets2panda/parser/ETSparserTypes.cpp index b2da373d7f..713c5a4fec 100644 --- a/ets2panda/parser/ETSparserTypes.cpp +++ b/ets2panda/parser/ETSparserTypes.cpp @@ -50,6 +50,7 @@ #include "ir/ets/etsStringLiteralType.h" #include "ir/ets/etsTypeReference.h" #include "ir/ets/etsTypeReferencePart.h" +#include "ir/ets/etsNonNullishTypeNode.h" #include "ir/ets/etsNullishTypes.h" #include "ir/ets/etsUnionType.h" #include "ir/ets/etsImportDeclaration.h" diff --git a/ets2panda/parser/JsdocHelper.cpp b/ets2panda/parser/JsdocHelper.cpp index f3e75ea9a6..875bff0800 100644 --- a/ets2panda/parser/JsdocHelper.cpp +++ b/ets2panda/parser/JsdocHelper.cpp @@ -17,7 +17,19 @@ #include #include "lexer/lexer.h" #include "ir/ets/etsTuple.h" +#include "ir/ets/etsStructDeclaration.h" + +#include "ir/base/classProperty.h" +#include "ir/base/methodDefinition.h" + +#include "ir/expressions/arrowFunctionExpression.h" + #include "ir/statements/annotationDeclaration.h" +#include "ir/statements/functionDeclaration.h" +#include "ir/statements/variableDeclarator.h" +#include "ir/statements/variableDeclaration.h" +#include "ir/ts/tsInterfaceDeclaration.h" +#include "ir/ts/tsTypeAliasDeclaration.h" namespace ark::es2panda::parser { static constexpr std::string_view JSDOC_END = "*/"; diff --git a/ets2panda/public/CMakeLists.txt b/ets2panda/public/CMakeLists.txt index 965ef9d300..5892a821bc 100644 --- a/ets2panda/public/CMakeLists.txt +++ b/ets2panda/public/CMakeLists.txt @@ -647,7 +647,6 @@ if (PANDA_TARGET_WINDOWS) endif() panda_frontend_add_library(es2panda-public ${PANDA_DEFAULT_LIB_TYPE} ${ES2PANDA_PUBLIC_SOURCES}) -add_dependencies(es2panda-lib gen_api) add_dependencies(es2panda-public es2panda-lib) diff --git a/ets2panda/public/contextState.h b/ets2panda/public/contextState.h new file mode 100644 index 0000000000..d087b0dd02 --- /dev/null +++ b/ets2panda/public/contextState.h @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ES2PANDA_PUBLIC_CONTEXT_STATE +#define ES2PANDA_PUBLIC_CONTEXT_STATE + +#ifdef __cplusplus +extern "C" { +#endif + +enum es2panda_ContextState { + ES2PANDA_STATE_NEW, + ES2PANDA_STATE_PARSED, + ES2PANDA_STATE_BOUND, + ES2PANDA_STATE_CHECKED, + ES2PANDA_STATE_LOWERED, + ES2PANDA_STATE_ASM_GENERATED, + ES2PANDA_STATE_BIN_GENERATED, + + ES2PANDA_STATE_ERROR +}; + +typedef enum es2panda_ContextState es2panda_ContextState; + +#ifdef __cplusplus +} +#endif + +#endif // ES2PANDA_PUBLIC_CONTEXT_STATE diff --git a/ets2panda/public/es2panda_lib.h b/ets2panda/public/es2panda_lib.h index a1562a4fd6..3cc3cc6bac 100644 --- a/ets2panda/public/es2panda_lib.h +++ b/ets2panda/public/es2panda_lib.h @@ -27,6 +27,8 @@ #include #include +#include "contextState.h" + #ifdef __cplusplus extern "C" { #endif @@ -129,18 +131,6 @@ typedef struct es2panda_OverloadInfo { bool returnVoid; } es2panda_OverloadInfo; -enum es2panda_ContextState { - ES2PANDA_STATE_NEW, - ES2PANDA_STATE_PARSED, - ES2PANDA_STATE_BOUND, - ES2PANDA_STATE_CHECKED, - ES2PANDA_STATE_LOWERED, - ES2PANDA_STATE_ASM_GENERATED, - ES2PANDA_STATE_BIN_GENERATED, - - ES2PANDA_STATE_ERROR -}; - typedef struct es2panda_SuggestionInfo { const es2panda_DiagnosticKind *kind; const char **args; @@ -167,7 +157,6 @@ typedef enum Es2pandaLanguage { } Es2pandaLanguage; typedef enum es2panda_PluginDiagnosticType es2panda_PluginDiagnosticType; -typedef enum es2panda_ContextState es2panda_ContextState; // CC-OFFNXT(G.INC.08) project code style #include "generated/es2panda_lib/es2panda_lib_enums.inc" diff --git a/ets2panda/public/es2panda_lib_impl.inc.erb b/ets2panda/public/es2panda_lib_impl.inc.erb index 6e6468b21c..eb8e46658a 100644 --- a/ets2panda/public/es2panda_lib_impl.inc.erb +++ b/ets2panda/public/es2panda_lib_impl.inc.erb @@ -16,7 +16,7 @@ // Autogenerated file -- DO NOT EDIT! // NOLINTBEGIN(cppcoreguidelines-pro-bounds-pointer-arithmetic, readability-non-const-parameter) // NOLINTBEGIN(readability-function-size, readability-magic-numbers) - + % Enums::enums&.each do |name, enum| % if enum.flags&.length > 0 extern "C" __attribute__((unused)) <%= enum.namespace %><%= if enum.parent_class_name then "::" + enum.parent_class_name diff --git a/ets2panda/public/headers_parser/cpp_parser.py b/ets2panda/public/headers_parser/cpp_parser.py index 7d33d64f98..ba673f7677 100644 --- a/ets2panda/public/headers_parser/cpp_parser.py +++ b/ets2panda/public/headers_parser/cpp_parser.py @@ -66,7 +66,7 @@ class CppParser: self.it.end, self.parsed = parse_namespace(self.it.data, self.it.start) self.res_update() - elif self.it.is_enum(): + elif self.it.is_enum_def(): self.it.end, self.parsed = parse_enum_class(self.it.data, self.it.start) self.res_append_namespace() diff --git a/ets2panda/public/headers_parser/line_iterator.py b/ets2panda/public/headers_parser/line_iterator.py index 734799fb44..9567a28d7c 100644 --- a/ets2panda/public/headers_parser/line_iterator.py +++ b/ets2panda/public/headers_parser/line_iterator.py @@ -73,8 +73,8 @@ class LineIterator: # pylint: disable=C0115 def is_namespace(self) -> bool: return self.current_line.find("namespace") != -1 - def is_enum(self) -> bool: - return self.current_line.find("enum ") != -1 + def is_enum_def(self) -> bool: + return self.current_line.find("enum ") != -1 and self.current_line.find("{") != -1 def is_struct(self) -> bool: return self.current_line.find("struct ") != -1 diff --git a/ets2panda/public/public.h b/ets2panda/public/public.h index 72c7553a18..2d06b7289b 100644 --- a/ets2panda/public/public.h +++ b/ets2panda/public/public.h @@ -17,7 +17,7 @@ #define ES2PANDA_PUBLIC_PUBLIC_H #include -#include "public/es2panda_lib.h" +#include "contextState.h" #include "assembler/assembly-program.h" #include "libpandabase/mem/arena_allocator.h" diff --git a/ets2panda/test/unit/globalETSObjectType_test.cpp b/ets2panda/test/unit/globalETSObjectType_test.cpp index 9100fabbe5..38b595cfe4 100644 --- a/ets2panda/test/unit/globalETSObjectType_test.cpp +++ b/ets2panda/test/unit/globalETSObjectType_test.cpp @@ -19,7 +19,7 @@ #include "compiler/core/compilerImpl.h" #include "compiler/core/ETSCompiler.h" #include "compiler/core/ETSemitter.h" -#include "compiler/core/ETSGen.h" + #include "compiler/core/regSpiller.h" #include "compiler/lowering/phase.h" #include "es2panda.h" diff --git a/ets2panda/test/unit/union_normalization_test_1.cpp b/ets2panda/test/unit/union_normalization_test_1.cpp index d4cbe2fb7d..e099062a9e 100644 --- a/ets2panda/test/unit/union_normalization_test_1.cpp +++ b/ets2panda/test/unit/union_normalization_test_1.cpp @@ -21,7 +21,7 @@ #include "compiler/core/compilerImpl.h" #include "compiler/core/ETSCompiler.h" #include "compiler/core/ETSemitter.h" -#include "compiler/core/ETSGen.h" + #include "compiler/core/regSpiller.h" #include "compiler/lowering/phase.h" #include "es2panda.h" diff --git a/ets2panda/test/unit/union_normalization_test_2.cpp b/ets2panda/test/unit/union_normalization_test_2.cpp index 59715ca07e..9752127786 100644 --- a/ets2panda/test/unit/union_normalization_test_2.cpp +++ b/ets2panda/test/unit/union_normalization_test_2.cpp @@ -21,7 +21,7 @@ #include "compiler/core/compilerImpl.h" #include "compiler/core/ETSCompiler.h" #include "compiler/core/ETSemitter.h" -#include "compiler/core/ETSGen.h" + #include "compiler/core/regSpiller.h" #include "compiler/lowering/phase.h" #include "es2panda.h" diff --git a/ets2panda/test/utils/checker_test.h b/ets2panda/test/utils/checker_test.h index 69f1fbdee0..5b28048ed4 100644 --- a/ets2panda/test/utils/checker_test.h +++ b/ets2panda/test/utils/checker_test.h @@ -22,7 +22,7 @@ #include "compiler/core/regSpiller.h" #include "compiler/core/ETSCompiler.h" #include "compiler/core/ETSemitter.h" -#include "compiler/core/ETSGen.h" + #include "checker/ETSAnalyzer.h" #include "ir/astNode.h" #include "util/options.h" diff --git a/ets2panda/util/plugin.h b/ets2panda/util/plugin.h index a09113ac0b..e8320408c3 100644 --- a/ets2panda/util/plugin.h +++ b/ets2panda/util/plugin.h @@ -17,9 +17,10 @@ #include "util/es2pandaMacros.h" #include "os/library_loader.h" -#include "public/es2panda_lib.h" #include "util/ustring.h" +struct es2panda_Context; + namespace ark::es2panda::util { class Plugin { diff --git a/ets2panda/varbinder/TypedBinder.cpp b/ets2panda/varbinder/TypedBinder.cpp index 2cf8062201..2b82cfaf26 100644 --- a/ets2panda/varbinder/TypedBinder.cpp +++ b/ets2panda/varbinder/TypedBinder.cpp @@ -14,6 +14,7 @@ */ #include "TypedBinder.h" + #include "ir/base/tsSignatureDeclaration.h" #include "ir/base/tsMethodSignature.h" #include "ir/ts/tsFunctionType.h" diff --git a/ets2panda/varbinder/recordTable.cpp b/ets2panda/varbinder/recordTable.cpp index 6971fd4da3..df38c689e4 100644 --- a/ets2panda/varbinder/recordTable.cpp +++ b/ets2panda/varbinder/recordTable.cpp @@ -21,7 +21,6 @@ #include "ir/statements/annotationDeclaration.h" #include "ir/ts/tsEnumDeclaration.h" #include "ir/ts/tsInterfaceDeclaration.h" -#include "checker/types/ets/etsObjectType.h" #include "generated/signatures.h" namespace ark::es2panda::varbinder { -- Gitee