diff --git a/lib/checkunusedfunctions.cpp b/lib/checkunusedfunctions.cpp index 3a63bf0abe5..a582503c2b3 100644 --- a/lib/checkunusedfunctions.cpp +++ b/lib/checkunusedfunctions.cpp @@ -98,6 +98,10 @@ void CheckUnusedFunctions::parseTokens(const Tokenizer &tokenizer, const Setting FunctionUsage &usage = mFunctions[stripTemplateParameters(func->name())]; + if (func->retDef && (func->retDef->isAttributeUnused() || func->retDef->isAttributeMaybeUnused())) { + usage.usedOtherFile = true; + } + if (!usage.lineNumber) usage.lineNumber = func->token->linenr(); diff --git a/test/testunusedfunctions.cpp b/test/testunusedfunctions.cpp index 8de0c81bf01..a132d51d958 100644 --- a/test/testunusedfunctions.cpp +++ b/test/testunusedfunctions.cpp @@ -501,6 +501,10 @@ class TestUnusedFunctions : public TestFixture { // #10661 check("extern \"C\" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t dataSize) { return 0; }\n"); ASSERT_EQUALS("", errout_str()); + + check("[[maybe_unused]] void f() {}\n" // #13268 + "__attribute__((unused)) void g() {}\n"); + ASSERT_EQUALS("", errout_str()); } void initializer_list() {