[PATCH] D25647: [clang-tidy] Don't use a SmallSetVector of an enum.

2016-10-21 Thread Justin Lebar via cfe-commits
jlebar added a comment.

Thank you for the reviews, everyone!


Repository:
  rL LLVM

https://reviews.llvm.org/D25647



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25647: [clang-tidy] Don't use a SmallSetVector of an enum.

2016-10-21 Thread Justin Lebar via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL284873: [clang-tidy] Don't use a SmallSetVector of an enum. 
(authored by jlebar).

Changed prior to commit:
  https://reviews.llvm.org/D25647?vs=75443=75478#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D25647

Files:
  
clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
  
clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h


Index: 
clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
===
--- 
clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
+++ 
clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
@@ -31,7 +31,7 @@
   void check(const ast_matchers::MatchFinder::MatchResult ) override;
   void onEndOfTranslationUnit() override;
 
-  enum class SpecialMemberFunctionKind {
+  enum class SpecialMemberFunctionKind : uint8_t {
 Destructor,
 CopyConstructor,
 CopyAssignment,
@@ -43,7 +43,7 @@
 
   using ClassDefiningSpecialMembersMap =
   llvm::DenseMap>;
+ llvm::SmallVector>;
 
 private:
   ClassDefiningSpecialMembersMap ClassWithSpecialMembers;
Index: 
clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
===
--- 
clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
+++ 
clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
@@ -97,8 +97,13 @@
   {"move-assign", SpecialMemberFunctionKind::MoveAssignment}};
 
   for (const auto  : Matchers)
-if (Result.Nodes.getNodeAs(KV.first))
-  ClassWithSpecialMembers[ID].insert(KV.second);
+if (Result.Nodes.getNodeAs(KV.first)) {
+  SpecialMemberFunctionKind Kind = KV.second;
+  llvm::SmallVectorImpl  =
+  ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end())
+Members.push_back(Kind);
+}
 }
 
 void SpecialMemberFunctionsCheck::onEndOfTranslationUnit() {
@@ -125,7 +130,7 @@
 std::back_inserter(UndefinedSpecialMembers));
 
 diag(C.first.first, "class '%0' defines %1 but does not define %2")
-<< C.first.second << join(DefinedSpecialMembers.getArrayRef(), " and ")
+<< C.first.second << join(DefinedSpecialMembers, " and ")
 << join(UndefinedSpecialMembers, " or ");
   }
 }


Index: clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
===
--- clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
+++ clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
@@ -31,7 +31,7 @@
   void check(const ast_matchers::MatchFinder::MatchResult ) override;
   void onEndOfTranslationUnit() override;
 
-  enum class SpecialMemberFunctionKind {
+  enum class SpecialMemberFunctionKind : uint8_t {
 Destructor,
 CopyConstructor,
 CopyAssignment,
@@ -43,7 +43,7 @@
 
   using ClassDefiningSpecialMembersMap =
   llvm::DenseMap>;
+ llvm::SmallVector>;
 
 private:
   ClassDefiningSpecialMembersMap ClassWithSpecialMembers;
Index: clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
===
--- clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
+++ clang-tools-extra/trunk/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
@@ -97,8 +97,13 @@
   {"move-assign", SpecialMemberFunctionKind::MoveAssignment}};
 
   for (const auto  : Matchers)
-if (Result.Nodes.getNodeAs(KV.first))
-  ClassWithSpecialMembers[ID].insert(KV.second);
+if (Result.Nodes.getNodeAs(KV.first)) {
+  SpecialMemberFunctionKind Kind = KV.second;
+  llvm::SmallVectorImpl  =
+  ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end())
+Members.push_back(Kind);
+}
 }
 
 void SpecialMemberFunctionsCheck::onEndOfTranslationUnit() {
@@ -125,7 +130,7 @@
 std::back_inserter(UndefinedSpecialMembers));
 
 diag(C.first.first, "class '%0' defines %1 but does not define %2")
-<< C.first.second << join(DefinedSpecialMembers.getArrayRef(), " and ")
+<< C.first.second << join(DefinedSpecialMembers, " and ")
 << join(UndefinedSpecialMembers, " or ");
   }
 }
___
cfe-commits mailing list

[PATCH] D25647: [clang-tidy] Don't use a SmallSetVector of an enum.

2016-10-21 Thread Justin Lebar via cfe-commits
jlebar added inline comments.



Comment at: 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp:103
+  auto  = ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end()) Members.push_back(Kind);
+}

jlebar wrote:
> bkramer wrote:
> > jlebar wrote:
> > > aaron.ballman wrote:
> > > > Please drop the `push_back()` onto its own line.
> > > This was actually how clang-tidy formatted the line.  My understanding is 
> > > that we go with that in llvm projects?  Unless you're saying I have an 
> > > outdated clang-tidy, in which case I will investigate that.
> > It's what happens when your clang-format is using Google style. Some 
> > versions of clang-format ship with weird defaults, so you have to add 
> > -style=LLVM manually.
> Er, s/clang-tidy/clang-format/
Oh, this is happening because clang-tools-extra does not have a .clang-format 
file in tree.  It's relying on us picking up clang's .clang-format file, but if 
you use the monorepo [0] (or if you have a tool that's smart and stops at git 
repository boundaries) you won't find it.

Mystery solved.  I can check those files in if you want, or not if you want.  :)

[0] https://github.com/llvm-project/llvm-project


https://reviews.llvm.org/D25647



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25647: [clang-tidy] Don't use a SmallSetVector of an enum.

2016-10-21 Thread Justin Lebar via cfe-commits
jlebar updated this revision to Diff 75443.
jlebar marked 5 inline comments as done.
jlebar added a comment.

Adjust formatting, write out type of 'auto'.


https://reviews.llvm.org/D25647

Files:
  clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
  clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h


Index: 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
===
--- clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
+++ clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
@@ -31,7 +31,7 @@
   void check(const ast_matchers::MatchFinder::MatchResult ) override;
   void onEndOfTranslationUnit() override;
 
-  enum class SpecialMemberFunctionKind {
+  enum class SpecialMemberFunctionKind : uint8_t {
 Destructor,
 CopyConstructor,
 CopyAssignment,
@@ -43,7 +43,7 @@
 
   using ClassDefiningSpecialMembersMap =
   llvm::DenseMap>;
+ llvm::SmallVector>;
 
 private:
   ClassDefiningSpecialMembersMap ClassWithSpecialMembers;
Index: 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
===
--- 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
+++ 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
@@ -97,8 +97,13 @@
   {"move-assign", SpecialMemberFunctionKind::MoveAssignment}};
 
   for (const auto  : Matchers)
-if (Result.Nodes.getNodeAs(KV.first))
-  ClassWithSpecialMembers[ID].insert(KV.second);
+if (Result.Nodes.getNodeAs(KV.first)) {
+  SpecialMemberFunctionKind Kind = KV.second;
+  llvm::SmallVectorImpl  =
+  ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end())
+Members.push_back(Kind);
+}
 }
 
 void SpecialMemberFunctionsCheck::onEndOfTranslationUnit() {
@@ -125,7 +130,7 @@
 std::back_inserter(UndefinedSpecialMembers));
 
 diag(C.first.first, "class '%0' defines %1 but does not define %2")
-<< C.first.second << join(DefinedSpecialMembers.getArrayRef(), " and ")
+<< C.first.second << join(DefinedSpecialMembers, " and ")
 << join(UndefinedSpecialMembers, " or ");
   }
 }


Index: clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
===
--- clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
+++ clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
@@ -31,7 +31,7 @@
   void check(const ast_matchers::MatchFinder::MatchResult ) override;
   void onEndOfTranslationUnit() override;
 
-  enum class SpecialMemberFunctionKind {
+  enum class SpecialMemberFunctionKind : uint8_t {
 Destructor,
 CopyConstructor,
 CopyAssignment,
@@ -43,7 +43,7 @@
 
   using ClassDefiningSpecialMembersMap =
   llvm::DenseMap>;
+ llvm::SmallVector>;
 
 private:
   ClassDefiningSpecialMembersMap ClassWithSpecialMembers;
Index: clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
===
--- clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
+++ clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
@@ -97,8 +97,13 @@
   {"move-assign", SpecialMemberFunctionKind::MoveAssignment}};
 
   for (const auto  : Matchers)
-if (Result.Nodes.getNodeAs(KV.first))
-  ClassWithSpecialMembers[ID].insert(KV.second);
+if (Result.Nodes.getNodeAs(KV.first)) {
+  SpecialMemberFunctionKind Kind = KV.second;
+  llvm::SmallVectorImpl  =
+  ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end())
+Members.push_back(Kind);
+}
 }
 
 void SpecialMemberFunctionsCheck::onEndOfTranslationUnit() {
@@ -125,7 +130,7 @@
 std::back_inserter(UndefinedSpecialMembers));
 
 diag(C.first.first, "class '%0' defines %1 but does not define %2")
-<< C.first.second << join(DefinedSpecialMembers.getArrayRef(), " and ")
+<< C.first.second << join(DefinedSpecialMembers, " and ")
 << join(UndefinedSpecialMembers, " or ");
   }
 }
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25647: [clang-tidy] Don't use a SmallSetVector of an enum.

2016-10-21 Thread Justin Lebar via cfe-commits
jlebar added a comment.

Thank you very much for the review!




Comment at: 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp:103
+  auto  = ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end()) Members.push_back(Kind);
+}

aaron.ballman wrote:
> Please drop the `push_back()` onto its own line.
This was actually how clang-tidy formatted the line.  My understanding is that 
we go with that in llvm projects?  Unless you're saying I have an outdated 
clang-tidy, in which case I will investigate that.


Repository:
  rL LLVM

https://reviews.llvm.org/D25647



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25647: [clang-tidy] Don't use a SmallSetVector of an enum.

2016-10-21 Thread Justin Lebar via cfe-commits
jlebar added a comment.

Thank you very much for the review!




Comment at: 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp:103
+  auto  = ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end()) Members.push_back(Kind);
+}

bkramer wrote:
> jlebar wrote:
> > aaron.ballman wrote:
> > > Please drop the `push_back()` onto its own line.
> > This was actually how clang-tidy formatted the line.  My understanding is 
> > that we go with that in llvm projects?  Unless you're saying I have an 
> > outdated clang-tidy, in which case I will investigate that.
> It's what happens when your clang-format is using Google style. Some versions 
> of clang-format ship with weird defaults, so you have to add -style=LLVM 
> manually.
Er, s/clang-tidy/clang-format/


Repository:
  rL LLVM

https://reviews.llvm.org/D25647



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25647: [clang-tidy] Don't use a SmallSetVector of an enum.

2016-10-21 Thread Benjamin Kramer via cfe-commits
bkramer added inline comments.



Comment at: 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp:103
+  auto  = ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end()) Members.push_back(Kind);
+}

jlebar wrote:
> aaron.ballman wrote:
> > Please drop the `push_back()` onto its own line.
> This was actually how clang-tidy formatted the line.  My understanding is 
> that we go with that in llvm projects?  Unless you're saying I have an 
> outdated clang-tidy, in which case I will investigate that.
It's what happens when your clang-format is using Google style. Some versions 
of clang-format ship with weird defaults, so you have to add -style=LLVM 
manually.


Repository:
  rL LLVM

https://reviews.llvm.org/D25647



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25647: [clang-tidy] Don't use a SmallSetVector of an enum.

2016-10-21 Thread Justin Lebar via cfe-commits
jlebar added a comment.

Hi, friendly ping?  This trivial patch is the only blocker remaining before I 
can land https://reviews.llvm.org/D25648, which is the first part of my Grand 
Set Refactoring (see mail to llvm-dev about a week ago).


Repository:
  rL LLVM

https://reviews.llvm.org/D25647



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25647: [clang-tidy] Don't use a SmallSetVector of an enum.

2016-10-21 Thread Aaron Ballman via cfe-commits
aaron.ballman accepted this revision.
aaron.ballman added a comment.
This revision is now accepted and ready to land.

LGTM with two minor nits.




Comment at: 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp:102
+  SpecialMemberFunctionKind Kind = KV.second;
+  auto  = ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end()) Members.push_back(Kind);

Please don't use `auto` since the type is not spelled out in the initializer.



Comment at: 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp:103
+  auto  = ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end()) Members.push_back(Kind);
+}

Please drop the `push_back()` onto its own line.


Repository:
  rL LLVM

https://reviews.llvm.org/D25647



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25647: [clang-tidy] Don't use a SmallSetVector of an enum.

2016-10-15 Thread Justin Lebar via cfe-commits
jlebar created this revision.
jlebar added a reviewer: timshen.
jlebar added a subscriber: cfe-commits.
Herald added a subscriber: nemanjai.

This doesn't work after converting SmallSetVector to use DenseSet.

Instead we can just use a SmallVector.


https://reviews.llvm.org/D25647

Files:
  clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
  clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h


Index: 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
===
--- clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
+++ clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
@@ -31,7 +31,7 @@
   void check(const ast_matchers::MatchFinder::MatchResult ) override;
   void onEndOfTranslationUnit() override;
 
-  enum class SpecialMemberFunctionKind {
+  enum class SpecialMemberFunctionKind : uint8_t {
 Destructor,
 CopyConstructor,
 CopyAssignment,
@@ -43,9 +43,9 @@
 
   using ClassDefiningSpecialMembersMap =
   llvm::DenseMap>;
+ llvm::SmallVector>;
 
-private:
+ private:
   ClassDefiningSpecialMembersMap ClassWithSpecialMembers;
 };
 
Index: 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
===
--- 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
+++ 
clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
@@ -97,8 +97,11 @@
   {"move-assign", SpecialMemberFunctionKind::MoveAssignment}};
 
   for (const auto  : Matchers)
-if (Result.Nodes.getNodeAs(KV.first))
-  ClassWithSpecialMembers[ID].insert(KV.second);
+if (Result.Nodes.getNodeAs(KV.first)) {
+  SpecialMemberFunctionKind Kind = KV.second;
+  auto  = ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end()) Members.push_back(Kind);
+}
 }
 
 void SpecialMemberFunctionsCheck::onEndOfTranslationUnit() {
@@ -125,7 +128,7 @@
 std::back_inserter(UndefinedSpecialMembers));
 
 diag(C.first.first, "class '%0' defines %1 but does not define %2")
-<< C.first.second << join(DefinedSpecialMembers.getArrayRef(), " and ")
+<< C.first.second << join(DefinedSpecialMembers, " and ")
 << join(UndefinedSpecialMembers, " or ");
   }
 }


Index: clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
===
--- clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
+++ clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
@@ -31,7 +31,7 @@
   void check(const ast_matchers::MatchFinder::MatchResult ) override;
   void onEndOfTranslationUnit() override;
 
-  enum class SpecialMemberFunctionKind {
+  enum class SpecialMemberFunctionKind : uint8_t {
 Destructor,
 CopyConstructor,
 CopyAssignment,
@@ -43,9 +43,9 @@
 
   using ClassDefiningSpecialMembersMap =
   llvm::DenseMap>;
+ llvm::SmallVector>;
 
-private:
+ private:
   ClassDefiningSpecialMembersMap ClassWithSpecialMembers;
 };
 
Index: clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
===
--- clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
+++ clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
@@ -97,8 +97,11 @@
   {"move-assign", SpecialMemberFunctionKind::MoveAssignment}};
 
   for (const auto  : Matchers)
-if (Result.Nodes.getNodeAs(KV.first))
-  ClassWithSpecialMembers[ID].insert(KV.second);
+if (Result.Nodes.getNodeAs(KV.first)) {
+  SpecialMemberFunctionKind Kind = KV.second;
+  auto  = ClassWithSpecialMembers[ID];
+  if (find(Members, Kind) == Members.end()) Members.push_back(Kind);
+}
 }
 
 void SpecialMemberFunctionsCheck::onEndOfTranslationUnit() {
@@ -125,7 +128,7 @@
 std::back_inserter(UndefinedSpecialMembers));
 
 diag(C.first.first, "class '%0' defines %1 but does not define %2")
-<< C.first.second << join(DefinedSpecialMembers.getArrayRef(), " and ")
+<< C.first.second << join(DefinedSpecialMembers, " and ")
 << join(UndefinedSpecialMembers, " or ");
   }
 }
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits