[PATCH] D26752: [include-fixer] Refactor include fixer to be usable as a plugin

Eric Liu via cfe-commits cfe-commits at lists.llvm.org
Thu Nov 17 05:38:07 PST 2016


ioeric added inline comments.


================
Comment at: include-fixer/IncludeFixer.cpp:136
+
+    auto Begin = StartOfFile.getLocWithOffset(Placed.getOffset());
+    auto End = Begin.getLocWithOffset(Placed.getLength());
----------------
hokein wrote:
> ioeric wrote:
> > bkramer wrote:
> > > hokein wrote:
> > > > I have a concern that `Placed` here might be not the replacement for inserting the new header, becuase the `Reps` returned from `createIncludeFixerReplacements` may have some replacements for cleanup.
> > > > 
> > > > To make it more correct, maybe we can check whether `Placed.getReplacementText()` is equal to `"#include" + Context.getHeaderInfos().front().Header`?
> > > I don't think that will work. We do want to put the replacement into the right position so we have to apply the full cleanup, right? Just comparing with the header path doesn't work because the cleanup is larger than that.
> > Yep, `createIncludeFixerReplacements` also sorts `#include`s with `formatReplacements`, so the returned replacements can be larger than header insertion.
> I see. What I concern is that the behavior won't be correct if there are multiple replacements in `*Reps`. But looks like if we pass only one Replacement for inserting the new header to `createIncludeFixerReplacements`, the `Reps` only has a `Replacement` inside, which is correct.
> 
> Maybe add an `assert` here?
This is implementation detail; the interface does not guarantee that. And I guess there might still be cases where more than one replacement is generated.


https://reviews.llvm.org/D26752





More information about the cfe-commits mailing list