simark added inline comments.
================
Comment at: clangd/SourceCode.h:24
 
-/// Turn a [line, column] pair into an offset in Code.
-size_t positionToOffset(llvm::StringRef Code, Position P);
+/// Turn a [line, column] pair into an offset in Code according to the LSP
+/// definition of a Position.  If the character value is greater than the line
----------------
ilya-biryukov wrote:
> Reverting to line length for larger column numbers seems to be the wrong 
> thing to do for content changes, even though LSP does not distinguish this 
> case.
> The fundamental difference is that position provided as inputs to features 
> are caret or selection positions and it makes sense for them to span 
> non-existing columns if the editors allows to put the caret there. Text 
> changes, on the other hand, should be generated from proper offsets inside a 
> string and it does not make sense for their columns to be out of range.
> I suggest to add a param with default argument to the function to control 
> this behavior (`bool AllowColumnsBeyondLineLength = true`). 
> 
Ok, when `AllowColumnsBeyondLineLength` is false and the character value 
exceeds the line length, I now return an error.


================
Comment at: unittests/clangd/SourceCodeTests.cpp:37
+bool positionToOffsetCheck(StringRef Code, Position P, size_t ExpectedOffset)
+{
+  llvm::Expected<size_t> Result = positionToOffset(Code, P);
----------------
ilya-biryukov wrote:
> NIT: opening must be on the previous line
Oops, forgot to run clang-format this time.


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D44673



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to