Skip to content

Commit 1dfbe28

Browse files
committed
add language/standard check
1 parent 3d3d39a commit 1dfbe28

3 files changed

Lines changed: 5 additions & 3 deletions

File tree

lib/checkfunctions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ void CheckFunctionsImpl::checkMissingReturn()
329329
continue;
330330
if (Function::returnsVoid(function, true))
331331
continue;
332-
if (Function::isCoroutine(function))
332+
if (Function::isCoroutine(function, mSettings.standards, *mTokenizer))
333333
continue;
334334
const Token *errorToken = checkMissingReturnScope(scope->bodyEnd, mSettings.library);
335335
if (errorToken)

lib/symboldatabase.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3407,8 +3407,10 @@ bool Function::returnsVoid(const Function* function, bool unknown)
34073407
});
34083408
}
34093409

3410-
bool Function::isCoroutine(const Function* function)
3410+
bool Function::isCoroutine(const Function* function, const Standards &standards, const Tokenizer &tokens)
34113411
{
3412+
if (!tokens.isCPP() || standards.cpp < Standards::CPP20)
3413+
return false;
34123414
if (!function->functionScope)
34133415
return false;
34143416
const Scope *scope = function->functionScope;

lib/symboldatabase.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -945,7 +945,7 @@ class CPPCHECKLIB Function {
945945
static bool returnsStandardType(const Function* function, bool unknown = false);
946946

947947
static bool returnsVoid(const Function* function, bool unknown = false);
948-
static bool isCoroutine(const Function* function);
948+
static bool isCoroutine(const Function* function, const Standards &standards, const Tokenizer &tokens);
949949

950950
static std::vector<const Token*> findReturns(const Function* f);
951951

0 commit comments

Comments
 (0)