[PATCH] D65526: [Clangd] First version of ExtractFunction
Shaurya Gupta via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 28 12:32:27 PDT 2019
SureYeaah added inline comments.
================
Comment at: clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp:119
+ case SelectionTree::Selection::Partial:
+ // Treat Partially selected VarDecl as completely selected since
+ // SelectionTree doesn't always select VarDecls correctly.
----------------
sammccall wrote:
> D66872 has the fix if you'd rather avoid these workarounds
Will remove this once D66872 is committed.
================
Comment at: clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp:150
+ }
+ bool isRootStmt(const Stmt *S) const;
+ // The last root statement is important to decide where we need to insert a
----------------
kadircet wrote:
> it seems like you are rather using it to decide whether a statement is inside the zone or not?
>
> Could you rather rename it to reflect that and add some comments?
if extracting
```
for(;;)
int x = 0;
```
the DeclStmt is inside the zone but not a rootstmt.
================
Comment at: clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp:172
+ // FIXME: Support extraction from templated functions.
+ if (CurNode->Parent->ASTNode.get<FunctionTemplateDecl>())
+ return nullptr;
----------------
kadircet wrote:
> nit:
> ```
> if(isa<FunctionTemplateDecl>(Func))
> ```
Using `Func->isTemplated()`
================
Comment at: clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp:346
+ ZoneRelative DeclaredIn;
+ // index of the declaration or first reference
+ unsigned DeclIndex;
----------------
kadircet wrote:
> i think you mean `index of the first reference to this decl` ?
It can be the index of declaration or the first reference. Since the visitor Visits Decls as well, we will encounter a reference before the Decl only if the Decl is outside the enclosing function.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D65526/new/
https://reviews.llvm.org/D65526
More information about the cfe-commits
mailing list