diff --git a/es2panda/binder/variable.h b/es2panda/binder/variable.h index 170055cf16f1c0147fffaf284151a9aa2ef2042e..ad258986818255d123bfe333f7926d7eac30d76e 100644 --- a/es2panda/binder/variable.h +++ b/es2panda/binder/variable.h @@ -49,7 +49,7 @@ public: NO_COPY_SEMANTIC(Variable); NO_MOVE_SEMANTIC(Variable); - VariableType virtual Type() const = 0; + virtual VariableType Type() const = 0; #define DECLARE_CHECKS_CASTS(variableType, className) \ bool Is##className() const \ diff --git a/es2panda/compiler/core/regAllocator.cpp b/es2panda/compiler/core/regAllocator.cpp index c6d9ac35373c50ca9b24a8ff07b9f18e970bc78d..7c41a1bd4d9f6b82b890cae7a80a2ad427f395f4 100644 --- a/es2panda/compiler/core/regAllocator.cpp +++ b/es2panda/compiler/core/regAllocator.cpp @@ -120,7 +120,6 @@ void RegAllocator::AdjustInsRegWhenHasSpill() std::vector regsKind; std::array regs {}; auto regCnt = ins->Registers(®s); - if (regCnt == 0) { newInsns.push_back(ins); continue; @@ -148,8 +147,8 @@ void RegAllocator::AdjustInsRegWhenHasSpill() pg_->SetInsns(newInsns); } -void RegAllocator::AdjustInsSpill(Span ®isters, IRNode *ins, ArenaList &newInsns, - std::vector ®sKind) +void RegAllocator::AdjustInsSpill(const Span ®isters, IRNode *ins, ArenaList &newInsns, + const std::vector ®sKind) { ASSERT(spillIndex_ == 0); ASSERT(!regsKind.empty()); diff --git a/es2panda/compiler/core/regAllocator.h b/es2panda/compiler/core/regAllocator.h index 202d43a1264017ef0c536b16eddbb58c388286ce..75b63696e6b80bf249a158ead32e1db76bf5dd7a 100644 --- a/es2panda/compiler/core/regAllocator.h +++ b/es2panda/compiler/core/regAllocator.h @@ -122,8 +122,8 @@ private: void Run(IRNode *ins); void Run(IRNode *ins, size_t argCount); void Run(IRNode *ins, int64_t typeIndex); - void AdjustInsSpill(Span ®isters, IRNode *ins, ArenaList &newInsns, - std::vector ®sKind); + void AdjustInsSpill(const Span ®isters, IRNode *ins, ArenaList &newInsns, + const std::vector ®sKind); void AdjustRangeInsSpill(Span ®isters, IRNode *ins, ArenaList &newInsns); template diff --git a/es2panda/ir/expressions/literals/bigIntLiteral.cpp b/es2panda/ir/expressions/literals/bigIntLiteral.cpp index 0a274fa6a227063a2e92c215839d7d85c1282f9a..47251cae62baa0140f520d192632c84824e05fe8 100644 --- a/es2panda/ir/expressions/literals/bigIntLiteral.cpp +++ b/es2panda/ir/expressions/literals/bigIntLiteral.cpp @@ -30,7 +30,7 @@ void BigIntLiteral::Dump(ir::AstDumper *dumper) const void BigIntLiteral::Compile(compiler::PandaGen *pg) const { - util::StringView bigIntValue = src_.Substr(0, src_.Length()-1); + util::StringView bigIntValue = src_.Substr(0, src_.Length() - 1); pg->LoadAccumulatorBigInt(this, bigIntValue); } diff --git a/es2panda/parser/parserImpl.cpp b/es2panda/parser/parserImpl.cpp index 908c246cd9f66f22efcc7a768b0bcadbc23b7f93..11f74ffc373ed89a8a6b8e0f85ca1cc7597f154f 100644 --- a/es2panda/parser/parserImpl.cpp +++ b/es2panda/parser/parserImpl.cpp @@ -807,7 +807,7 @@ bool ParserImpl::IsTSNamedTupleMember() return isNamedMember; } -void ParserImpl::HandleRestType(ir::AstNodeType elementType, bool *hasRestType) +void ParserImpl::HandleRestType(ir::AstNodeType elementType, bool *hasRestType) const { if (elementType == ir::AstNodeType::TS_ARRAY_TYPE && *hasRestType) { ThrowSyntaxError("A rest element cannot follow another rest element"); @@ -3460,7 +3460,7 @@ ir::Expression *ParserImpl::ParseFunctionParameter(bool isDeclare) return functionParameter; } -void ParserImpl::ValidateLvalueAssignmentTarget(ir::Expression *node) +void ParserImpl::ValidateLvalueAssignmentTarget(ir::Expression *node) const { switch (node->Type()) { case ir::AstNodeType::IDENTIFIER: { diff --git a/es2panda/parser/parserImpl.h b/es2panda/parser/parserImpl.h index 7b50fd675c3a18b60d8f386ffd6915959f573c88..5a08d6fc65305309419067acb562b9bad0d0caa3 100644 --- a/es2panda/parser/parserImpl.h +++ b/es2panda/parser/parserImpl.h @@ -260,7 +260,7 @@ private: ir::Expression *ParseTsQualifiedReference(ir::Expression *typeName); ir::Expression *ParseTsTypeReferenceOrQuery(bool parseQuery = false); bool IsTSNamedTupleMember(); - void HandleRestType(ir::AstNodeType elementType, bool *hasRestType); + void HandleRestType(ir::AstNodeType elementType, bool *hasRestType) const; ir::Expression *ParseTsTupleElement(ir::TSTupleKind *kind, bool *seenOptional, bool *hasRestType); ir::TSTupleType *ParseTsTupleType(); ir::TSImportType *ParseTsImportType(const lexer::SourcePosition &startLoc, bool isTypeof = false); @@ -403,7 +403,7 @@ private: ir::AstNode *ParseImportDefaultSpecifier(ArenaVector *specifiers); ir::AstNode *ParseImportSpecifiers(ArenaVector *specifiers); void ValidateAssignmentTarget(ExpressionParseFlags flags, ir::Expression *node); - void ValidateLvalueAssignmentTarget(ir::Expression *node); + void ValidateLvalueAssignmentTarget(ir::Expression *node) const; void ValidateArrowParameterBindings(const ir::Expression *node); ir::ExportDefaultDeclaration *ParseExportDefaultDeclaration(const lexer::SourcePosition &startLoc, diff --git a/es2panda/parser/transformer/transformer.cpp b/es2panda/parser/transformer/transformer.cpp index eccc66a4e2a7430561c4cbe609df1a20e843902f..ee8e99c9d88f57a3ffb096d822b4cf505e3f44b1 100644 --- a/es2panda/parser/transformer/transformer.cpp +++ b/es2panda/parser/transformer/transformer.cpp @@ -720,10 +720,10 @@ std::vector Transformer::CreateParamDecorators(util::StringView c */ std::vector res; auto paramsDecorators = node->GetParamDecorators(); - for (int i = paramsDecorators.size() - 1; i >= 0; i--) { + for (uint32_t i = paramsDecorators.size() - 1; i >= 0; i--) { auto paramIndex = paramsDecorators[i].paramIndex; auto decorators = paramsDecorators[i].decorators; - for (int j = decorators.size() - 1; j >= 0; j--) { + for (uint32_t j = decorators.size() - 1; j >= 0; j--) { ArenaVector arguments(Allocator()->Adapter()); arguments.push_back(CreateDecoratorTarget(className, isConstructor || isStatic)); arguments.push_back(isConstructor ? @@ -759,7 +759,7 @@ std::vector Transformer::CreatePropertyDecorators(util::StringVie */ std::vector res; auto decorators = node->Decorators(); - for (int i = decorators.size() - 1; i >= 0; i--) { + for (uint32_t i = decorators.size() - 1; i >= 0; i--) { ArenaVector arguments(Allocator()->Adapter()); arguments.push_back(CreateDecoratorTarget(className, isStatic)); arguments.push_back(GetClassMemberName(node->Key(), node->IsComputed(), node)); @@ -795,7 +795,7 @@ std::vector Transformer::CreateMethodDecorators(util::StringView */ std::vector res; auto decorators = node->Decorators(); - for (int i = decorators.size() - 1; i >= 0; i--) { + for (uint32_t i = decorators.size() - 1; i >= 0; i--) { ArenaVector arguments(Allocator()->Adapter()); arguments.push_back(CreateDecoratorTarget(className, isStatic)); arguments.push_back(GetClassMemberName(node->Key(), node->Computed(), node)); @@ -896,7 +896,7 @@ std::vector Transformer::CreateClassDecorators(ir::ClassDeclarati auto decorators = node->Decorators(); auto size = decorators.size(); std::vector res; - for (int i = size - 1; i >= 0; i--) { + for (uint32_t i = size - 1; i >= 0; i--) { ArenaVector arguments(Allocator()->Adapter()); arguments.push_back(CreateReferenceIdentifier(name)); auto *callExpr = AllocNode(decorators[i]->Expr(), std::move(arguments), nullptr, false); diff --git a/es2panda/parser/transformer/transformer.h b/es2panda/parser/transformer/transformer.h index 9e90beb7f2c6b3ca624c5c6faaaa368012f17941..69ab3c21f7f7dbf4a70b5b97bd67b8212c788611 100644 --- a/es2panda/parser/transformer/transformer.h +++ b/es2panda/parser/transformer/transformer.h @@ -115,7 +115,7 @@ private: ir::Expression *init = nullptr, bool needBinding = true); ir::CallExpression *CreateCallExpressionForTsModule(ir::TSModuleDeclaration *node, - util::StringView paramName, + util::StringView name, bool isExport = false); ir::Expression *CreateTsModuleParam(util::StringView paramName, bool isExport); ir::ExpressionStatement *CreateTsModuleAssignment(util::StringView name); diff --git a/test262/utils.py b/test262/utils.py index e43de788304694120aa21637c469c2468c3a8ad7..181407052bbb576f9310e9ff85bd648e1474a651 100755 --- a/test262/utils.py +++ b/test262/utils.py @@ -165,6 +165,7 @@ def search_dependency(file, directory): for f in files: if f == file: return os.path.join(root, f) + return "FILE_NOT_FOUND" def collect_module_dependencies(file, directory, traversedDependencies): @@ -172,15 +173,16 @@ def collect_module_dependencies(file, directory, traversedDependencies): traversedDependencies.append(file) with open(file, 'r', encoding='utf-8') as f: content = f.read() - module_import_list = re.findall(r'(export|import|from)(?:\s*)\(?(\'(\.\/.*)\'|"(\.\/.*)")\)?', content) - + module_import_list = re.findall(r'(import|from)(?:\s*)\(?(\'(\.\/.*)\'|"(\.\/.*)")\)?', content) for result in list(set(module_import_list)): - specifier = result[2] if len(result[2]) != 0 else result[3] - if re.search(r'\S+_FIXTURE.js$', specifier): - dependency = search_dependency(specifier.lstrip('./'), directory) - if dependency not in traversedDependencies: + specifier = (result[2] if len(result[2]) != 0 else result[3]).lstrip('./') + # specifier = specifier.lstrip('./') + if os.path.basename(file) is not specifier: + dependency = search_dependency(specifier, directory) + if dependency != "FILE_NOT_FOUND" and dependency not in traversedDependencies: dependencies.extend(collect_module_dependencies(dependency, directory, - list(set(traversedDependencies)))) - dependencies.append(dependency) + list(set(traversedDependencies)))) + if dependency != "FILE_NOT_FOUND": + dependencies.append(dependency) - return dependencies + return dependencies \ No newline at end of file diff --git a/ts2panda/ts2abc/ts2abc.cpp b/ts2panda/ts2abc/ts2abc.cpp index 9b0be9940321f7d8618087d457a543c9e55b77bb..f244ae8830dc6baf537ee136f7c93126d9524e93 100644 --- a/ts2panda/ts2abc/ts2abc.cpp +++ b/ts2panda/ts2abc/ts2abc.cpp @@ -1450,7 +1450,7 @@ static bool EmitProgram(const std::string &output, int optLevel, std::string opt return true; } -static bool EmitAndRestoreProgram(panda::pandasm::Program &prog, panda::ts2abc::Options options) +static bool EmitAndRestoreProgram(panda::pandasm::Program &prog, const panda::ts2abc::Options options) { if (!EmitProgram(g_outputFileName, options.GetOptLevelArg(), options.GetOptLogLevelArg(), prog)) { std::cerr << "fail to emit porgram " << g_outputFileName << " in HandleBuffer" << std::endl; @@ -1462,7 +1462,7 @@ static bool EmitAndRestoreProgram(panda::pandasm::Program &prog, panda::ts2abc:: } static bool HandleBuffer(const int &ret, char *buff, std::string &data, panda::pandasm::Program &prog, - panda::ts2abc::Options options) + const panda::ts2abc::Options options) { uint32_t startPos = 0; if (options.IsMultiProgramsPipe() && ((buff[0] == '*' && data.back() != '#') || @@ -1509,7 +1509,7 @@ static bool HandleBuffer(const int &ret, char *buff, std::string &data, panda::p return true; } -static bool ReadFromPipe(panda::pandasm::Program &prog, panda::ts2abc::Options options) +static bool ReadFromPipe(panda::pandasm::Program &prog, const panda::ts2abc::Options options) { std::string data; const size_t bufSize = 4096; @@ -1536,7 +1536,7 @@ static bool ReadFromPipe(panda::pandasm::Program &prog, panda::ts2abc::Options o return true; } -bool GenerateProgramsFromPipe(panda::ts2abc::Options options) +bool GenerateProgramsFromPipe(const panda::ts2abc::Options options) { panda::pandasm::Program prog = panda::pandasm::Program(); prog.lang = panda::pandasm::extensions::Language::ECMASCRIPT; diff --git a/ts2panda/ts2abc/ts2abc.h b/ts2panda/ts2abc/ts2abc.h index dfcee1e337103d65e9564622e9e5c681dc01d371..390924d22e5dc1d513007977eda335fe02bd87d9 100644 --- a/ts2panda/ts2abc/ts2abc.h +++ b/ts2panda/ts2abc/ts2abc.h @@ -52,7 +52,7 @@ enum class OptLevel { bool HandleJsonFile(const std::string &input, std::string &data); bool GenerateProgram(const std::string &data, const std::string &output, panda::ts2abc::Options options); -bool GenerateProgramsFromPipe(panda::ts2abc::Options options); +bool GenerateProgramsFromPipe(const panda::ts2abc::Options options); bool CompileNpmEntries(const std::string &input, const std::string &output); bool GetDebugLog(); void ParseLogEnable(const Json::Value &rootValue);