Author: d0k Date: Fri Apr 21 10:51:18 2017 New Revision: 300990 URL: http://llvm.org/viewvc/llvm-project?rev=300990&view=rev Log: [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 Modified: clang-tools-extra/trunk/clangd/Protocol.cpp clang-tools-extra/trunk/test/clangd/completion.test Modified: clang-tools-extra/trunk/clangd/Protocol.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/Protocol.cpp?rev=300990&r1=300989&r2=300990&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/Protocol.cpp (original) +++ clang-tools-extra/trunk/clangd/Protocol.cpp Fri Apr 21 10:51:18 2017 @@ -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("/"); Modified: clang-tools-extra/trunk/test/clangd/completion.test URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clangd/completion.test?rev=300990&r1=300989&r2=300990&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clangd/completion.test (original) +++ clang-tools-extra/trunk/test/clangd/completion.test Fri Apr 21 10:51:18 2017 @@ -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"} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits