https://github.com/PiotrZSL approved this pull request.
Overall looks fine.
https://github.com/llvm/llvm-project/pull/70316
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -156,6 +153,49 @@ void PreferMemberInitializerCheck::check(
const CXXRecordDecl *Class = Ctor->getParent();
bool FirstToCtorInits = true;
+ std::map AssignedFields{};
PiotrZSL wrote:
Consider something like llvm::SmallDenceMap or llvm::SmallMapVector
@@ -156,6 +153,49 @@ void PreferMemberInitializerCheck::check(
const CXXRecordDecl *Class = Ctor->getParent();
bool FirstToCtorInits = true;
+ std::map AssignedFields{};
+
+ // Checks if Field is initialised using a field that will be initialised
after
+ // it.
+ // T
https://github.com/HerrCai0907 updated
https://github.com/llvm/llvm-project/pull/70316
>From 41278ca046ae5d4be4ac4ac1bc673b5010668d9c Mon Sep 17 00:00:00 2001
From: Congcong Cai
Date: Thu, 26 Oct 2023 18:54:05 +0800
Subject: [PATCH 1/2] [clang-tidy]Fix PreferMemberInitializer false positive
fo
@@ -570,3 +570,19 @@ struct PR52818 {
int bar;
};
+
+struct RefReassignment {
+ RefReassignment(int &i) : m_i{i} {
+m_i = 1;
+ }
+ int & m_i;
+};
+
+struct ReassignmentAfterUnsafetyAssignment {
+ ReassignmentAfterUnsafetyAssignment() {
+int a = 10;
+m_i =
https://github.com/PiotrZSL requested changes to this pull request.
Just few nits, mainly naming.
https://github.com/llvm/llvm-project/pull/70316
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cf
@@ -570,3 +570,19 @@ struct PR52818 {
int bar;
};
+
+struct RefReassignment {
+ RefReassignment(int &i) : m_i{i} {
+m_i = 1;
+ }
+ int & m_i;
+};
+
+struct ReassignmentAfterUnsafetyAssignment {
+ ReassignmentAfterUnsafetyAssignment() {
+int a = 10;
+m_i =
@@ -54,31 +56,43 @@ static bool shouldBeDefaultMemberInitializer(const Expr
*Value) {
}
namespace {
+
AST_MATCHER_P(FieldDecl, indexNotLessThan, unsigned, Index) {
return Node.getFieldIndex() >= Index;
}
+
+enum class AssignedLevel { None, Assigned, UnsafetyAssigned };
-
@@ -250,7 +250,8 @@ Changes in existing checks
- Improved :doc:`cppcoreguidelines-prefer-member-initializer
` check to
- ignore delegate constructors.
+ ignore delegate constructors and ignore re-assignment for reference or after
+ unsafety assignment.
Pi
@@ -54,31 +56,43 @@ static bool shouldBeDefaultMemberInitializer(const Expr
*Value) {
}
namespace {
+
AST_MATCHER_P(FieldDecl, indexNotLessThan, unsigned, Index) {
return Node.getFieldIndex() >= Index;
}
+
+enum class AssignedLevel { None, Assigned, UnsafetyAssigned };
+
llvmbot wrote:
@llvm/pr-subscribers-clang-tidy
Author: Congcong Cai (HerrCai0907)
Changes
- assignment twice cannot be simplified to once when assigning to reference type
- safe assignment cannot be advanced before unsafe assignment
---
Full diff: https://github.com/llvm/llvm-project/pull
https://github.com/HerrCai0907 created
https://github.com/llvm/llvm-project/pull/70316
- assignment twice cannot be simplified to once when assigning to reference type
- safe assignment cannot be advanced before unsafe assignment
>From 41278ca046ae5d4be4ac4ac1bc673b5010668d9c Mon Sep 17 00:00:0
12 matches
Mail list logo