[clang-tools-extra] [clangd] fix extract-to-function for overloaded operators (PR #81640)
Julian Schmidt via cfe-commits
cfe-commits at lists.llvm.org
Sun Nov 10 10:06:40 PST 2024
================
@@ -104,9 +104,12 @@ bool isRootStmt(const Node *N) {
// Root statement cannot be partially selected.
if (N->Selected == SelectionTree::Partial)
return false;
- // Only DeclStmt can be an unselected RootStmt since VarDecls claim the entire
- // selection range in selectionTree.
- if (N->Selected == SelectionTree::Unselected && !N->ASTNode.get<DeclStmt>())
+ // A DeclStmt can be an unselected RootStmt since VarDecls claim the entire
+ // selection range in selectionTree. Additionally, a CXXOperatorCallExpr of a
+ // binary operation can be unselected because it's children claim the entire
+ // selection range in the selection tree (e.g. <<).
+ if (N->Selected == SelectionTree::Unselected && !N->ASTNode.get<DeclStmt>() &&
----------------
5chmidti wrote:
I don't think that would have any effect, because to hit this case, the common ancestor of our root statements needs to be completely selected, but the `CXXOperatorCallExpr` will be unselected as shown in this `if` here.
https://github.com/llvm/llvm-project/pull/81640
More information about the cfe-commits
mailing list