[PATCH] D66001: [clangd] Added highlighting for constructor initializers.

2019-08-09 Thread Johan Vikström via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL368434: [clangd] Added highlighting for constructor 
initializers. (authored by jvikstrom, committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D66001?vs=214346=214362#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66001/new/

https://reviews.llvm.org/D66001

Files:
  clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp
  clang-tools-extra/trunk/clangd/unittests/SemanticHighlightingTests.cpp


Index: clang-tools-extra/trunk/clangd/unittests/SemanticHighlightingTests.cpp
===
--- clang-tools-extra/trunk/clangd/unittests/SemanticHighlightingTests.cpp
+++ clang-tools-extra/trunk/clangd/unittests/SemanticHighlightingTests.cpp
@@ -285,6 +285,24 @@
   };
 
   $Class[[A]] &$Class[[A]]::operator=($Class[[A]] &&$Variable[[O]]) = 
default;
+)cpp",
+R"cpp(
+  enum $Enum[[En]] {
+$EnumConstant[[EC]],
+  };
+  class $Class[[Foo]] {};
+  class $Class[[Bar]] {
+$Class[[Foo]] $Field[[Fo]];
+$Enum[[En]] $Field[[E]];
+$Primitive[[int]] $Field[[I]];
+$Class[[Bar]] ($Class[[Foo]] $Variable[[F]],
+$Enum[[En]] $Variable[[E]])
+: $Field[[Fo]] ($Variable[[F]]), $Field[[E]] ($Variable[[E]]),
+  $Field[[I]] (123) {}
+  };
+  class $Class[[Bar2]] : public $Class[[Bar]] {
+$Class[[Bar2]]() : $Class[[Bar]]($Class[[Foo]](), $EnumConstant[[EC]]) 
{}
+  };
 )cpp"};
   for (const auto  : TestCases) {
 checkHighlightings(TestCase);
Index: clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp
===
--- clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp
+++ clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp
@@ -11,6 +11,7 @@
 #include "Protocol.h"
 #include "SourceCode.h"
 #include "clang/AST/ASTContext.h"
+#include "clang/AST/DeclCXX.h"
 #include "clang/AST/RecursiveASTVisitor.h"
 #include 
 
@@ -136,6 +137,13 @@
 HighlightingTokenCollector>::TraverseNestedNameSpecifierLoc(NNSLoc);
   }
 
+  bool TraverseConstructorInitializer(CXXCtorInitializer *CI) {
+if (const FieldDecl *FD = CI->getMember())
+  addToken(CI->getSourceLocation(), FD);
+return RecursiveASTVisitor<
+HighlightingTokenCollector>::TraverseConstructorInitializer(CI);
+  }
+
 private:
   void addTypeLoc(SourceLocation Loc, const TypeLoc ) {
 if (const Type *TP = TL.getTypePtr()) {


Index: clang-tools-extra/trunk/clangd/unittests/SemanticHighlightingTests.cpp
===
--- clang-tools-extra/trunk/clangd/unittests/SemanticHighlightingTests.cpp
+++ clang-tools-extra/trunk/clangd/unittests/SemanticHighlightingTests.cpp
@@ -285,6 +285,24 @@
   };
 
   $Class[[A]] &$Class[[A]]::operator=($Class[[A]] &&$Variable[[O]]) = default;
+)cpp",
+R"cpp(
+  enum $Enum[[En]] {
+$EnumConstant[[EC]],
+  };
+  class $Class[[Foo]] {};
+  class $Class[[Bar]] {
+$Class[[Foo]] $Field[[Fo]];
+$Enum[[En]] $Field[[E]];
+$Primitive[[int]] $Field[[I]];
+$Class[[Bar]] ($Class[[Foo]] $Variable[[F]],
+$Enum[[En]] $Variable[[E]])
+: $Field[[Fo]] ($Variable[[F]]), $Field[[E]] ($Variable[[E]]),
+  $Field[[I]] (123) {}
+  };
+  class $Class[[Bar2]] : public $Class[[Bar]] {
+$Class[[Bar2]]() : $Class[[Bar]]($Class[[Foo]](), $EnumConstant[[EC]]) {}
+  };
 )cpp"};
   for (const auto  : TestCases) {
 checkHighlightings(TestCase);
Index: clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp
===
--- clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp
+++ clang-tools-extra/trunk/clangd/SemanticHighlighting.cpp
@@ -11,6 +11,7 @@
 #include "Protocol.h"
 #include "SourceCode.h"
 #include "clang/AST/ASTContext.h"
+#include "clang/AST/DeclCXX.h"
 #include "clang/AST/RecursiveASTVisitor.h"
 #include 
 
@@ -136,6 +137,13 @@
 HighlightingTokenCollector>::TraverseNestedNameSpecifierLoc(NNSLoc);
   }
 
+  bool TraverseConstructorInitializer(CXXCtorInitializer *CI) {
+if (const FieldDecl *FD = CI->getMember())
+  addToken(CI->getSourceLocation(), FD);
+return RecursiveASTVisitor<
+HighlightingTokenCollector>::TraverseConstructorInitializer(CI);
+  }
+
 private:
   void addTypeLoc(SourceLocation Loc, const TypeLoc ) {
 if (const Type *TP = TL.getTypePtr()) {
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D66001: [clangd] Added highlighting for constructor initializers.

2019-08-09 Thread Johan Vikström via Phabricator via cfe-commits
jvikstrom updated this revision to Diff 214346.
jvikstrom added a comment.

Fixed case where initializer was base class initializer which would cause crash.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66001/new/

https://reviews.llvm.org/D66001

Files:
  clang-tools-extra/clangd/SemanticHighlighting.cpp
  clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp


Index: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
===
--- clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
+++ clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
@@ -285,6 +285,24 @@
   };
 
   $Class[[A]] &$Class[[A]]::operator=($Class[[A]] &&$Variable[[O]]) = 
default;
+)cpp",
+R"cpp(
+  enum $Enum[[En]] {
+$EnumConstant[[EC]],
+  };
+  class $Class[[Foo]] {};
+  class $Class[[Bar]] {
+$Class[[Foo]] $Field[[Fo]];
+$Enum[[En]] $Field[[E]];
+$Primitive[[int]] $Field[[I]];
+$Class[[Bar]] ($Class[[Foo]] $Variable[[F]],
+$Enum[[En]] $Variable[[E]])
+: $Field[[Fo]] ($Variable[[F]]), $Field[[E]] ($Variable[[E]]),
+  $Field[[I]] (123) {}
+  };
+  class $Class[[Bar2]] : public $Class[[Bar]] {
+$Class[[Bar2]]() : $Class[[Bar]]($Class[[Foo]](), $EnumConstant[[EC]]) 
{}
+  };
 )cpp"};
   for (const auto  : TestCases) {
 checkHighlightings(TestCase);
Index: clang-tools-extra/clangd/SemanticHighlighting.cpp
===
--- clang-tools-extra/clangd/SemanticHighlighting.cpp
+++ clang-tools-extra/clangd/SemanticHighlighting.cpp
@@ -11,6 +11,7 @@
 #include "Protocol.h"
 #include "SourceCode.h"
 #include "clang/AST/ASTContext.h"
+#include "clang/AST/DeclCXX.h"
 #include "clang/AST/RecursiveASTVisitor.h"
 #include 
 
@@ -136,6 +137,13 @@
 HighlightingTokenCollector>::TraverseNestedNameSpecifierLoc(NNSLoc);
   }
 
+  bool TraverseConstructorInitializer(CXXCtorInitializer *CI) {
+if (const FieldDecl *FD = CI->getMember())
+  addToken(CI->getSourceLocation(), FD);
+return RecursiveASTVisitor<
+HighlightingTokenCollector>::TraverseConstructorInitializer(CI);
+  }
+
 private:
   void addTypeLoc(SourceLocation Loc, const TypeLoc ) {
 if (const Type *TP = TL.getTypePtr()) {


Index: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
===
--- clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
+++ clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
@@ -285,6 +285,24 @@
   };
 
   $Class[[A]] &$Class[[A]]::operator=($Class[[A]] &&$Variable[[O]]) = default;
+)cpp",
+R"cpp(
+  enum $Enum[[En]] {
+$EnumConstant[[EC]],
+  };
+  class $Class[[Foo]] {};
+  class $Class[[Bar]] {
+$Class[[Foo]] $Field[[Fo]];
+$Enum[[En]] $Field[[E]];
+$Primitive[[int]] $Field[[I]];
+$Class[[Bar]] ($Class[[Foo]] $Variable[[F]],
+$Enum[[En]] $Variable[[E]])
+: $Field[[Fo]] ($Variable[[F]]), $Field[[E]] ($Variable[[E]]),
+  $Field[[I]] (123) {}
+  };
+  class $Class[[Bar2]] : public $Class[[Bar]] {
+$Class[[Bar2]]() : $Class[[Bar]]($Class[[Foo]](), $EnumConstant[[EC]]) {}
+  };
 )cpp"};
   for (const auto  : TestCases) {
 checkHighlightings(TestCase);
Index: clang-tools-extra/clangd/SemanticHighlighting.cpp
===
--- clang-tools-extra/clangd/SemanticHighlighting.cpp
+++ clang-tools-extra/clangd/SemanticHighlighting.cpp
@@ -11,6 +11,7 @@
 #include "Protocol.h"
 #include "SourceCode.h"
 #include "clang/AST/ASTContext.h"
+#include "clang/AST/DeclCXX.h"
 #include "clang/AST/RecursiveASTVisitor.h"
 #include 
 
@@ -136,6 +137,13 @@
 HighlightingTokenCollector>::TraverseNestedNameSpecifierLoc(NNSLoc);
   }
 
+  bool TraverseConstructorInitializer(CXXCtorInitializer *CI) {
+if (const FieldDecl *FD = CI->getMember())
+  addToken(CI->getSourceLocation(), FD);
+return RecursiveASTVisitor<
+HighlightingTokenCollector>::TraverseConstructorInitializer(CI);
+  }
+
 private:
   void addTypeLoc(SourceLocation Loc, const TypeLoc ) {
 if (const Type *TP = TL.getTypePtr()) {
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D66001: [clangd] Added highlighting for constructor initializers.

2019-08-09 Thread Johan Vikström via Phabricator via cfe-commits
jvikstrom created this revision.
jvikstrom added reviewers: hokein, ilya-biryukov.
Herald added subscribers: cfe-commits, kadircet, arphaman, jkorous, MaskRay.
Herald added a project: clang.

Constructor initializers were not being highlighted. This adds highlighting for 
them by using TraverseConstructorInitializer. Uses the Traverse* because there 
is no visit for CXXCtorInitializer.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D66001

Files:
  clang-tools-extra/clangd/SemanticHighlighting.cpp
  clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp


Index: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
===
--- clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
+++ clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
@@ -285,6 +285,19 @@
   };
 
   $Class[[A]] &$Class[[A]]::operator=($Class[[A]] &&$Variable[[O]]) = 
default;
+)cpp",
+R"cpp(
+  enum $Enum[[En]] {};
+  class $Class[[Foo]] {};
+  class $Class[[Bar]] {
+$Class[[Foo]] $Field[[Fo]];
+$Enum[[En]] $Field[[E]];
+$Primitive[[int]] $Field[[I]];
+$Class[[Bar]] ($Class[[Foo]] $Variable[[F]],
+$Enum[[En]] $Variable[[E]])
+: $Field[[Fo]] ($Variable[[F]]), $Field[[E]] ($Variable[[E]]),
+  $Field[[I]] (123) {}
+  };
 )cpp"};
   for (const auto  : TestCases) {
 checkHighlightings(TestCase);
Index: clang-tools-extra/clangd/SemanticHighlighting.cpp
===
--- clang-tools-extra/clangd/SemanticHighlighting.cpp
+++ clang-tools-extra/clangd/SemanticHighlighting.cpp
@@ -11,6 +11,7 @@
 #include "Protocol.h"
 #include "SourceCode.h"
 #include "clang/AST/ASTContext.h"
+#include "clang/AST/DeclCXX.h"
 #include "clang/AST/RecursiveASTVisitor.h"
 #include 
 
@@ -136,6 +137,12 @@
 HighlightingTokenCollector>::TraverseNestedNameSpecifierLoc(NNSLoc);
   }
 
+  bool TraverseConstructorInitializer(CXXCtorInitializer *CI) {
+addToken(CI->getSourceLocation(), CI->getMember());
+return RecursiveASTVisitor<
+HighlightingTokenCollector>::TraverseConstructorInitializer(CI);
+  }
+
 private:
   void addTypeLoc(SourceLocation Loc, const TypeLoc ) {
 if (const Type *TP = TL.getTypePtr()) {


Index: clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
===
--- clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
+++ clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
@@ -285,6 +285,19 @@
   };
 
   $Class[[A]] &$Class[[A]]::operator=($Class[[A]] &&$Variable[[O]]) = default;
+)cpp",
+R"cpp(
+  enum $Enum[[En]] {};
+  class $Class[[Foo]] {};
+  class $Class[[Bar]] {
+$Class[[Foo]] $Field[[Fo]];
+$Enum[[En]] $Field[[E]];
+$Primitive[[int]] $Field[[I]];
+$Class[[Bar]] ($Class[[Foo]] $Variable[[F]],
+$Enum[[En]] $Variable[[E]])
+: $Field[[Fo]] ($Variable[[F]]), $Field[[E]] ($Variable[[E]]),
+  $Field[[I]] (123) {}
+  };
 )cpp"};
   for (const auto  : TestCases) {
 checkHighlightings(TestCase);
Index: clang-tools-extra/clangd/SemanticHighlighting.cpp
===
--- clang-tools-extra/clangd/SemanticHighlighting.cpp
+++ clang-tools-extra/clangd/SemanticHighlighting.cpp
@@ -11,6 +11,7 @@
 #include "Protocol.h"
 #include "SourceCode.h"
 #include "clang/AST/ASTContext.h"
+#include "clang/AST/DeclCXX.h"
 #include "clang/AST/RecursiveASTVisitor.h"
 #include 
 
@@ -136,6 +137,12 @@
 HighlightingTokenCollector>::TraverseNestedNameSpecifierLoc(NNSLoc);
   }
 
+  bool TraverseConstructorInitializer(CXXCtorInitializer *CI) {
+addToken(CI->getSourceLocation(), CI->getMember());
+return RecursiveASTVisitor<
+HighlightingTokenCollector>::TraverseConstructorInitializer(CI);
+  }
+
 private:
   void addTypeLoc(SourceLocation Loc, const TypeLoc ) {
 if (const Type *TP = TL.getTypePtr()) {
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits