rwols created this revision.
This translates diagnostics correctly between 0-based LSP columns, and 1-based
clang columns.
https://reviews.llvm.org/D40860
Files:
clang-tools-extra/clangd/ClangdLSPServer.cpp
clang-tools-extra/clangd/ClangdLSPServer.h
clang-tools-extra/clangd/ClangdUnit.cpp
clang-tools-extra/clangd/ClangdUnit.h
clang-tools-extra/test/clangd/diagnostics.test
clang-tools-extra/test/clangd/execute-command.test
clang-tools-extra/test/clangd/extra-flags.test
clang-tools-extra/test/clangd/fixits.test
Index: clang-tools-extra/test/clangd/fixits.test
===
--- clang-tools-extra/test/clangd/fixits.test
+++ clang-tools-extra/test/clangd/fixits.test
@@ -15,11 +15,11 @@
# CHECK-NEXT:"message": "using the result of an assignment as a condition without parentheses",
# CHECK-NEXT:"range": {
# CHECK-NEXT: "end": {
-# CHECK-NEXT:"character": 35,
+# CHECK-NEXT:"character": 34,
# CHECK-NEXT:"line": 0
# CHECK-NEXT: },
# CHECK-NEXT: "start": {
-# CHECK-NEXT:"character": 35,
+# CHECK-NEXT:"character": 34,
# CHECK-NEXT:"line": 0
# CHECK-NEXT: }
# CHECK-NEXT:},
@@ -29,11 +29,11 @@
# CHECK-NEXT:"message": "place parentheses around the assignment to silence this warning",
# CHECK-NEXT:"range": {
# CHECK-NEXT: "end": {
-# CHECK-NEXT:"character": 35,
+# CHECK-NEXT:"character": 34,
# CHECK-NEXT:"line": 0
# CHECK-NEXT: },
# CHECK-NEXT: "start": {
-# CHECK-NEXT:"character": 35,
+# CHECK-NEXT:"character": 34,
# CHECK-NEXT:"line": 0
# CHECK-NEXT: }
# CHECK-NEXT:},
@@ -43,11 +43,11 @@
# CHECK-NEXT:"message": "use '==' to turn this assignment into an equality comparison",
# CHECK-NEXT:"range": {
# CHECK-NEXT: "end": {
-# CHECK-NEXT:"character": 35,
+# CHECK-NEXT:"character": 34,
# CHECK-NEXT:"line": 0
# CHECK-NEXT: },
# CHECK-NEXT: "start": {
-# CHECK-NEXT:"character": 35,
+# CHECK-NEXT:"character": 34,
# CHECK-NEXT:"line": 0
# CHECK-NEXT: }
# CHECK-NEXT:},
@@ -58,7 +58,7 @@
# CHECK-NEXT: }
Content-Length: 746
-{"jsonrpc":"2.0","id":2,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///foo.c"},"range":{"start":{"line":104,"character":13},"end":{"line":0,"character":35}},"context":{"diagnostics":[{"range":{"start": {"line": 0, "character": 35}, "end": {"line": 0, "character": 35}},"severity":2,"message":"using the result of an assignment as a condition without parentheses"},{"range":{"start": {"line": 0, "character": 35}, "end": {"line": 0, "character": 35}},"severity":3,"message":"place parentheses around the assignment to silence this warning"},{"range":{"start": {"line": 0, "character": 35}, "end": {"line": 0, "character": 35}},"severity":3,"message":"use '==' to turn this assignment into an equality comparison"}]}}}
+{"jsonrpc":"2.0","id":2,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///foo.c"},"range":{"start":{"line":104,"character":13},"end":{"line":0,"character":34}},"context":{"diagnostics":[{"range":{"start": {"line": 0, "character": 34}, "end": {"line": 0, "character": 34}},"severity":2,"message":"using the result of an assignment as a condition without parentheses"},{"range":{"start": {"line": 0, "character": 34}, "end": {"line": 0, "character": 34}},"severity":3,"message":"place parentheses around the assignment to silence this warning"},{"range":{"start": {"line": 0, "character": 34}, "end": {"line": 0, "character": 34}},"severity":3,"message":"use '==' to turn this assignment into an equality comparison"}]}}}
# CHECK: "id": 2,
# CHECK-NEXT: "jsonrpc": "2.0",
# CHECK-NEXT: "result": [
@@ -128,7 +128,7 @@
# CHECK-NEXT: ]
Content-Length: 771
-{"jsonrpc":"2.0","id":3,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///foo.c"},"range":{"start":{"line":104,"character":13},"end":{"line":0,"character":35}},"context":{"diagnostics":[{"range":{"start": {"line": 0, "character": 35}, "end": {"line": 0, "character": 35}},"severity":2,"code":"1","source":"foo","message":"using the result of an assignment as a condition without parentheses"},{"range":{"start": {"line": 0, "character": 35}, "end": {"line": 0, "character": 35}},"severity":3,"message":"place parentheses around the assignment to silence this warning"},{"range":{"start": {"line": 0, "character": 35}, "end": {"line": 0, "character": 35}},"severity":3,"message":"use '==' to turn this assignment into an equality comparison"}]}}}