kbobyrev added inline comments.

================
Comment at: 
clang-tools-extra/clangd/index/remote/marshalling/Marshalling.cpp:313
                              RelativePath, llvm::sys::path::Style::posix));
-  if (RelativePath.empty()) {
-    return llvm::None;
-  }
-  if (llvm::sys::path::is_absolute(RelativePath)) {
-    return llvm::None;
-  }
+  if (RelativePath.empty())
+    return make_error<StringError>("Empty relative path.",
----------------
kadircet wrote:
> kbobyrev wrote:
> > kadircet wrote:
> > > is `RelativePath` user provided? can't we just assert on non-emptiness 
> > > and non-absoluteness and make this function return a std::string instead?
> > Could you elaborate on what you mean by user provided? Relative path is 
> > something that comes from the remote index. Ideally, this is non-empty and 
> > relative but I think the safer option is to maybe check for errors? 
> > Actually, I'm not sure about this but it's not user provided as in "given 
> > as a flag passed to CLI invocation by the end user".
> > 
> > I think the point here is making errors recoverable and not shutting down 
> > the client, otherwise everything could be an assertion? Same in other 
> > places.
> > 
> > WDYT?
> > Could you elaborate on what you mean by user provided? Relative path is 
> > something that comes from the remote index. 
> 
> Yes I was asking whether this comes from outside and ideally not processed at 
> all before arriving at this logic.
> 
> > Ideally, this is non-empty and relative but I think the safer option is to 
> > maybe check for errors? Actually, I'm not sure about this but it's not user 
> > provided as in "given as a flag passed to CLI invocation by the end user".
> 
> Right, the safer is always to check for errors, but if we've already 
> processed the RelativePath before it reaches this code path then there 
> wouldn't be much value in spending more runtime checks (and also it would be 
> callers responsibility generate the errors in such cases). I was asking this 
> because I wasn't aware of the whole structure, but looks like this is 
> literally the entry point (i.e. the first logic that verifies a user input) 
> for path to uri conversions. So no action needed here.
Yes, I agree that spending runtime on this is unfortunate but I guess it's the 
cost we'd have to pay :(


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D84939/new/

https://reviews.llvm.org/D84939

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

Reply via email to