[Clangd] Disable ExtractVariable for all types of assignments
authorShaurya Gupta <shauryab98@gmail.com>
Fri, 26 Jul 2019 14:08:27 +0000 (14:08 +0000)
committerShaurya Gupta <shauryab98@gmail.com>
Fri, 26 Jul 2019 14:08:27 +0000 (14:08 +0000)
Reviewers: sammccall, kadircet

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D65332

llvm-svn: 367113

clang-tools-extra/clangd/refactor/tweaks/ExtractVariable.cpp
clang-tools-extra/clangd/unittests/TweakTests.cpp

index bae071e..d00e848 100644 (file)
@@ -272,7 +272,7 @@ bool ExtractVariable::computeExtractionContext(const SelectionTree::Node *N,
   // Extracting Exprs like a = 1 gives dummy = a = 1 which isn't useful.
   if (const BinaryOperator *BinOpExpr =
           dyn_cast_or_null<BinaryOperator>(SelectedExpr)) {
-    if (BinOpExpr->getOpcode() == BinaryOperatorKind::BO_Assign)
+    if (BinOpExpr->isAssignmentOp())
       return false;
   }
   // For function and member function DeclRefs, we look for a parent that is a
index 748e96f..471f54f 100644 (file)
@@ -371,6 +371,8 @@ TEST(TweakTest, ExtractVariable) {
       auto lamb = [&[[a]], &[[b]]](int r = [[1]]) {return 1;}
       // assigment
       [[a = 5]];
+      [[a >>= 5]];
+      [[a *= 5]];
       // Variable DeclRefExpr
       a = [[b]];
       // label statement