Lines Matching refs:node

120 void ETSWarningAnalyzer::ETSWarningSuggestFinal(const ir::AstNode *node)
122 if (node->IsClassDeclaration() && !program_->NodeContainsETSNolint(node, ETSWarnings::SUGGEST_FINAL)) {
123 if (node->AsClassDeclaration()->Definition()->IsClassDefinition()) {
124 AnalyzeClassDefForFinalModifier(node->AsClassDeclaration()->Definition());
127 const auto classBody = node->AsClassDeclaration()->Definition()->Body();
130 AnalyzeClassMethodForFinalModifier(it->AsMethodDefinition(), node->AsClassDeclaration()->Definition());
134 node->Iterate([&](auto *childNode) { ETSWarningSuggestFinal(childNode); });
172 void ETSWarningAnalyzer::ETSWarningsProhibitTopLevelStatements(const ir::AstNode *node)
174 if (!node->IsClassDeclaration() ||
175 program_->NodeContainsETSNolint(node, ETSWarnings::PROHIBIT_TOP_LEVEL_STATEMENTS)) {
176 node->Iterate([&](auto *childNode) { ETSWarningsProhibitTopLevelStatements(childNode); });
180 const auto *classDef = node->AsClassDeclaration()->Definition();
182 node->Iterate([&](auto *childNode) { ETSWarningsProhibitTopLevelStatements(childNode); });
209 void ETSWarningAnalyzer::ETSWarningBoostEqualityStatement(const ir::AstNode *node)
211 ASSERT(node != nullptr);
213 if (node->IsBinaryExpression() && !program_->NodeContainsETSNolint(node, ETSWarnings::BOOST_EQUALITY_STATEMENT)) {
214 const auto binExpr = node->AsBinaryExpression();
218 ETSThrowWarning("Boost Equality Statement. Change sides of binary expression", node->Start());
222 node->Iterate([&](auto *childNode) { ETSWarningBoostEqualityStatement(childNode); });
225 void ETSWarningAnalyzer::ETSWarningRemoveAsync(const ir::AstNode *node)
227 if (node->IsMethodDefinition() && !program_->NodeContainsETSNolint(node, ETSWarnings::REMOVE_ASYNC_FUNCTIONS)) {
228 const auto methodDefinition = node->AsMethodDefinition();
233 node->Iterate([&](auto *childNode) { ETSWarningRemoveAsync(childNode); });
236 void ETSWarningAnalyzer::ETSWarningRemoveLambda(const ir::AstNode *node)
238 ASSERT(node != nullptr);
240 if (node->IsArrowFunctionExpression() && !program_->NodeContainsETSNolint(node, ETSWarnings::REMOVE_LAMBDA)) {
241 ETSThrowWarning("Replace the lambda function with a regular function", node->Start());
243 node->Iterate([&](auto *childNode) { ETSWarningRemoveLambda(childNode); });
246 void ETSWarningAnalyzer::CheckTypeOfBoxing(const ir::AstNode *node)
248 ASSERT(node != nullptr);
249 const auto flags = node->GetBoxingUnboxingFlags();
253 ETSThrowWarning("Implicit Boxing to Int" + GetBoxingUnboxingType(node), node->Start());
256 ETSThrowWarning("Implicit Boxing to Boolean" + GetBoxingUnboxingType(node), node->Start());
259 ETSThrowWarning("Implicit Boxing to Byte" + GetBoxingUnboxingType(node), node->Start());
262 ETSThrowWarning("Implicit Boxing to Char" + GetBoxingUnboxingType(node), node->Start());
265 ETSThrowWarning("Implicit Boxing to Double" + GetBoxingUnboxingType(node), node->Start());
268 ETSThrowWarning("Implicit Boxing to Float" + GetBoxingUnboxingType(node), node->Start());
271 ETSThrowWarning("Implicit Boxing to Long" + GetBoxingUnboxingType(node), node->Start());
274 ETSThrowWarning("Implicit Boxing to Short" + GetBoxingUnboxingType(node), node->Start());
282 void ETSWarningAnalyzer::CheckTypeOfUnboxing(const ir::AstNode *node)
284 ASSERT(node != nullptr);
285 const auto flags = node->GetBoxingUnboxingFlags();
289 ETSThrowWarning("Implicit Unboxing to int" + GetBoxingUnboxingType(node), node->Start());
292 ETSThrowWarning("Implicit Unboxing to boolean" + GetBoxingUnboxingType(node), node->Start());
295 ETSThrowWarning("Implicit Unboxing to byte" + GetBoxingUnboxingType(node), node->Start());
298 ETSThrowWarning("Implicit Unboxing to char" + GetBoxingUnboxingType(node), node->Start());
301 ETSThrowWarning("Implicit Unboxing to double" + GetBoxingUnboxingType(node), node->Start());
304 ETSThrowWarning("Implicit Unboxing to float" + GetBoxingUnboxingType(node), node->Start());
307 ETSThrowWarning("Implicit Unboxing to long" + GetBoxingUnboxingType(node), node->Start());
310 ETSThrowWarning("Implicit Unboxing to short" + GetBoxingUnboxingType(node), node->Start());
318 void ETSWarningAnalyzer::CheckTypeOfBoxingUnboxing(const ir::AstNode *node)
320 ASSERT(node != nullptr);
322 CheckTypeOfBoxing(node);
323 CheckTypeOfUnboxing(node);
326 std::string ETSWarningAnalyzer::GetBoxingUnboxingType(const ir::AstNode *node)
328 ASSERT(node->Parent() != nullptr);
329 switch (node->Parent()->Type()) {
359 void ETSWarningAnalyzer::ETSWarningImplicitBoxingUnboxing(const ir::AstNode *node)
361 ASSERT(node != nullptr);
363 switch (node->Type()) {
372 if (!program_->NodeContainsETSNolint(node, ETSWarnings::IMPLICIT_BOXING_UNBOXING)) {
373 node->Iterate([this](auto *childNode) { CheckTypeOfBoxingUnboxing(childNode); });
382 node->Iterate([&](auto *childNode) { ETSWarningImplicitBoxingUnboxing(childNode); });