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 dd0f440c5f2ac206d9009db5b6e653a07a63fe90..984bab01e72848c35800ddaed13021a02329776e 100644 --- a/es2panda/compiler/core/regAllocator.h +++ b/es2panda/compiler/core/regAllocator.h @@ -121,8 +121,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 c411dbefc67dd48b02b537a7a447b070ff60d29d..cd2c44e2dece06a4e84b07bcfaaa327b6a6ac626 100644 --- a/es2panda/parser/parserImpl.cpp +++ b/es2panda/parser/parserImpl.cpp @@ -866,7 +866,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"); @@ -939,7 +939,6 @@ ir::Expression *ParserImpl::ParseTsTupleElement(ir::TSTupleKind *kind, bool *see element = AllocNode(std::move(element)); element->SetRange({elementStartPos, lexer_->GetToken().End()}); lexer_->NextToken(); // eat '?' - isOptional = true; *seenOptional = true; } else if (*seenOptional && !isRestType) { ThrowSyntaxError("A required element cannot follow an optional element"); @@ -3094,6 +3093,10 @@ ArenaVector ParserImpl::ParseFunctionParams(bool isDeclare, ArenaVector params(Allocator()->Adapter()); bool seenOptional = false; + bool isInMethodDefinition = context_.Status() & ParserStatus::IN_METHOD_DEFINITION; + if (isInMethodDefinition) { + ASSERT(paramDecorators != nullptr); + } size_t index = 0; while (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { @@ -3519,7 +3522,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 03288da0b31ebfcdbfbbbbc901e470cf016ace28..cd12f818eb074aad483505785dba4c48508b877b 100644 --- a/es2panda/parser/parserImpl.h +++ b/es2panda/parser/parserImpl.h @@ -261,7 +261,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); @@ -404,7 +404,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.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/ts2panda/ts2abc/ts2abc.cpp b/ts2panda/ts2abc/ts2abc.cpp index 0c5593e91c2f8603c6d0a75d13973afd5c5e56f4..aa60411b171c9fad09fe455b7b0759c027623678 100644 --- a/ts2panda/ts2abc/ts2abc.cpp +++ b/ts2panda/ts2abc/ts2abc.cpp @@ -1469,7 +1469,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; @@ -1481,7 +1481,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() != '#') || @@ -1528,7 +1528,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; @@ -1555,7 +1555,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..d94d03546cd975660339d95c81c30b9d4c0df73b 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);