================
@@ -0,0 +1,34 @@
+//===--- ReturnConstRefFromParameterCheck.cpp - clang-tidy 
----------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "ReturnConstRefFromParameterCheck.h"
+#include "../utils/Matchers.h"
+#include "clang/ASTMatchers/ASTMatchFinder.h"
+#include "clang/ASTMatchers/ASTMatchers.h"
+
+using namespace clang::ast_matchers;
+
+namespace clang::tidy::bugprone {
+
+void ReturnConstRefFromParameterCheck::registerMatchers(MatchFinder *Finder) {
+  Finder->addMatcher(
+      returnStmt(hasReturnValue(declRefExpr(to(parmVarDecl(hasType(
+                     hasCanonicalType(matchers::isReferenceToConst())))))))
+          .bind("ret"),
+      this);
----------------
SimplyDanny wrote:

Does this need to check that the function's return type is a constant reference 
as well? For example, is
```c++
const S fn(const S &a) {
    return a;
}
```
without the reference return type okay? The documentation of this check says so:

> Detects return statements that return a constant reference parameter **as 
> constant reference**.

As I understand the AUTOSAR rule, it's about pointers or references to 
automatic variables returned from a function. So

```c++
int *f(int i) { return &i; }
```

and

```c++
int *g() {
    int i = 1;
    return &i;
}
```

would be violations of the rule too.

I know that we are not allowed to cite the rules literally, but only checking 
constant reference parameters might be too restricted. Or are there other 
checks implementing the other cases already? If so, should they be extended 
instead of having a new separate check?

https://github.com/llvm/llvm-project/pull/89497
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to