cmake_minimum_required (VERSION 3.5.0)
include(cmake/coverage.cmake)
include(cmake/PandaCmakeFunctions.cmake)
project (es2panda)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_custom_target(frontend_bins COMMENT "Build all common frontend binaries")
add_dependencies(frontend_bins
es2panda
es2panda-lib
es2panda-public
dependency_analyzer
dependency_analyzer_lib
declgen_ets2ts
)
set(ES2PANDA_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
set(ES2PANDA_BINARY_ROOT ${CMAKE_CURRENT_BINARY_DIR})
set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
if(PANDA_TARGET_WINDOWS)
set(DELIM "\\\\")
string(REPLACE "/" "\\\\" STATIC_CORE ${PANDA_ROOT})
else()
set(STATIC_CORE ${PANDA_ROOT})
set(DELIM "/")
endif()
set(GENERATED_DIR ${OUTPUT_DIR}/generated)
set(GENERATED_STAMP ${OUTPUT_DIR}/gen_dir.stamp)
if(CMAKE_CROSSCOMPILING)
ExternalProject_Get_Property(panda_host_tools binary_dir)
set(DEFAULT_ARKTSCONFIG "${binary_dir}/tools/es2panda/aot")
else()
set(DEFAULT_ARKTSCONFIG "${CMAKE_BINARY_DIR}/bin")
endif()
if(PANDA_STRICT_MODE)
add_definitions(-DES2PANDA_STRICT=${PANDA_STRICT_MODE})
message(STATUS "PANDA_STRICT_MODE = ${PANDA_STRICT_MODE}")
endif()
file(MAKE_DIRECTORY "${GENERATED_DIR}")
set(DEFAULT_CACHE_DIR "${CMAKE_BINARY_DIR}${DELIM}plugins${DELIM}ets${DELIM}stdlib${DELIM}decls")
file(MAKE_DIRECTORY "${DEFAULT_CACHE_DIR}")
if(PANDA_WITH_ETS)
function(gen_arktsconfig DST_CONFIG_FILE IS_CONFIG_FOR_SDK_ARTIFACTS)
function (write_cfg DST_PATH BASE_URL STDLIB_DECL_DIR SDK_SRC_DIR)
message("Generate ${DST_PATH} (calulated 'baseUrl': ${BASE_URL})")
file(WRITE "${DST_PATH}"
"{\n"
" \"!NOTE!\": \"Generated from ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt\",\n"
"\n"
" \"compilerOptions\": {\n"
" \"baseUrl\": \"${BASE_URL}\",\n"
" \"cacheDir\": \"${DEFAULT_CACHE_DIR}\",\n"
" \"paths\": {\n"
" \"@ohos.buffer\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.buffer.ets\"],\n"
" \"@ohos.util.ArrayList\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.ArrayList.ets\"],\n"
" \"@ohos.util.Deque\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.Deque.ets\"],\n"
" \"@ohos.util.HashMap\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.HashMap.ets\"],\n"
" \"@ohos.util.HashSet\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.HashSet.ets\"],\n"
" \"@ohos.util.LightWeightMap\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.LightWeightMap.ets\"],\n"
" \"@ohos.util.LightWeightSet\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.LightWeightSet.ets\"],\n"
" \"@ohos.util.LinkedList\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.LinkedList.ets\"],\n"
" \"@ohos.util.List\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.List.ets\"],\n"
" \"@ohos.util.PlainArray\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.PlainArray.ets\"],\n"
" \"@ohos.util.Queue\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.Queue.ets\"],\n"
" \"@ohos.util.Stack\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.Stack.ets\"],\n"
" \"@ohos.util.stream\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.stream.ets\"],\n"
" \"@ohos.util\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.ets\"],\n"
" \"@ohos.util.TreeMap\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.TreeMap.ets\"],\n"
" \"@ohos.util.TreeSet\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.util.TreeSet.ets\"],\n"
" \"@ohos.uri\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.uri.ets\"],\n"
" \"@ohos.url\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.url.ets\"],\n"
" \"@ohos.xml\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.xml.ets\"],\n"
" \"@ohos.base\": [\"${SDK_SRC_DIR}${DELIM}api${DELIM}@ohos.base.ets\"],\n"
" \"@arkts.math.Decimal\": [\"${SDK_SRC_DIR}${DELIM}arkts${DELIM}@arkts.math.Decimal.ets\"],\n"
" \"@arkts.collections\": [\"${SDK_SRC_DIR}${DELIM}arkts${DELIM}@arkts.collections.ets\"],\n"
" \"import_tests\": [\"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/import_tests\"]\n"
" },\n"
" \"dependencies\": {\n"
" \"std/core\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/math\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/math/consts\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/containers\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/interop/js\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/time\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/debug\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/debug/concurrency\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/dfx\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/testing\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/concurrency\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/annotations\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"std/interop\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"arkruntime\": { \"path\": \".${DELIM}plugins${DELIM}ets${DELIM}etsstdlib.abc\" },\n"
" \"dynamic_import_tests\": {\"language\": \"js\", \"ohmUrl\": \"dynamic_import_tests\"},\n"
" \"dynamic_import_tests/modules/instanceof\": {\"language\": \"js\", \"path\": \"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/dynamic_import_tests/modules/instanceof.ets\", \"ohmUrl\": \"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/dynamic_import_tests/modules/instanceof.ets\"},\n"
" \"dynamic_import_tests/modules/module\": {\"language\": \"js\", \"path\": \"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/dynamic_import_tests/modules/module.ets\", \"ohmUrl\": \"${CMAKE_CURRENT_SOURCE_DIR}/test/parser/ets/dynamic_import_tests/modules/module.ets\"}\n"
" }\n"
" }\n"
"}\n"
)
endfunction()
if (IS_CONFIG_FOR_SDK_ARTIFACTS)
set(BASE_URL "..${DELIM}..${DELIM}")
set(STDLIB_DECL_DIR ".${DELIM}ets${DELIM}stdlib${DELIM}decls")
set(SDK_SRC_DIR ".${DELIM}ets${DELIM}sdk")
write_cfg(${DST_CONFIG_FILE} ${BASE_URL} ${STDLIB_DECL_DIR} ${SDK_SRC_DIR})
else()
get_filename_component(DST_DIR ${DST_CONFIG_FILE} DIRECTORY)
cmake_path(RELATIVE_PATH CMAKE_BINARY_DIR BASE_DIRECTORY ${DST_DIR} OUTPUT_VARIABLE RELATIVE_BASEURL)
set(BASE_URL "${RELATIVE_BASEURL}")
set(STDLIB_DECL_DIR ".${DELIM}plugins${DELIM}ets${DELIM}stdlib${DELIM}decls")
set(SDK_SRC_DIR "${STATIC_CORE}${DELIM}plugins${DELIM}ets${DELIM}sdk")
write_cfg(${DST_CONFIG_FILE} ${BASE_URL} ${STDLIB_DECL_DIR} ${SDK_SRC_DIR})
endif()
endfunction()
if (PANDA_SDK_BUILD)
gen_arktsconfig(${CMAKE_BINARY_DIR}/bin/arktsconfig_to_deliver.json TRUE)
endif()
gen_arktsconfig(${CMAKE_BINARY_DIR}/bin/arktsconfig.json FALSE)
gen_arktsconfig(${CMAKE_BINARY_DIR}/bin-gtests/arktsconfig.json FALSE)
gen_arktsconfig(${DEFAULT_ARKTSCONFIG}/arktsconfig.json FALSE)
gen_arktsconfig(${GENERATED_DIR}/arktsconfig.json FALSE)
endif()
add_custom_command(
OUTPUT ${GENERATED_STAMP}
COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_DIR}
COMMAND ${CMAKE_COMMAND} -E make_directory ${GENERATED_DIR}
COMMAND ${CMAKE_COMMAND} -E touch ${GENERATED_STAMP}
)
set(TEMPLATES
isa.h.erb
formats.h.erb
)
panda_isa_gen(
TEMPLATES ${TEMPLATES}
SOURCE ${CMAKE_CURRENT_LIST_DIR}/compiler/templates
DESTINATION ${GENERATED_DIR}
EXTRA_DEPENDENCIES ${GENERATED_STAMP}
)
panda_gen(
DATA ${CMAKE_CURRENT_SOURCE_DIR}/util/options.yaml
TARGET_NAME es2panda_options_gen
TEMPLATES options.h.erb
SOURCE ${PANDA_ROOT}/templates/options
DESTINATION ${GENERATED_DIR}
API ${PANDA_ROOT}/templates/common.rb
)
set(DIAGNOSTIC_DIR
${CMAKE_CURRENT_SOURCE_DIR}/util/diagnostic/
)
set(WARNING_LISTS_DIR
${CMAKE_CURRENT_SOURCE_DIR}/util/diagnostic/warnings-lists
)
panda_gen(
DATA
${WARNING_LISTS_DIR}/hardlist.yaml
${WARNING_LISTS_DIR}/softlist.yaml
${DIAGNOSTIC_DIR}/syntax.yaml
${DIAGNOSTIC_DIR}/semantic.yaml
${DIAGNOSTIC_DIR}/warning.yaml
${DIAGNOSTIC_DIR}/fatal.yaml
${CMAKE_CURRENT_SOURCE_DIR}/declgen_ets2ts/declgen_ets2ts_error.yaml
${CMAKE_CURRENT_SOURCE_DIR}/declgen_ets2ts/declgen_ets2ts_warning.yaml
${CMAKE_CURRENT_SOURCE_DIR}/declgen_ets2ts/isolated_declgen.yaml
${DIAGNOSTIC_DIR}/arktsconfig_error.yaml
TARGET_NAME es2panda_diagnostic_gen
TEMPLATES diagnostic.h.erb
SOURCE ${DIAGNOSTIC_DIR}
DESTINATION ${GENERATED_DIR}
API
${DIAGNOSTIC_DIR}/diagnostic.rb
${DIAGNOSTIC_DIR}/diagnostic.rb
${DIAGNOSTIC_DIR}/diagnostic.rb
${DIAGNOSTIC_DIR}/diagnostic.rb
${DIAGNOSTIC_DIR}/diagnostic.rb
${DIAGNOSTIC_DIR}/diagnostic.rb
${DIAGNOSTIC_DIR}/diagnostic.rb
${DIAGNOSTIC_DIR}/diagnostic.rb
${DIAGNOSTIC_DIR}/diagnostic.rb
${DIAGNOSTIC_DIR}/diagnostic.rb
)
panda_gen(
TARGET_NAME es2panda_keywords
TEMPLATES
keywords.h.erb
token.inl.erb
tokenType.h.erb
DATA
${CMAKE_CURRENT_SOURCE_DIR}/lexer/scripts/keywords.yaml
${CMAKE_CURRENT_SOURCE_DIR}/lexer/scripts/tokens.yaml
API
${CMAKE_CURRENT_SOURCE_DIR}/lexer/scripts/keywords.rb
${CMAKE_CURRENT_SOURCE_DIR}/lexer/scripts/tokens.rb
SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/lexer/templates
DESTINATION ${GENERATED_DIR}
)
panda_gen(
DATA ${CMAKE_CURRENT_SOURCE_DIR}/compiler/scripts/signatures.yaml
TARGET_NAME es2panda_signatures
TEMPLATES signatures.h.erb
API
${CMAKE_CURRENT_SOURCE_DIR}/compiler/scripts/signatures.rb
SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/compiler/templates
DESTINATION ${GENERATED_DIR}
)
set(ES2PANDA_LIB_SRC
ast_verifier/ASTVerifier.cpp
ast_verifier/helpers.cpp
ast_verifier/invariants/arithmeticOperationValid.cpp
ast_verifier/invariants/checkAbstractMethod.cpp
ast_verifier/invariants/checkConstProperties.cpp
ast_verifier/invariants/checkScopeDeclaration.cpp
ast_verifier/invariants/checkStructDeclaration.cpp
ast_verifier/invariants/everyChildHasValidParent.cpp
ast_verifier/invariants/everyChildInParentRange.cpp
ast_verifier/invariants/getterSetterValidation.cpp
ast_verifier/invariants/identifierHasVariable.cpp
ast_verifier/invariants/importExportAccessValid.cpp
ast_verifier/invariants/nodeHasParent.cpp
ast_verifier/invariants/nodeHasSourceRange.cpp
ast_verifier/invariants/nodeHasType.cpp
ast_verifier/invariants/referenceTypeAnnotationIsNull.cpp
ast_verifier/invariants/forLoopCorrectlyInitialized.cpp
ast_verifier/invariants/modifierAccessValid.cpp
ast_verifier/invariants/sequenceExpressionHasLastType.cpp
ast_verifier/invariants/variableHasEnclosingScope.cpp
ast_verifier/invariants/variableHasScope.cpp
ast_verifier/invariants/variableNameIdentifierNameSame.cpp
es2panda.cpp
varbinder/ASBinder.cpp
varbinder/TSBinder.cpp
varbinder/TypedBinder.cpp
varbinder/ETSBinder.cpp
varbinder/JSBinder.cpp
varbinder/varbinder.cpp
varbinder/declaration.cpp
varbinder/recordTable.cpp
varbinder/scope.cpp
varbinder/variable.cpp
compiler/base/catchTable.cpp
compiler/base/condition.cpp
compiler/base/destructuring.cpp
compiler/base/hoisting.cpp
compiler/base/iterators.cpp
compiler/base/lexenv.cpp
compiler/base/literals.cpp
compiler/base/lreference.cpp
compiler/base/optionalChain.cpp
compiler/core/CFG.cpp
compiler/core/codeGen.cpp
compiler/core/compileJob.cpp
compiler/core/compileQueue.cpp
compiler/core/compilerImpl.cpp
compiler/core/dynamicContext.cpp
compiler/core/emitter.cpp
compiler/core/JSCompiler.cpp
compiler/core/JSCompilerUnreachable.cpp
compiler/core/JSemitter.cpp
compiler/core/envScope.cpp
compiler/core/function.cpp
compiler/core/labelTarget.cpp
compiler/core/moduleContext.cpp
compiler/core/pandagen.cpp
compiler/core/programElement.cpp
compiler/core/regAllocator.cpp
compiler/core/regScope.cpp
compiler/core/regSpiller.cpp
compiler/core/ETSCompiler.cpp
compiler/core/ETSCompilerUnrechable.cpp
compiler/core/ETSemitter.cpp
compiler/core/ETSGen.cpp
compiler/core/ETSfunction.cpp
compiler/core/switchBuilder.cpp
compiler/core/targetTypeContext.cpp
compiler/core/vReg.cpp
compiler/debugger/debuginfoDumper.cpp
compiler/function/asyncFunctionBuilder.cpp
compiler/function/asyncGeneratorFunctionBuilder.cpp
compiler/function/functionBuilder.cpp
compiler/function/generatorFunctionBuilder.cpp
compiler/lowering/checkerPhase.cpp
compiler/lowering/scopesInit/savedBindingsCtx.cpp
compiler/lowering/scopesInit/scopesInitPhase.cpp
compiler/lowering/phase.cpp
compiler/lowering/plugin_phase.cpp
compiler/lowering/resolveIdentifiers.cpp
compiler/lowering/util.cpp
compiler/lowering/ets/topLevelStmts/importExportDecls.cpp
compiler/lowering/ets/topLevelStmts/globalClassHandler.cpp
compiler/lowering/ets/topLevelStmts/globalDeclTransformer.cpp
compiler/lowering/ets/topLevelStmts/topLevelStmts.cpp
compiler/lowering/ets/expressionLambdaLowering.cpp
compiler/lowering/ets/extensionAccessorLowering.cpp
compiler/lowering/ets/genericBridgesLowering.cpp
compiler/lowering/ets/arrayLiteralLowering.cpp
compiler/lowering/ets/boxingForLocals.cpp
compiler/lowering/ets/capturedVariables.cpp
compiler/lowering/ets/cfgBuilderPhase.cpp
compiler/lowering/ets/destructuringPhase.cpp
compiler/lowering/ets/constantExpressionLowering.cpp
compiler/lowering/ets/conditionalSimplifyLowering.cpp
compiler/lowering/ets/classFromExpressionLowering.cpp
compiler/lowering/ets/declGenPhase.cpp
compiler/lowering/ets/defaultParametersLowering.cpp
compiler/lowering/ets/exportAnonymousConst.cpp
compiler/lowering/ets/lateInitialization.cpp
compiler/lowering/ets/lambdaLowering.cpp
compiler/lowering/ets/fixedarrayLowering.cpp
compiler/lowering/ets/dynamicImport.cpp
compiler/lowering/ets/iterableSpreadLowering.cpp
compiler/lowering/ets/restTupleLowering.cpp
compiler/lowering/ets/spreadLowering.cpp
compiler/lowering/ets/objectIndexAccess.cpp
compiler/lowering/ets/objectIterator.cpp
compiler/lowering/ets/initModuleLowering.cpp
compiler/lowering/ets/insertOptionalParametersAnnotation.cpp
compiler/lowering/ets/interfacePropertyDeclarations.cpp
compiler/lowering/ets/opAssignment.cpp
compiler/lowering/ets/ambientLowering.cpp
compiler/lowering/ets/annotationCopyLowering.cpp
compiler/lowering/ets/annotationCopyPostLowering.cpp
compiler/lowering/ets/arrayConversionLowering.cpp
compiler/lowering/ets/arrayForOfLowering.cpp
compiler/lowering/ets/asyncMethodLowering.cpp
compiler/lowering/ets/asyncMethodLoweringStackless.cpp
compiler/lowering/ets/bigintLowering.cpp
compiler/lowering/ets/binaryExpressionLowering.cpp
compiler/lowering/ets/constructorInitLowering.cpp
compiler/lowering/ets/expandBrackets.cpp
compiler/lowering/ets/unionLowering.cpp
compiler/lowering/ets/optionalArgumentsLowering.cpp
compiler/lowering/ets/optionalLowering.cpp
compiler/lowering/ets/overloadMappingLowering.cpp
compiler/lowering/ets/overrideBridgesLowering.cpp
compiler/lowering/ets/recordLowering.cpp
compiler/lowering/ets/relaxedAnyLowering.cpp
compiler/lowering/ets/resizableArrayLowering.cpp
compiler/lowering/ets/restArgsLowering.cpp
compiler/lowering/ets/packageImplicitImport.cpp
compiler/lowering/ets/partialExportClassGen.cpp
compiler/lowering/ets/promiseVoid.cpp
compiler/lowering/ets/objectLiteralLowering.cpp
compiler/lowering/ets/interfaceObjectLiteralLowering.cpp
compiler/lowering/ets/stringComparison.cpp
compiler/lowering/ets/stringConstantsLowering.cpp
compiler/lowering/ets/stringConstructorLowering.cpp
compiler/lowering/ets/typeFromLowering.cpp
compiler/lowering/ets/enumLowering.cpp
compiler/lowering/ets/enumPostCheckLowering.cpp
compiler/lowering/ets/setJumpTarget.cpp
compiler/lowering/ets/setterLowering.cpp
compiler/lowering/ets/primitiveConversionPhase.cpp
compiler/lowering/ets/instantiateMethodsPhase.cpp
compiler/lowering/ets/unboxLowering.cpp
compiler/lowering/ets/awaitLowering.cpp
compiler/metadata/serialization.cpp
compiler/metadata/deserialization.cpp
compiler/lowering/ets/internalAPICheck.cpp
ir/astDump.cpp
ir/srcDump.cpp
ir/astNode.cpp
ir/astNodeHistory.cpp
ir/irnode.cpp
ir/typeNode.cpp
ir/opaqueTypeNode.cpp
ir/brokenTypeNode.cpp
ir/base/catchClause.cpp
ir/base/classElement.cpp
ir/base/classDefinition.cpp
ir/base/classProperty.cpp
ir/base/classStaticBlock.cpp
ir/base/decorator.cpp
ir/base/metaProperty.cpp
ir/base/methodDefinition.cpp
ir/base/overloadDeclaration.cpp
ir/base/property.cpp
ir/base/scriptFunction.cpp
ir/base/scriptFunctionSignature.cpp
ir/base/spreadElement.cpp
ir/base/templateElement.cpp
ir/base/tsIndexSignature.cpp
ir/base/tsMethodSignature.cpp
ir/base/tsPropertySignature.cpp
ir/base/tsSignatureDeclaration.cpp
ir/expression.cpp
ir/expressions/arrayExpression.cpp
ir/expressions/arrowFunctionExpression.cpp
ir/expressions/assignmentExpression.cpp
ir/expressions/awaitExpression.cpp
ir/expressions/binaryExpression.cpp
ir/expressions/blockExpression.cpp
ir/expressions/callExpression.cpp
ir/expressions/chainExpression.cpp
ir/expressions/classExpression.cpp
ir/expressions/conditionalExpression.cpp
ir/expressions/directEvalExpression.cpp
ir/expressions/functionExpression.cpp
ir/expressions/identifier.cpp
ir/expressions/dummyNode.cpp
ir/expressions/importExpression.cpp
ir/expressions/literal.cpp
ir/expressions/literals/bigIntLiteral.cpp
ir/expressions/literals/booleanLiteral.cpp
ir/expressions/literals/charLiteral.cpp
ir/expressions/literals/nullLiteral.cpp
ir/expressions/literals/numberLiteral.cpp
ir/expressions/literals/regExpLiteral.cpp
ir/expressions/literals/stringLiteral.cpp
ir/expressions/literals/undefinedLiteral.cpp
ir/expressions/memberExpression.cpp
ir/expressions/newExpression.cpp
ir/expressions/objectExpression.cpp
ir/expressions/omittedExpression.cpp
ir/expressions/sequenceExpression.cpp
ir/expressions/superExpression.cpp
ir/expressions/taggedTemplateExpression.cpp
ir/expressions/templateLiteral.cpp
ir/expressions/thisExpression.cpp
ir/expressions/typeofExpression.cpp
ir/expressions/unaryExpression.cpp
ir/expressions/updateExpression.cpp
ir/expressions/yieldExpression.cpp
ir/module/exportAllDeclaration.cpp
ir/module/exportDefaultDeclaration.cpp
ir/module/exportNamedDeclaration.cpp
ir/module/exportSpecifier.cpp
ir/module/importDeclaration.cpp
ir/module/importDefaultSpecifier.cpp
ir/module/importNamespaceSpecifier.cpp
ir/module/importSpecifier.cpp
ir/statement.cpp
ir/statements/annotationDeclaration.cpp
ir/statements/annotationUsage.cpp
ir/statements/assertStatement.cpp
ir/statements/blockStatement.cpp
ir/statements/breakStatement.cpp
ir/statements/classDeclaration.cpp
ir/ets/etsStructDeclaration.cpp
ir/ets/etsReExportDeclaration.cpp
ir/statements/continueStatement.cpp
ir/statements/debuggerStatement.cpp
ir/statements/doWhileStatement.cpp
ir/statements/emptyStatement.cpp
ir/statements/expressionStatement.cpp
ir/statements/forInStatement.cpp
ir/statements/forOfStatement.cpp
ir/statements/forUpdateStatement.cpp
ir/statements/functionDeclaration.cpp
ir/statements/ifStatement.cpp
ir/statements/labelledStatement.cpp
ir/statements/loopStatement.cpp
ir/statements/returnStatement.cpp
ir/statements/switchCaseStatement.cpp
ir/statements/switchStatement.cpp
ir/statements/throwStatement.cpp
ir/statements/tryStatement.cpp
ir/statements/variableDeclaration.cpp
ir/statements/variableDeclarator.cpp
ir/statements/whileStatement.cpp
ir/as/namedType.cpp
ir/as/prefixAssertionExpression.cpp
ir/ets/etsClassLiteral.cpp
ir/ets/etsDestructuring.cpp
ir/ets/etsIntrinsicNode.cpp
ir/ets/etsFunctionType.cpp
ir/ets/etsGenericInstantiatedNode.cpp
ir/ets/etsIntrinsicNode.cpp
ir/ets/etsKeyofType.cpp
ir/ets/etsNewArrayInstanceExpression.cpp
ir/ets/etsNewClassInstanceExpression.cpp
ir/ets/etsNewMultiDimArrayInstanceExpression.cpp
ir/ets/etsPackageDeclaration.cpp
ir/ets/etsParameterExpression.cpp
ir/ets/etsPrimitiveType.cpp
ir/ets/etsNonNullishTypeNode.cpp
ir/ets/etsNullishTypes.cpp
ir/ets/etsNeverType.cpp
ir/ets/etsModule.cpp
ir/ets/etsStringLiteralType.cpp
ir/ets/etsTuple.cpp
ir/ets/etsTypeReference.cpp
ir/ets/etsTypeReferencePart.cpp
ir/ets/etsUnionType.cpp
ir/ts/tsAnyKeyword.cpp
ir/ts/tsArrayType.cpp
ir/ts/tsAsExpression.cpp
ir/ts/tsBigintKeyword.cpp
ir/ts/tsBooleanKeyword.cpp
ir/ts/tsClassImplements.cpp
ir/ts/tsConditionalType.cpp
ir/ts/tsConstructorType.cpp
ir/ts/tsEnumDeclaration.cpp
ir/ts/tsEnumMember.cpp
ir/ts/tsExternalModuleReference.cpp
ir/ts/tsFunctionType.cpp
ir/ts/tsImportEqualsDeclaration.cpp
ir/ts/tsImportType.cpp
ir/ts/tsIndexedAccessType.cpp
ir/ts/tsInferType.cpp
ir/ts/tsInterfaceBody.cpp
ir/ts/tsInterfaceDeclaration.cpp
ir/ts/tsInterfaceHeritage.cpp
ir/ts/tsIntersectionType.cpp
ir/ts/tsLiteralType.cpp
ir/ts/tsMappedType.cpp
ir/ts/tsModuleBlock.cpp
ir/ts/tsModuleDeclaration.cpp
ir/ts/tsNamedTupleMember.cpp
ir/ts/tsNeverKeyword.cpp
ir/ts/tsNonNullExpression.cpp
ir/ts/tsNullKeyword.cpp
ir/ts/tsNumberKeyword.cpp
ir/ts/tsObjectKeyword.cpp
ir/ts/tsParameterProperty.cpp
ir/ts/tsParenthesizedType.cpp
ir/ts/tsQualifiedName.cpp
ir/ts/tsStringKeyword.cpp
ir/ts/tsThisType.cpp
ir/ts/tsTupleType.cpp
ir/ts/tsTypeAliasDeclaration.cpp
ir/ts/tsTypeAssertion.cpp
ir/ts/tsTypeLiteral.cpp
ir/ts/tsTypeOperator.cpp
ir/ts/tsTypeParameter.cpp
ir/ts/tsTypeParameterDeclaration.cpp
ir/ts/tsTypeParameterInstantiation.cpp
ir/ts/tsTypePredicate.cpp
ir/ts/tsTypeQuery.cpp
ir/ts/tsTypeReference.cpp
ir/ts/tsUndefinedKeyword.cpp
ir/ts/tsUnionType.cpp
ir/ts/tsUnknownKeyword.cpp
ir/ts/tsVoidKeyword.cpp
lexer/ASLexer.cpp
lexer/keywords.cpp
lexer/keywordsUtil.cpp
lexer/lexer.cpp
lexer/ETSLexer.cpp
lexer/TSLexer.cpp
lexer/regexp/regexp.cpp
lexer/token/number.cpp
lexer/token/sourceLocation.cpp
lexer/token/token.cpp
parser/context/classPrivateContext.cpp
parser/context/parserContext.cpp
parser/expressionParser.cpp
parser/expressionTSParser.cpp
parser/ASparser.cpp
parser/JSparser.cpp
parser/JsdocHelper.cpp
parser/parserImpl.cpp
parser/ETSFormattedParser.cpp
parser/ETSparser.cpp
parser/ETSparserAnnotations.cpp
parser/ETSparserClasses.cpp
parser/ETSparserEnums.cpp
parser/ETSparserExpressions.cpp
parser/ETSparserNamespaces.cpp
parser/ETSparserStatements.cpp
parser/ETSparserTypes.cpp
parser/ETSNolintParser.cpp
parser/TSparser.cpp
parser/ThrowingTypedParser.cpp
parser/TypedParser.cpp
parser/program/entityNameVisitor.cpp
parser/program/ImportCache.cpp
parser/program/program.cpp
parser/statementParser.cpp
parser/statementTSParser.cpp
public/public.cpp
checker/checker.cpp
checker/checkerContext.cpp
checker/ETSAnalyzer.cpp
checker/ETSAnalyzerHelpers.cpp
checker/ETSAnalyzerUnreachable.cpp
checker/ETSchecker.cpp
checker/TSchecker.cpp
checker/ASchecker.cpp
checker/TSAnalyzer.cpp
checker/TSAnalyzerUnreachable.cpp
checker/JSchecker.cpp
checker/typeChecker/TypeChecker.cpp
checker/ets/aliveAnalyzer.cpp
checker/ets/etsWarningAnalyzer.cpp
checker/ets/arithmetic.cpp
checker/ets/assignAnalyzer.cpp
checker/ets/baseAnalyzer.cpp
checker/ets/boxingConverter.cpp
checker/ets/castingContext.cpp
checker/ets/conversion.cpp
checker/ets/function.cpp
checker/ets/validateHelpers.cpp
checker/ets/typeCheckingHelpers.cpp
checker/ets/helpers.cpp
checker/ets/object.cpp
checker/ets/typeConverter.cpp
checker/ets/typeCreation.cpp
checker/ets/typeRelationContext.cpp
checker/ets/unboxingConverter.cpp
checker/ets/utilityTypeHandlers.cpp
checker/ets/wideningConverter.cpp
checker/ts/binaryLikeExpression.cpp
checker/ts/destructuringContext.cpp
checker/ts/function.cpp
checker/ts/helpers.cpp
checker/ts/object.cpp
checker/ts/typeCreation.cpp
checker/ts/typeElaborationContext.cpp
checker/ts/util.cpp
checker/types/signature.cpp
checker/types/type.cpp
checker/types/typeRelation.cpp
checker/types/globalTypesHolder.cpp
checker/types/ets/byteType.cpp
checker/types/ets/charType.cpp
checker/types/ets/doubleType.cpp
checker/types/ets/floatType.cpp
checker/types/ets/intType.cpp
checker/types/ets/longType.cpp
checker/types/ets/shortType.cpp
checker/types/ets/etsAnyType.cpp
checker/types/ets/etsArrayType.cpp
checker/types/ets/etsBooleanType.cpp
checker/types/ets/etsEnumType.cpp
checker/types/ets/etsExtensionFuncHelperType.cpp
checker/types/ets/etsFunctionType.cpp
checker/types/ets/etsNonNullishType.cpp
checker/types/ets/etsNeverType.cpp
checker/types/ets/etsReadonlyType.cpp
checker/types/ets/etsResizableArrayType.cpp
checker/types/ets/etsNullishTypes.cpp
checker/types/ets/etsObjectType.cpp
checker/types/ets/etsStringType.cpp
checker/types/ets/etsBigIntType.cpp
checker/types/ets/etsTupleType.cpp
checker/types/ets/etsTypeAliasType.cpp
checker/types/ets/etsTypeParameter.cpp
checker/types/ets/etsPartialTypeParameter.cpp
checker/types/ets/etsReturnTypeUtilityType.cpp
checker/types/ets/etsAwaitedType.cpp
checker/types/ets/etsUnionType.cpp
checker/types/ets/etsVoidType.cpp
checker/types/ets/etsWildcardType.cpp
checker/types/ts/anyType.cpp
checker/types/ts/arrayType.cpp
checker/types/ts/bigintLiteralType.cpp
checker/types/ts/bigintType.cpp
checker/types/ts/booleanLiteralType.cpp
checker/types/ts/booleanType.cpp
checker/types/ts/constructorType.cpp
checker/types/ts/enumLiteralType.cpp
checker/types/ts/enumType.cpp
checker/types/ts/functionType.cpp
checker/types/ts/indexInfo.cpp
checker/types/ts/interfaceType.cpp
checker/types/ts/neverType.cpp
checker/types/ts/nonPrimitiveType.cpp
checker/types/ts/nullType.cpp
checker/types/ts/numberLiteralType.cpp
checker/types/ts/numberType.cpp
checker/types/ts/objectDescriptor.cpp
checker/types/ts/objectLiteralType.cpp
checker/types/ts/objectType.cpp
checker/types/ts/stringLiteralType.cpp
checker/types/ts/stringType.cpp
checker/types/ts/tupleType.cpp
checker/types/ts/typeParameter.cpp
checker/types/ts/typeReference.cpp
checker/types/ts/undefinedType.cpp
checker/types/ts/unionType.cpp
checker/types/ts/unknownType.cpp
checker/types/ts/voidType.cpp
util/arktsconfig.cpp
util/bitset.cpp
util/dtoa_helper.cpp
util/diagnostic.cpp
util/diagnosticEngine.cpp
util/eheap.cpp
util/errorRecovery.cpp
util/es2pandaMacros.cpp
util/helpers.cpp
util/importPathManager.cpp
util/nameMangler.cpp
util/path.cpp
util/plugin.cpp
util/perfMetrics.cpp
util/ustring.cpp
evaluate/debugInfoDeserialization/debugInfoDeserializer.cpp
evaluate/debugInfoDeserialization/inheritanceResolution.cpp
evaluate/debugInfoDeserialization/methodBuilder.cpp
evaluate/debugInfoDeserialization/classBuilder.cpp
evaluate/debugInfoStorage.cpp
evaluate/helpers.cpp
evaluate/pathResolver.cpp
evaluate/irCheckHelper.cpp
evaluate/proxyProgramsCache.cpp
evaluate/scopedDebugInfoPlugin.cpp
evaluate/entityDeclarator.cpp
evaluate/evaluateContext.cpp
)
panda_frontend_add_library(es2panda-lib ${PANDA_DEFAULT_LIB_TYPE} ${ES2PANDA_LIB_SRC})
add_dependencies(es2panda-lib isa_gen_es2panda es2panda_options_gen es2panda_diagnostic_gen es2panda_keywords es2panda_signatures)
set(ICU_INCLUDE_DIRS
${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source/common
${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source/i18n
${PANDA_THIRD_PARTY_SOURCES_DIR}/icu/icu4c/source
)
panda_target_include_directories(es2panda-lib SYSTEM
PRIVATE ${ICU_INCLUDE_DIRS}
)
panda_target_include_directories(es2panda-lib
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${OUTPUT_DIR}
)
panda_target_compile_options(es2panda-lib
PRIVATE -fexceptions -Werror=shadow
)
if (EN_ISOLATED_DECLGEN)
message(STATUS "Isolated declgen enabled")
panda_target_compile_definitions(es2panda-lib
PRIVATE -DENABLE_ISOLATED_DECLGEN
)
endif()
panda_target_link_libraries(es2panda-lib
PUBLIC arkbase hmicuuc.z
PRIVATE arkassembler arkdisassembler arkfile
)
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.1) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0))
panda_target_link_libraries(es2panda-lib
PUBLIC stdc++fs
)
endif()
if (PANDA_FUZZILLI)
panda_target_compile_options(es2panda-lib
PRIVATE -fPIC
)
endif()
panda_add_sanitizers(TARGET es2panda-lib SANITIZERS
${PANDA_SANITIZERS_LIST})
if(ES2PANDA_ENABLE_PCH AND NOT PANDA_USE_PREBUILT_TARGETS)
target_precompile_headers(es2panda-lib
PRIVATE
util/ustring.h
ir/astNode.h
compiler/core/pandagen.h
compiler/core/ETSGen.h
checker/TSchecker.h
public/public.h
)
endif()
SET(ES2PANDA_LIB_DIR public)
add_subdirectory(${ES2PANDA_LIB_DIR})
add_subdirectory(aot)
add_subdirectory(declgen_ets2ts)
add_subdirectory(driver/dependency_analyzer)
if(PANDA_TARGET_LINUX OR PANDA_TARGET_WINDOWS)
SET(LSP_LIB "es2panda_lsp")
add_subdirectory(lsp)
set(ES2PANDA_NAPI_LIB_DIR "bindings")
add_subdirectory(${ES2PANDA_NAPI_LIB_DIR})
endif()
if(PANDA_TARGET_LINUX AND PANDA_WITH_ETS)
add_subdirectory(arkts_bindings)
endif()
if(PANDA_WITH_TESTS)
add_subdirectory(test)
endif()
set(FLATBUFFERS_CXX_FLAGS "-Wno-error")
set(FLATBUFFERS_DIR "${PANDA_THIRD_PARTY_SOURCES_DIR}/flatbuffers")
set(FLATBUFFERS_BIN_DIR "${CMAKE_BINARY_DIR}/third_party/flatbuffers")
set(FLATBUFFERS_GEN_DIR "${FLATBUFFERS_BIN_DIR}/generated")
set(FLATBUFFERS_BUILD_TESTS OFF)
set(METADATA_SCHEMA "${ES2PANDA_ROOT}/compiler/metadata/schema.fbs")
set(METADATA_TARGET_NAME "es2panda_generate_metadata_schema")
set(METADATA_SCHEMA_GEN_COMMAND ${FLATBUFFERS_BIN_DIR}/flatc --cpp -o ${FLATBUFFERS_GEN_DIR} -b ${METADATA_SCHEMA} --filename-suffix MetadataGenerated)
if (NOT CROSS_VALUES_CONFIG)
message(STATUS "Configuring Flatbuffers")
message(STATUS " Building compiler (flatc) via `execute_process()`")
find_program(FB_MAKE_PROGRAM make)
execute_process(COMMAND ${CMAKE_COMMAND} -DFLATBUFFERS_BUILD_TESTS:BOOL=OFF -DCMAKE_TOOLCHAIN_FILE= -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_MAKE_PROGRAM:PATH=${FB_MAKE_PROGRAM} -S ${FLATBUFFERS_DIR} -B ${FLATBUFFERS_BIN_DIR} WORKING_DIRECTORY ${FLATBUFFERS_DIR} OUTPUT_QUIET ERROR_QUIET)
execute_process(COMMAND ${CMAKE_COMMAND} --build ${FLATBUFFERS_BIN_DIR} --target flatc WORKING_DIRECTORY ${FLATBUFFERS_DIR} OUTPUT_QUIET)
message(STATUS " Generating schema for metadata via `execute_process()`")
execute_process(COMMAND ${METADATA_SCHEMA_GEN_COMMAND} OUTPUT_QUIET)
panda_target_include_directories(es2panda-lib SYSTEM PRIVATE ${FLATBUFFERS_DIR}/include/ PRIVATE ${FLATBUFFERS_GEN_DIR})
add_custom_target(${METADATA_TARGET_NAME} ${METADATA_SCHEMA_GEN_COMMAND})
endif()