forked from OSchip/llvm-project
[Clangd] Support Authority-less URIs
Clangd strips URIs by removing the file:// part but some clients can send file: which is also valid according to RFC 3896. For example, if a client sends file:///home/user, it gets converted to /home/user but if a client sends file:/home/user, it is left untouched and problems arise. Patch by Marc-Andre Laperle! Differential Revision: https://reviews.llvm.org/D32234 llvm-svn: 300990
This commit is contained in:
parent
337d4d95c2
commit
8c3ba63d07
|
@ -25,6 +25,8 @@ URI URI::fromUri(llvm::StringRef uri) {
|
|||
URI Result;
|
||||
Result.uri = uri;
|
||||
uri.consume_front("file://");
|
||||
// Also trim authority-less URIs
|
||||
uri.consume_front("file:");
|
||||
// For Windows paths e.g. /X:
|
||||
if (uri.size() > 2 && uri[0] == '/' && uri[2] == ':')
|
||||
uri.consume_front("/");
|
||||
|
|
|
@ -20,6 +20,16 @@ Content-Length: 148
|
|||
# CHECK-DAG: {"label":"bb","kind":5}
|
||||
# CHECK-DAG: {"label":"ccc","kind":5}
|
||||
# CHECK: ]}
|
||||
Content-Length: 146
|
||||
|
||||
{"jsonrpc":"2.0","id":1,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:/main.cpp"},"position":{"line":3,"character":5}}}
|
||||
# Test authority-less URI
|
||||
#
|
||||
# CHECK: {"jsonrpc":"2.0","id":1,"result":[
|
||||
# CHECK-DAG: {"label":"a","kind":5}
|
||||
# CHECK-DAG: {"label":"bb","kind":5}
|
||||
# CHECK-DAG: {"label":"ccc","kind":5}
|
||||
# CHECK: ]}
|
||||
Content-Length: 44
|
||||
|
||||
{"jsonrpc":"2.0","id":3,"method":"shutdown"}
|
||||
|
|
Loading…
Reference in New Issue