diff options
33 files changed, 3787 insertions, 0 deletions
| diff --git a/testsuite/pyunit/lsp/001simple/cmds.json b/testsuite/pyunit/lsp/001simple/cmds.json new file mode 100644 index 000000000..e67503258 --- /dev/null +++ b/testsuite/pyunit/lsp/001simple/cmds.json @@ -0,0 +1,229 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "method": "initialize", +    "params": { +        "processId": 2, +        "rootPath": ".", +        "rootUri": "file:///.", +      "capabilities": { +        "workspace": { +          "applyEdit": true, +          "workspaceEdit": { +            "documentChanges": true +          }, +          "didChangeConfiguration": { +            "dynamicRegistration": true +          }, +          "didChangeWatchedFiles": { +            "dynamicRegistration": true +          }, +          "symbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "executeCommand": { +            "dynamicRegistration": true +          }, +          "configuration": true, +          "workspaceFolders": true +        }, +        "textDocument": { +          "publishDiagnostics": { +            "relatedInformation": true +          }, +          "synchronization": { +            "dynamicRegistration": true, +            "willSave": true, +            "willSaveWaitUntil": true, +            "didSave": true +          }, +          "completion": { +            "dynamicRegistration": true, +            "contextSupport": true, +            "completionItem": { +              "snippetSupport": true, +              "commitCharactersSupport": true, +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ], +              "deprecatedSupport": true +            }, +            "completionItemKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25 +              ] +            } +          }, +          "hover": { +            "dynamicRegistration": true, +            "contentFormat": [ +              "markdown", +              "plaintext" +            ] +          }, +          "signatureHelp": { +            "dynamicRegistration": true, +            "signatureInformation": { +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ] +            } +          }, +          "definition": { +            "dynamicRegistration": true +          }, +          "references": { +            "dynamicRegistration": true +          }, +          "documentHighlight": { +            "dynamicRegistration": true +          }, +          "documentSymbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "codeAction": { +            "dynamicRegistration": true +          }, +          "codeLens": { +            "dynamicRegistration": true +          }, +          "formatting": { +            "dynamicRegistration": true +          }, +          "rangeFormatting": { +            "dynamicRegistration": true +          }, +          "onTypeFormatting": { +            "dynamicRegistration": true +          }, +          "rename": { +            "dynamicRegistration": true +          }, +          "documentLink": { +            "dynamicRegistration": true +          }, +          "typeDefinition": { +            "dynamicRegistration": true +          }, +          "implementation": { +            "dynamicRegistration": true +          }, +          "colorProvider": { +            "dynamicRegistration": true +          } +        } +      }, +      "trace": "off", +      "workspaceFolders": [ +        { +            "uri": "file:///.", +            "name": "001simple" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "initialized", +    "params": {} +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didOpen", +    "params": { +      "textDocument": { +        "uri": "file:///../files/hello.vhdl", +        "languageId": "vhdl", +        "version": 1, +        "text": "\n--  Hello world program\nuse std.textio.all; -- Imports the standard textio package.\n\n--  Defines a design entity, without any ports.\nentity hello_world is\nend hello_world;\n\narchitecture behaviour of hello_world is\nbegin\n  process\n    variable l : line;\n  begin\n    write (l, String'(\"Hello world!\"));\n    writeline (output, l);\n    wait;\n  end process;\nend behaviour;\n\n" +      } +    } +  } +] diff --git a/testsuite/pyunit/lsp/001simple/replies.json b/testsuite/pyunit/lsp/001simple/replies.json new file mode 100644 index 000000000..55a84917b --- /dev/null +++ b/testsuite/pyunit/lsp/001simple/replies.json @@ -0,0 +1,34 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "result": { +      "capabilities": { +        "textDocumentSync": { +          "openClose": true, +          "change": 2, +          "save": { +            "includeText": true +          } +        }, +        "hoverProvider": false, +        "definitionProvider": true, +        "referencesProvider": false, +        "documentHighlightProvider": false, +        "documentSymbolProvider": true, +        "codeActionProvider": false, +        "documentFormattingProvider": false, +        "documentRangeFormattingProvider": true, +        "renameProvider": false +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///../files/hello.vhdl", +      "diagnostics": [] +    } +  } +] diff --git a/testsuite/pyunit/lsp/001simple/replies.ref b/testsuite/pyunit/lsp/001simple/replies.ref new file mode 100644 index 000000000..57f020a7f --- /dev/null +++ b/testsuite/pyunit/lsp/001simple/replies.ref @@ -0,0 +1,5 @@ +Content-Length: 393 + +{"jsonrpc":"2.0","id":0,"result":{"capabilities":{"textDocumentSync":{"openClose":true,"change":2,"save":{"includeText":true}},"hoverProvider":false,"definitionProvider":true,"referencesProvider":false,"documentHighlightProvider":false,"documentSymbolProvider":true,"codeActionProvider":false,"documentFormattingProvider":false,"documentRangeFormattingProvider":false,"renameProvider":false}}}Content-Length: 124 + +{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///../files/hello.vhdl","diagnostics":[]}}
\ No newline at end of file diff --git a/testsuite/pyunit/lsp/002coverage/cmds.json b/testsuite/pyunit/lsp/002coverage/cmds.json new file mode 100644 index 000000000..132cabcda --- /dev/null +++ b/testsuite/pyunit/lsp/002coverage/cmds.json @@ -0,0 +1,471 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "method": "initialize", +    "params": { +      "processId": 11082, +      "rootPath": "/home/tgingold/work/vhdl-language-server/tests/002coverage", +      "rootUri": "file:///home/tgingold/work/vhdl-language-server/tests/002coverage", +      "capabilities": { +        "workspace": { +          "applyEdit": true, +          "workspaceEdit": { +            "documentChanges": true +          }, +          "didChangeConfiguration": { +            "dynamicRegistration": true +          }, +          "didChangeWatchedFiles": { +            "dynamicRegistration": true +          }, +          "symbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "executeCommand": { +            "dynamicRegistration": true +          }, +          "configuration": true, +          "workspaceFolders": true +        }, +        "textDocument": { +          "publishDiagnostics": { +            "relatedInformation": true +          }, +          "synchronization": { +            "dynamicRegistration": true, +            "willSave": true, +            "willSaveWaitUntil": true, +            "didSave": true +          }, +          "completion": { +            "dynamicRegistration": true, +            "contextSupport": true, +            "completionItem": { +              "snippetSupport": true, +              "commitCharactersSupport": true, +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ], +              "deprecatedSupport": true +            }, +            "completionItemKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25 +              ] +            } +          }, +          "hover": { +            "dynamicRegistration": true, +            "contentFormat": [ +              "markdown", +              "plaintext" +            ] +          }, +          "signatureHelp": { +            "dynamicRegistration": true, +            "signatureInformation": { +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ] +            } +          }, +          "definition": { +            "dynamicRegistration": true +          }, +          "references": { +            "dynamicRegistration": true +          }, +          "documentHighlight": { +            "dynamicRegistration": true +          }, +          "documentSymbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "codeAction": { +            "dynamicRegistration": true +          }, +          "codeLens": { +            "dynamicRegistration": true +          }, +          "formatting": { +            "dynamicRegistration": true +          }, +          "rangeFormatting": { +            "dynamicRegistration": true +          }, +          "onTypeFormatting": { +            "dynamicRegistration": true +          }, +          "rename": { +            "dynamicRegistration": true +          }, +          "documentLink": { +            "dynamicRegistration": true +          }, +          "typeDefinition": { +            "dynamicRegistration": true +          }, +          "implementation": { +            "dynamicRegistration": true +          }, +          "colorProvider": { +            "dynamicRegistration": true +          } +        } +      }, +      "trace": "off", +      "workspaceFolders": [ +        { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/002coverage", +          "name": "002coverage" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "initialized", +    "params": {} +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didOpen", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +        "languageId": "vhdl", +        "version": 1, +        "text": "\nentity adder is\n  -- `i0`, `i1`, and the carry-in `ci` are inputs of the adder.\n  -- `s` is the sum output, `co` is the carry-out.\n  port (i0, i1 : in bit; ci : in bit; s : out bit; co : out bit);\nend adder;\n\narchitecture rtl of adder is\nbegin\n  --  This full-adder architecture contains two concurrent assignments.\n  --  Compute the sum.\n  s <= i0 xor i1 xor ci;\n  --  Compute the carry.\n  co <= (i0 and i1) or (i0 and ci) or (i1 and ci);\nend rtl;\n\n" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 1, +    "method": "textDocument/documentSymbol", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didOpen", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl", +        "languageId": "vhdl", +        "version": 1, +        "text": "\n--  A testbench has no ports.\nentity adder_tb is\nend adder_tb;\n\narchitecture behav of adder_tb is\n  --  Declaration of the component that will be instantiated.\n  component adder\n    port (i0, i1 : in bit; ci : in bit; s : out bit; co : out bit);\n  end component;\n\n  --  Specifies which entity is bound with the component.\n  for adder_0: adder use entity work.adder;\n  signal i0, i1, ci, s, co : bit;\nbegin\n  --  Component instantiation.\n  adder_0: adder port map (i0 => i0, i1 => i1, ci => ci,\n                           s => s, co => co);\n\n  --  This process does the real job.\n  process\n    type pattern_type is record\n      --  The inputs of the adder.\n      i0, i1, ci : bit;\n      --  The expected outputs of the adder.\n      s, co : bit;\n    end record;\n    --  The patterns to apply.\n    type pattern_array is array (natural range <>) of pattern_type;\n    constant patterns : pattern_array :=\n      (('0', '0', '0', '0', '0'),\n       ('0', '0', '1', '1', '0'),\n       ('0', '1', '0', '1', '0'),\n       ('0', '1', '1', '0', '1'),\n       ('1', '0', '0', '1', '0'),\n       ('1', '0', '1', '0', '1'),\n       ('1', '1', '0', '0', '1'),\n       ('1', '1', '1', '1', '1'));\n  begin\n    --  Check each pattern.\n    for i in patterns'range loop\n      --  Set the inputs.\n      i0 <= patterns(i).i0;\n      i1 <= patterns(i).i1;\n      ci <= patterns(i).ci;\n      --  Wait for the results.\n      wait for 1 ns;\n      --  Check the outputs.\n      assert s = patterns(i).s\n        report \"bad sum value\" severity error;\n      assert co = patterns(i).co\n        report \"bad carry out value\" severity error;\n    end loop;\n    assert false report \"end of test\" severity note;\n    --  Wait forever; this will finish the simulation.\n    wait;\n  end process;\nend behav;\n\n\n" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 2, +    "method": "textDocument/documentSymbol", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 3, +    "method": "textDocument/definition", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl" +      }, +      "position": { +        "line": 12, +        "character": 39 +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didChange", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +        "version": 2 +      }, +      "contentChanges": [ +        { +          "range": { +            "start": { +              "line": 11, +              "character": 24 +            }, +            "end": { +              "line": 11, +              "character": 24 +            } +          }, +          "rangeLength": 0, +          "text": "\n  " +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 4, +    "method": "textDocument/documentSymbol", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didChange", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +        "version": 3 +      }, +      "contentChanges": [ +        { +          "range": { +            "start": { +              "line": 12, +              "character": 2 +            }, +            "end": { +              "line": 12, +              "character": 2 +            } +          }, +          "rangeLength": 0, +          "text": "e" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 5, +    "method": "textDocument/documentSymbol", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didChange", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +        "version": 4 +      }, +      "contentChanges": [ +        { +          "range": { +            "start": { +              "line": 12, +              "character": 3 +            }, +            "end": { +              "line": 12, +              "character": 3 +            } +          }, +          "rangeLength": 0, +          "text": "r" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didChange", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +        "version": 5 +      }, +      "contentChanges": [ +        { +          "range": { +            "start": { +              "line": 12, +              "character": 4 +            }, +            "end": { +              "line": 12, +              "character": 4 +            } +          }, +          "rangeLength": 0, +          "text": "r" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 6, +    "method": "textDocument/documentSymbol", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didChange", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +        "version": 6 +      }, +      "contentChanges": [ +        { +          "range": { +            "start": { +              "line": 12, +              "character": 5 +            }, +            "end": { +              "line": 12, +              "character": 5 +            } +          }, +          "rangeLength": 0, +          "text": ";" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 7, +    "method": "textDocument/documentSymbol", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didChange", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +        "version": 7 +      }, +      "contentChanges": [ +        { +          "range": { +            "start": { +              "line": 12, +              "character": 2 +            }, +            "end": { +              "line": 13, +              "character": 2 +            } +          }, +          "rangeLength": 7, +          "text": "" +        } +      ] +    } +  } +] diff --git a/testsuite/pyunit/lsp/002coverage/cmds.lsp b/testsuite/pyunit/lsp/002coverage/cmds.lsp new file mode 100644 index 000000000..5d9745df3 --- /dev/null +++ b/testsuite/pyunit/lsp/002coverage/cmds.lsp @@ -0,0 +1,35 @@ +Content-Length: 2167 + +{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":11082,"rootPath":"/home/tgingold/work/vhdl-language-server/tests/002coverage","rootUri":"file:///home/tgingold/work/vhdl-language-server/tests/002coverage","capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"executeCommand":{"dynamicRegistration":true},"configuration":true,"workspaceFolders":true},"textDocument":{"publishDiagnostics":{"relatedInformation":true},"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"contextSupport":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":true},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}},"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["markdown","plaintext"]}},"definition":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"codeAction":{"dynamicRegistration":true},"codeLens":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"typeDefinition":{"dynamicRegistration":true},"implementation":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true}}},"trace":"off","workspaceFolders":[{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/002coverage","name":"002coverage"}]}}Content-Length: 52 + +{"jsonrpc":"2.0","method":"initialized","params":{}}Content-Length: 665 + +{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","languageId":"vhdl","version":1,"text":"\nentity adder is\n  -- `i0`, `i1`, and the carry-in `ci` are inputs of the adder.\n  -- `s` is the sum output, `co` is the carry-out.\n  port (i0, i1 : in bit; ci : in bit; s : out bit; co : out bit);\nend adder;\n\narchitecture rtl of adder is\nbegin\n  --  This full-adder architecture contains two concurrent assignments.\n  --  Compute the sum.\n  s <= i0 xor i1 xor ci;\n  --  Compute the carry.\n  co <= (i0 and i1) or (i0 and ci) or (i1 and ci);\nend rtl;\n\n"}}}Content-Length: 170 + +{"jsonrpc":"2.0","id":1,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl"}}}Content-Length: 2026 + +{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","languageId":"vhdl","version":1,"text":"\n--  A testbench has no ports.\nentity adder_tb is\nend adder_tb;\n\narchitecture behav of adder_tb is\n  --  Declaration of the component that will be instantiated.\n  component adder\n    port (i0, i1 : in bit; ci : in bit; s : out bit; co : out bit);\n  end component;\n\n  --  Specifies which entity is bound with the component.\n  for adder_0: adder use entity work.adder;\n  signal i0, i1, ci, s, co : bit;\nbegin\n  --  Component instantiation.\n  adder_0: adder port map (i0 => i0, i1 => i1, ci => ci,\n                           s => s, co => co);\n\n  --  This process does the real job.\n  process\n    type pattern_type is record\n      --  The inputs of the adder.\n      i0, i1, ci : bit;\n      --  The expected outputs of the adder.\n      s, co : bit;\n    end record;\n    --  The patterns to apply.\n    type pattern_array is array (natural range <>) of pattern_type;\n    constant patterns : pattern_array :=\n      (('0', '0', '0', '0', '0'),\n       ('0', '0', '1', '1', '0'),\n       ('0', '1', '0', '1', '0'),\n       ('0', '1', '1', '0', '1'),\n       ('1', '0', '0', '1', '0'),\n       ('1', '0', '1', '0', '1'),\n       ('1', '1', '0', '0', '1'),\n       ('1', '1', '1', '1', '1'));\n  begin\n    --  Check each pattern.\n    for i in patterns'range loop\n      --  Set the inputs.\n      i0 <= patterns(i).i0;\n      i1 <= patterns(i).i1;\n      ci <= patterns(i).ci;\n      --  Wait for the results.\n      wait for 1 ns;\n      --  Check the outputs.\n      assert s = patterns(i).s\n        report \"bad sum value\" severity error;\n      assert co = patterns(i).co\n        report \"bad carry out value\" severity error;\n    end loop;\n    assert false report \"end of test\" severity note;\n    --  Wait forever; this will finish the simulation.\n    wait;\n  end process;\nend behav;\n\n\n"}}}Content-Length: 173 + +{"jsonrpc":"2.0","id":2,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl"}}}Content-Length: 207 + +{"jsonrpc":"2.0","id":3,"method":"textDocument/definition","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl"},"position":{"line":12,"character":39}}}Content-Length: 299 + +{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","version":2},"contentChanges":[{"range":{"start":{"line":11,"character":24},"end":{"line":11,"character":24}},"rangeLength":0,"text":"\n  "}]}}Content-Length: 170 + +{"jsonrpc":"2.0","id":4,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl"}}}Content-Length: 294 + +{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","version":3},"contentChanges":[{"range":{"start":{"line":12,"character":2},"end":{"line":12,"character":2}},"rangeLength":0,"text":"e"}]}}Content-Length: 170 + +{"jsonrpc":"2.0","id":5,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl"}}}Content-Length: 294 + +{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","version":4},"contentChanges":[{"range":{"start":{"line":12,"character":3},"end":{"line":12,"character":3}},"rangeLength":0,"text":"r"}]}}Content-Length: 294 + +{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","version":5},"contentChanges":[{"range":{"start":{"line":12,"character":4},"end":{"line":12,"character":4}},"rangeLength":0,"text":"r"}]}}Content-Length: 170 + +{"jsonrpc":"2.0","id":6,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl"}}}Content-Length: 294 + +{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","version":6},"contentChanges":[{"range":{"start":{"line":12,"character":5},"end":{"line":12,"character":5}},"rangeLength":0,"text":";"}]}}Content-Length: 170 + +{"jsonrpc":"2.0","id":7,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl"}}}Content-Length: 293 + +{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","version":7},"contentChanges":[{"range":{"start":{"line":12,"character":2},"end":{"line":13,"character":2}},"rangeLength":7,"text":""}]}}
\ No newline at end of file diff --git a/testsuite/pyunit/lsp/002coverage/hdl-prj.json b/testsuite/pyunit/lsp/002coverage/hdl-prj.json new file mode 100644 index 000000000..d4ef345e7 --- /dev/null +++ b/testsuite/pyunit/lsp/002coverage/hdl-prj.json @@ -0,0 +1,5 @@ +{ "files": [ +    { "file": "../files/adder.vhdl", "language": "vhdl" }, +    { "file": "../files/heartbeat.vhdl", "language": "vhdl" }, +    { "file": "../files/adder_tb.vhdl", "language": "vhdl" } +]} diff --git a/testsuite/pyunit/lsp/002coverage/replies.json b/testsuite/pyunit/lsp/002coverage/replies.json new file mode 100644 index 000000000..f573052cb --- /dev/null +++ b/testsuite/pyunit/lsp/002coverage/replies.json @@ -0,0 +1,627 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "result": { +      "capabilities": { +        "textDocumentSync": { +          "openClose": true, +          "change": 2, +          "save": { +            "includeText": true +          } +        }, +        "hoverProvider": false, +        "definitionProvider": true, +        "referencesProvider": false, +        "documentHighlightProvider": false, +        "documentSymbolProvider": true, +        "codeActionProvider": false, +        "documentFormattingProvider": false, +        "documentRangeFormattingProvider": true, +        "renameProvider": false +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +      "diagnostics": [] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 1, +    "result": [ +      { +        "kind": 2, +        "name": "adder", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +          "range": { +            "start": { +              "line": 1, +              "character": 0 +            }, +            "end": { +              "line": 5, +              "character": 0 +            } +          } +        } +      }, +      { +        "kind": 2, +        "name": "rtl", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +          "range": { +            "start": { +              "line": 7, +              "character": 0 +            }, +            "end": { +              "line": 14, +              "character": 0 +            } +          } +        } +      } +    ] +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl", +      "diagnostics": [] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 2, +    "result": [ +      { +        "kind": 2, +        "name": "adder_tb", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl", +          "range": { +            "start": { +              "line": 2, +              "character": 0 +            }, +            "end": { +              "line": 3, +              "character": 0 +            } +          } +        } +      }, +      { +        "kind": 2, +        "name": "behav", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl", +          "range": { +            "start": { +              "line": 5, +              "character": 0 +            }, +            "end": { +              "line": 57, +              "character": 0 +            } +          } +        } +      }, +      { +        "kind": 6, +        "name": "adder_0", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl", +          "range": { +            "start": { +              "line": 16, +              "character": 2 +            }, +            "end": { +              "line": 16, +              "character": 9 +            } +          } +        }, +        "containerName": { +          "kind": 2, +          "name": "behav", +          "location": { +            "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl", +            "range": { +              "start": { +                "line": 5, +                "character": 0 +              }, +              "end": { +                "line": 57, +                "character": 0 +              } +            } +          } +        } +      } +    ] +  }, +  { +    "jsonrpc": "2.0", +    "id": 3, +    "result": [ +      { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +        "range": { +          "start": { +            "line": 1, +            "character": 7 +          }, +          "end": { +            "line": 1, +            "character": 12 +          } +        } +      } +    ] +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +      "diagnostics": [] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 4, +    "result": [ +      { +        "kind": 2, +        "name": "adder", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +          "range": { +            "start": { +              "line": 1, +              "character": 0 +            }, +            "end": { +              "line": 5, +              "character": 0 +            } +          } +        } +      }, +      { +        "kind": 2, +        "name": "rtl", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +          "range": { +            "start": { +              "line": 7, +              "character": 0 +            }, +            "end": { +              "line": 15, +              "character": 0 +            } +          } +        } +      } +    ] +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +      "diagnostics": [ +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 14, +              "character": 2 +            }, +            "end": { +              "line": 14, +              "character": 2 +            } +          }, +          "message": "'<=' is expected instead of \"co\"", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 12, +              "character": 2 +            }, +            "end": { +              "line": 12, +              "character": 2 +            } +          }, +          "message": "no declaration for \"e\"", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 12, +              "character": 2 +            }, +            "end": { +              "line": 12, +              "character": 2 +            } +          }, +          "message": "target is not a signal name", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 14, +              "character": 2 +            }, +            "end": { +              "line": 14, +              "character": 2 +            } +          }, +          "message": "port \"co\" cannot be read", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 14, +              "character": 20 +            }, +            "end": { +              "line": 14, +              "character": 20 +            } +          }, +          "message": "no function declarations for operator \"or\"", +          "severity": 1 +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 5, +    "result": [ +      { +        "kind": 2, +        "name": "adder", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +          "range": { +            "start": { +              "line": 1, +              "character": 0 +            }, +            "end": { +              "line": 5, +              "character": 0 +            } +          } +        } +      }, +      { +        "kind": 2, +        "name": "rtl", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +          "range": { +            "start": { +              "line": 7, +              "character": 0 +            }, +            "end": { +              "line": 15, +              "character": 0 +            } +          } +        } +      } +    ] +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +      "diagnostics": [ +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 14, +              "character": 2 +            }, +            "end": { +              "line": 14, +              "character": 2 +            } +          }, +          "message": "'<=' is expected instead of \"co\"", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 12, +              "character": 2 +            }, +            "end": { +              "line": 12, +              "character": 2 +            } +          }, +          "message": "no declaration for \"er\"", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 12, +              "character": 2 +            }, +            "end": { +              "line": 12, +              "character": 2 +            } +          }, +          "message": "target is not a signal name", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 14, +              "character": 2 +            }, +            "end": { +              "line": 14, +              "character": 2 +            } +          }, +          "message": "port \"co\" cannot be read", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 14, +              "character": 20 +            }, +            "end": { +              "line": 14, +              "character": 20 +            } +          }, +          "message": "no function declarations for operator \"or\"", +          "severity": 1 +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +      "diagnostics": [ +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 14, +              "character": 2 +            }, +            "end": { +              "line": 14, +              "character": 2 +            } +          }, +          "message": "'<=' is expected instead of \"co\"", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 12, +              "character": 2 +            }, +            "end": { +              "line": 12, +              "character": 2 +            } +          }, +          "message": "no declaration for \"err\"", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 12, +              "character": 2 +            }, +            "end": { +              "line": 12, +              "character": 2 +            } +          }, +          "message": "target is not a signal name", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 14, +              "character": 2 +            }, +            "end": { +              "line": 14, +              "character": 2 +            } +          }, +          "message": "port \"co\" cannot be read", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 14, +              "character": 20 +            }, +            "end": { +              "line": 14, +              "character": 20 +            } +          }, +          "message": "no function declarations for operator \"or\"", +          "severity": 1 +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 6, +    "result": [ +      { +        "kind": 2, +        "name": "adder", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +          "range": { +            "start": { +              "line": 1, +              "character": 0 +            }, +            "end": { +              "line": 5, +              "character": 0 +            } +          } +        } +      }, +      { +        "kind": 2, +        "name": "rtl", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +          "range": { +            "start": { +              "line": 7, +              "character": 0 +            }, +            "end": { +              "line": 15, +              "character": 0 +            } +          } +        } +      } +    ] +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +      "diagnostics": [ +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 12, +              "character": 2 +            }, +            "end": { +              "line": 12, +              "character": 2 +            } +          }, +          "message": "no declaration for \"err\"", +          "severity": 1 +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 7, +    "result": [ +      { +        "kind": 2, +        "name": "adder", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +          "range": { +            "start": { +              "line": 1, +              "character": 0 +            }, +            "end": { +              "line": 5, +              "character": 0 +            } +          } +        } +      }, +      { +        "kind": 2, +        "name": "rtl", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +          "range": { +            "start": { +              "line": 7, +              "character": 0 +            }, +            "end": { +              "line": 15, +              "character": 0 +            } +          } +        } +      } +    ] +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl", +      "diagnostics": [] +    } +  } +] diff --git a/testsuite/pyunit/lsp/002coverage/replies.ref b/testsuite/pyunit/lsp/002coverage/replies.ref new file mode 100644 index 000000000..8fb0ac08c --- /dev/null +++ b/testsuite/pyunit/lsp/002coverage/replies.ref @@ -0,0 +1,33 @@ +Content-Length: 393 + +{"jsonrpc":"2.0","id":0,"result":{"capabilities":{"textDocumentSync":{"openClose":true,"change":2,"save":{"includeText":true}},"hoverProvider":false,"definitionProvider":true,"referencesProvider":false,"documentHighlightProvider":false,"documentSymbolProvider":true,"codeActionProvider":false,"documentFormattingProvider":false,"documentRangeFormattingProvider":false,"renameProvider":false}}}Content-Length: 167 + +{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","diagnostics":[]}}Content-Length: 2423 + +{"jsonrpc":"2.0","id":1,"result":[{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}},{"kind":13,"name":"i0","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":8},"end":{"line":4,"character":10}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"i1","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":12},"end":{"line":4,"character":14}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"ci","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":25},"end":{"line":4,"character":27}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"s","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":38},"end":{"line":4,"character":39}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"co","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":51},"end":{"line":4,"character":53}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":2,"name":"rtl","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":7,"character":13},"end":{"line":7,"character":16}}}}]}Content-Length: 170 + +{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","diagnostics":[]}}Content-Length: 6405 + +{"jsonrpc":"2.0","id":2,"result":[{"kind":2,"name":"adder_tb","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":2,"character":7},"end":{"line":2,"character":15}}}},{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}},{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":7,"character":12},"end":{"line":7,"character":17}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}},{"kind":13,"name":"i0","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":8,"character":10},"end":{"line":8,"character":12}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":7,"character":12},"end":{"line":7,"character":17}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}}},{"kind":13,"name":"i1","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":8,"character":14},"end":{"line":8,"character":16}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":7,"character":12},"end":{"line":7,"character":17}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}}},{"kind":13,"name":"ci","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":8,"character":27},"end":{"line":8,"character":29}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":7,"character":12},"end":{"line":7,"character":17}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}}},{"kind":13,"name":"s","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":8,"character":40},"end":{"line":8,"character":41}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":7,"character":12},"end":{"line":7,"character":17}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}}},{"kind":13,"name":"co","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":8,"character":53},"end":{"line":8,"character":55}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":7,"character":12},"end":{"line":7,"character":17}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}}},{"kind":13,"name":"i0","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":13,"character":9},"end":{"line":13,"character":11}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}},{"kind":13,"name":"i1","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":13,"character":13},"end":{"line":13,"character":15}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}},{"kind":13,"name":"ci","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":13,"character":17},"end":{"line":13,"character":19}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}},{"kind":13,"name":"s","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":13,"character":21},"end":{"line":13,"character":22}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}},{"kind":13,"name":"co","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":13,"character":24},"end":{"line":13,"character":26}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}},{"kind":6,"name":"adder_0","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":16,"character":2},"end":{"line":16,"character":9}}},"containerName":{"kind":2,"name":"behav","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder_tb.vhdl","range":{"start":{"line":5,"character":13},"end":{"line":5,"character":18}}}}}]}Content-Length: 191 + +{"jsonrpc":"2.0","id":3,"result":[{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}]}Content-Length: 167 + +{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","diagnostics":[]}}Content-Length: 2423 + +{"jsonrpc":"2.0","id":4,"result":[{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}},{"kind":13,"name":"i0","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":8},"end":{"line":4,"character":10}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"i1","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":12},"end":{"line":4,"character":14}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"ci","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":25},"end":{"line":4,"character":27}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"s","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":38},"end":{"line":4,"character":39}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"co","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":51},"end":{"line":4,"character":53}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":2,"name":"rtl","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":7,"character":13},"end":{"line":7,"character":16}}}}]}Content-Length: 923 + +{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","diagnostics":[{"source":"ghdl","range":{"start":{"line":14,"character":2},"end":{"line":14,"character":2}},"message":"'<=' is expected instead of \"co\"","severity":1},{"source":"ghdl","range":{"start":{"line":12,"character":2},"end":{"line":12,"character":2}},"message":"no declaration for \"e\"","severity":1},{"source":"ghdl","range":{"start":{"line":12,"character":2},"end":{"line":12,"character":2}},"message":"target is not a signal name","severity":1},{"source":"ghdl","range":{"start":{"line":14,"character":2},"end":{"line":14,"character":2}},"message":"port \"co\" cannot be read","severity":1},{"source":"ghdl","range":{"start":{"line":14,"character":20},"end":{"line":14,"character":20}},"message":"no function declarations for operator \"or\"","severity":1}]}}Content-Length: 2423 + +{"jsonrpc":"2.0","id":5,"result":[{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}},{"kind":13,"name":"i0","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":8},"end":{"line":4,"character":10}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"i1","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":12},"end":{"line":4,"character":14}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"ci","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":25},"end":{"line":4,"character":27}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"s","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":38},"end":{"line":4,"character":39}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"co","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":51},"end":{"line":4,"character":53}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":2,"name":"rtl","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":7,"character":13},"end":{"line":7,"character":16}}}}]}Content-Length: 924 + +{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","diagnostics":[{"source":"ghdl","range":{"start":{"line":14,"character":2},"end":{"line":14,"character":2}},"message":"'<=' is expected instead of \"co\"","severity":1},{"source":"ghdl","range":{"start":{"line":12,"character":2},"end":{"line":12,"character":2}},"message":"no declaration for \"er\"","severity":1},{"source":"ghdl","range":{"start":{"line":12,"character":2},"end":{"line":12,"character":2}},"message":"target is not a signal name","severity":1},{"source":"ghdl","range":{"start":{"line":14,"character":2},"end":{"line":14,"character":2}},"message":"port \"co\" cannot be read","severity":1},{"source":"ghdl","range":{"start":{"line":14,"character":20},"end":{"line":14,"character":20}},"message":"no function declarations for operator \"or\"","severity":1}]}}Content-Length: 925 + +{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","diagnostics":[{"source":"ghdl","range":{"start":{"line":14,"character":2},"end":{"line":14,"character":2}},"message":"'<=' is expected instead of \"co\"","severity":1},{"source":"ghdl","range":{"start":{"line":12,"character":2},"end":{"line":12,"character":2}},"message":"no declaration for \"err\"","severity":1},{"source":"ghdl","range":{"start":{"line":12,"character":2},"end":{"line":12,"character":2}},"message":"target is not a signal name","severity":1},{"source":"ghdl","range":{"start":{"line":14,"character":2},"end":{"line":14,"character":2}},"message":"port \"co\" cannot be read","severity":1},{"source":"ghdl","range":{"start":{"line":14,"character":20},"end":{"line":14,"character":20}},"message":"no function declarations for operator \"or\"","severity":1}]}}Content-Length: 2423 + +{"jsonrpc":"2.0","id":6,"result":[{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}},{"kind":13,"name":"i0","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":8},"end":{"line":4,"character":10}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"i1","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":12},"end":{"line":4,"character":14}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"ci","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":25},"end":{"line":4,"character":27}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"s","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":38},"end":{"line":4,"character":39}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"co","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":51},"end":{"line":4,"character":53}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":2,"name":"rtl","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":7,"character":13},"end":{"line":7,"character":16}}}}]}Content-Length: 312 + +{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","diagnostics":[{"source":"ghdl","range":{"start":{"line":12,"character":2},"end":{"line":12,"character":2}},"message":"no declaration for \"err\"","severity":1}]}}Content-Length: 2423 + +{"jsonrpc":"2.0","id":7,"result":[{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}},{"kind":13,"name":"i0","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":8},"end":{"line":4,"character":10}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"i1","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":12},"end":{"line":4,"character":14}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"ci","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":25},"end":{"line":4,"character":27}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"s","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":38},"end":{"line":4,"character":39}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"co","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":51},"end":{"line":4,"character":53}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":2,"name":"rtl","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":7,"character":13},"end":{"line":7,"character":16}}}}]}Content-Length: 167 + +{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","diagnostics":[]}}
\ No newline at end of file diff --git a/testsuite/pyunit/lsp/002coverage/vhdl-ls.trace.in b/testsuite/pyunit/lsp/002coverage/vhdl-ls.trace.in new file mode 100644 index 000000000..8c3112447 --- /dev/null +++ b/testsuite/pyunit/lsp/002coverage/vhdl-ls.trace.in @@ -0,0 +1,11 @@ +Content-Length: 2167 + +{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":22858,"rootPath":"/home/tgingold/work/vhdl-language-server/tests/002coverage","rootUri":"file:///home/tgingold/work/vhdl-language-server/tests/002coverage","capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"executeCommand":{"dynamicRegistration":true},"configuration":true,"workspaceFolders":true},"textDocument":{"publishDiagnostics":{"relatedInformation":true},"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"contextSupport":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":true},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}},"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["markdown","plaintext"]}},"definition":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"codeAction":{"dynamicRegistration":true},"codeLens":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"typeDefinition":{"dynamicRegistration":true},"implementation":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true}}},"trace":"off","workspaceFolders":[{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/002coverage","name":"002coverage"}]}}Content-Length: 52 + +{"jsonrpc":"2.0","method":"initialized","params":{}}Content-Length: 665 + +{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","languageId":"vhdl","version":1,"text":"\nentity adder is\n  -- `i0`, `i1`, and the carry-in `ci` are inputs of the adder.\n  -- `s` is the sum output, `co` is the carry-out.\n  port (i0, i1 : in bit; ci : in bit; s : out bit; co : out bit);\nend adder;\n\narchitecture rtl of adder is\nbegin\n  --  This full-adder architecture contains two concurrent assignments.\n  --  Compute the sum.\n  s <= i0 xor i1 xor ci;\n  --  Compute the carry.\n  co <= (i0 and i1) or (i0 and ci) or (i1 and ci);\nend rtl;\n\n"}}}Content-Length: 170 + +{"jsonrpc":"2.0","id":1,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl"}}}Content-Length: 58 + +{"jsonrpc":"2.0","id":2,"method":"shutdown","params":null}
\ No newline at end of file diff --git a/testsuite/pyunit/lsp/002coverage/vhdl-ls.trace.out b/testsuite/pyunit/lsp/002coverage/vhdl-ls.trace.out new file mode 100644 index 000000000..a31574b10 --- /dev/null +++ b/testsuite/pyunit/lsp/002coverage/vhdl-ls.trace.out @@ -0,0 +1,9 @@ +Content-Length: 393 + +{"jsonrpc":"2.0","id":0,"result":{"capabilities":{"textDocumentSync":{"openClose":true,"change":2,"save":{"includeText":true}},"hoverProvider":false,"definitionProvider":true,"referencesProvider":false,"documentHighlightProvider":false,"documentSymbolProvider":true,"codeActionProvider":false,"documentFormattingProvider":false,"documentRangeFormattingProvider":false,"renameProvider":false}}}Content-Length: 167 + +{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","diagnostics":[]}}Content-Length: 2423 + +{"jsonrpc":"2.0","id":1,"result":[{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}},{"kind":13,"name":"i0","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":8},"end":{"line":4,"character":10}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"i1","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":12},"end":{"line":4,"character":14}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"ci","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":25},"end":{"line":4,"character":27}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"s","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":38},"end":{"line":4,"character":39}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":13,"name":"co","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":4,"character":51},"end":{"line":4,"character":53}}},"containerName":{"kind":2,"name":"adder","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":1,"character":7},"end":{"line":1,"character":12}}}}},{"kind":2,"name":"rtl","location":{"uri":"file:///home/tgingold/work/vhdl-language-server/tests/files/adder.vhdl","range":{"start":{"line":7,"character":13},"end":{"line":7,"character":16}}}}]}Content-Length: 38 + +{"jsonrpc":"2.0","id":2,"result":null}
\ No newline at end of file diff --git a/testsuite/pyunit/lsp/003errors/cmds.json b/testsuite/pyunit/lsp/003errors/cmds.json new file mode 100644 index 000000000..03d6b1e37 --- /dev/null +++ b/testsuite/pyunit/lsp/003errors/cmds.json @@ -0,0 +1,245 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "method": "initialize", +    "params": { +      "processId": 5529, +      "rootPath": "/home/tgingold/work/vhdl-language-server/tests/003errors", +      "rootUri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors", +      "capabilities": { +        "workspace": { +          "applyEdit": true, +          "workspaceEdit": { +            "documentChanges": true +          }, +          "didChangeConfiguration": { +            "dynamicRegistration": true +          }, +          "didChangeWatchedFiles": { +            "dynamicRegistration": true +          }, +          "symbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "executeCommand": { +            "dynamicRegistration": true +          }, +          "configuration": true, +          "workspaceFolders": true +        }, +        "textDocument": { +          "publishDiagnostics": { +            "relatedInformation": true +          }, +          "synchronization": { +            "dynamicRegistration": true, +            "willSave": true, +            "willSaveWaitUntil": true, +            "didSave": true +          }, +          "completion": { +            "dynamicRegistration": true, +            "contextSupport": true, +            "completionItem": { +              "snippetSupport": true, +              "commitCharactersSupport": true, +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ], +              "deprecatedSupport": true +            }, +            "completionItemKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25 +              ] +            } +          }, +          "hover": { +            "dynamicRegistration": true, +            "contentFormat": [ +              "markdown", +              "plaintext" +            ] +          }, +          "signatureHelp": { +            "dynamicRegistration": true, +            "signatureInformation": { +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ] +            } +          }, +          "definition": { +            "dynamicRegistration": true +          }, +          "references": { +            "dynamicRegistration": true +          }, +          "documentHighlight": { +            "dynamicRegistration": true +          }, +          "documentSymbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "codeAction": { +            "dynamicRegistration": true +          }, +          "codeLens": { +            "dynamicRegistration": true +          }, +          "formatting": { +            "dynamicRegistration": true +          }, +          "rangeFormatting": { +            "dynamicRegistration": true +          }, +          "onTypeFormatting": { +            "dynamicRegistration": true +          }, +          "rename": { +            "dynamicRegistration": true +          }, +          "documentLink": { +            "dynamicRegistration": true +          }, +          "typeDefinition": { +            "dynamicRegistration": true +          }, +          "implementation": { +            "dynamicRegistration": true +          }, +          "colorProvider": { +            "dynamicRegistration": true +          } +        } +      }, +      "trace": "off", +      "workspaceFolders": [ +        { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors", +          "name": "003errors" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "initialized", +    "params": {} +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didOpen", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors/tc.vhdl", +        "languageId": "vhdl", +        "version": 1, +        "text": "library ieee;\nuse ieee.std_logic_1164.all;\nuse ieee.std_logic_unsigned.all;\n\nentity tb is\nend tb;\n\narchitecture behav of tb is\n    signal s : std_logic_vector(7 downto 0);\nbegin\n    assert s /= x\"73\";\nend behav;        \n" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 1, +    "method": "textDocument/documentSymbol", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors/tc.vhdl" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 2, +    "method": "shutdown", +    "params": null +  } +] diff --git a/testsuite/pyunit/lsp/003errors/crash1.json b/testsuite/pyunit/lsp/003errors/crash1.json new file mode 100644 index 000000000..155770d78 --- /dev/null +++ b/testsuite/pyunit/lsp/003errors/crash1.json @@ -0,0 +1,229 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "method": "initialize", +    "params": { +      "processId": 27805, +      "rootPath": "/home/tgingold/work/vhdl-language-server/tests/003errors", +      "rootUri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors", +      "capabilities": { +        "workspace": { +          "applyEdit": true, +          "workspaceEdit": { +            "documentChanges": true +          }, +          "didChangeConfiguration": { +            "dynamicRegistration": true +          }, +          "didChangeWatchedFiles": { +            "dynamicRegistration": true +          }, +          "symbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "executeCommand": { +            "dynamicRegistration": true +          }, +          "configuration": true, +          "workspaceFolders": true +        }, +        "textDocument": { +          "publishDiagnostics": { +            "relatedInformation": true +          }, +          "synchronization": { +            "dynamicRegistration": true, +            "willSave": true, +            "willSaveWaitUntil": true, +            "didSave": true +          }, +          "completion": { +            "dynamicRegistration": true, +            "contextSupport": true, +            "completionItem": { +              "snippetSupport": true, +              "commitCharactersSupport": true, +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ], +              "deprecatedSupport": true +            }, +            "completionItemKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25 +              ] +            } +          }, +          "hover": { +            "dynamicRegistration": true, +            "contentFormat": [ +              "markdown", +              "plaintext" +            ] +          }, +          "signatureHelp": { +            "dynamicRegistration": true, +            "signatureInformation": { +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ] +            } +          }, +          "definition": { +            "dynamicRegistration": true +          }, +          "references": { +            "dynamicRegistration": true +          }, +          "documentHighlight": { +            "dynamicRegistration": true +          }, +          "documentSymbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "codeAction": { +            "dynamicRegistration": true +          }, +          "codeLens": { +            "dynamicRegistration": true +          }, +          "formatting": { +            "dynamicRegistration": true +          }, +          "rangeFormatting": { +            "dynamicRegistration": true +          }, +          "onTypeFormatting": { +            "dynamicRegistration": true +          }, +          "rename": { +            "dynamicRegistration": true +          }, +          "documentLink": { +            "dynamicRegistration": true +          }, +          "typeDefinition": { +            "dynamicRegistration": true +          }, +          "implementation": { +            "dynamicRegistration": true +          }, +          "colorProvider": { +            "dynamicRegistration": true +          } +        } +      }, +      "trace": "off", +      "workspaceFolders": [ +        { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors", +          "name": "003errors" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "initialized", +    "params": {} +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didOpen", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors/tc.vhdl", +        "languageId": "vhdl", +        "version": 74, +        "text": "library ieee;\nuse ieee.std_logic_1164.all;\nuse ieee.std_logic_unsigned.all;\n\nentity \n" +      } +    } +  } +] diff --git a/testsuite/pyunit/lsp/003errors/crash2.json b/testsuite/pyunit/lsp/003errors/crash2.json new file mode 100644 index 000000000..ab12ed3bf --- /dev/null +++ b/testsuite/pyunit/lsp/003errors/crash2.json @@ -0,0 +1,239 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "method": "initialize", +    "params": { +      "processId": 30387, +      "rootPath": "/home/tgingold/work/vhdl-language-server/tests/003errors", +      "rootUri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors", +      "capabilities": { +        "workspace": { +          "applyEdit": true, +          "workspaceEdit": { +            "documentChanges": true +          }, +          "didChangeConfiguration": { +            "dynamicRegistration": true +          }, +          "didChangeWatchedFiles": { +            "dynamicRegistration": true +          }, +          "symbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "executeCommand": { +            "dynamicRegistration": true +          }, +          "configuration": true, +          "workspaceFolders": true +        }, +        "textDocument": { +          "publishDiagnostics": { +            "relatedInformation": true +          }, +          "synchronization": { +            "dynamicRegistration": true, +            "willSave": true, +            "willSaveWaitUntil": true, +            "didSave": true +          }, +          "completion": { +            "dynamicRegistration": true, +            "contextSupport": true, +            "completionItem": { +              "snippetSupport": true, +              "commitCharactersSupport": true, +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ], +              "deprecatedSupport": true +            }, +            "completionItemKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25 +              ] +            } +          }, +          "hover": { +            "dynamicRegistration": true, +            "contentFormat": [ +              "markdown", +              "plaintext" +            ] +          }, +          "signatureHelp": { +            "dynamicRegistration": true, +            "signatureInformation": { +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ] +            } +          }, +          "definition": { +            "dynamicRegistration": true +          }, +          "references": { +            "dynamicRegistration": true +          }, +          "documentHighlight": { +            "dynamicRegistration": true +          }, +          "documentSymbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "codeAction": { +            "dynamicRegistration": true +          }, +          "codeLens": { +            "dynamicRegistration": true +          }, +          "formatting": { +            "dynamicRegistration": true +          }, +          "rangeFormatting": { +            "dynamicRegistration": true +          }, +          "onTypeFormatting": { +            "dynamicRegistration": true +          }, +          "rename": { +            "dynamicRegistration": true +          }, +          "documentLink": { +            "dynamicRegistration": true +          }, +          "typeDefinition": { +            "dynamicRegistration": true +          }, +          "implementation": { +            "dynamicRegistration": true +          }, +          "colorProvider": { +            "dynamicRegistration": true +          } +        } +      }, +      "trace": "off", +      "workspaceFolders": [ +        { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors", +          "name": "003errors" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "initialized", +    "params": {} +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didOpen", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors/tc.vhdl", +        "languageId": "vhdl", +        "version": 172, +        "text": "library ieee;\nuse ieee.std_logic_1164.all;\nuse ieee.std_logic_unsigned.all;\n\nentity tb is\nend tb;\n\narchitecture behav of tb is\n    signal s : std_logic_vector(7 downto 0);\nbegin\n      assert s != x\"73\";\n    end process;\nend behav;        \n" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 1, +    "method": "textDocument/documentSymbol", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors/tc.vhdl" +      } +    } +  } +] diff --git a/testsuite/pyunit/lsp/003errors/replies.json b/testsuite/pyunit/lsp/003errors/replies.json new file mode 100644 index 000000000..02e9cac85 --- /dev/null +++ b/testsuite/pyunit/lsp/003errors/replies.json @@ -0,0 +1,110 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "result": { +      "capabilities": { +        "textDocumentSync": { +          "openClose": true, +          "change": 2, +          "save": { +            "includeText": true +          } +        }, +        "hoverProvider": false, +        "definitionProvider": true, +        "referencesProvider": false, +        "documentHighlightProvider": false, +        "documentSymbolProvider": true, +        "codeActionProvider": false, +        "documentFormattingProvider": false, +        "documentRangeFormattingProvider": true, +        "renameProvider": false +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors/tc.vhdl", +      "diagnostics": [ +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 2, +              "character": 9 +            }, +            "end": { +              "line": 2, +              "character": 9 +            } +          }, +          "message": "unit \"std_logic_unsigned\" not found in library \"ieee\"", +          "severity": 1 +        }, +        { +          "source": "ghdl", +          "range": { +            "start": { +              "line": 2, +              "character": 9 +            }, +            "end": { +              "line": 2, +              "character": 9 +            } +          }, +          "message": " (use --ieee=synopsys for non-standard synopsys packages)", +          "severity": 1 +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 1, +    "result": [ +      { +        "kind": 2, +        "name": "tb", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors/tc.vhdl", +          "range": { +            "start": { +              "line": 4, +              "character": 0 +            }, +            "end": { +              "line": 5, +              "character": 0 +            } +          } +        } +      }, +      { +        "kind": 2, +        "name": "behav", +        "location": { +          "uri": "file:///home/tgingold/work/vhdl-language-server/tests/003errors/tc.vhdl", +          "range": { +            "start": { +              "line": 7, +              "character": 0 +            }, +            "end": { +              "line": 11, +              "character": 0 +            } +          } +        } +      } +    ] +  }, +  { +    "jsonrpc": "2.0", +    "id": 2, +    "result": null +  } +] diff --git a/testsuite/pyunit/lsp/003errors/tc.vhdl b/testsuite/pyunit/lsp/003errors/tc.vhdl new file mode 100644 index 000000000..6308aeb6f --- /dev/null +++ b/testsuite/pyunit/lsp/003errors/tc.vhdl @@ -0,0 +1,12 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity tb is +end tb; + +architecture behav of tb is +    signal s : std_logic_vector(7 downto 0); +begin +    assert s /= x"73"; +end behav;         diff --git a/testsuite/pyunit/lsp/004errprj/cmds.json b/testsuite/pyunit/lsp/004errprj/cmds.json new file mode 100644 index 000000000..813a6cb50 --- /dev/null +++ b/testsuite/pyunit/lsp/004errprj/cmds.json @@ -0,0 +1,180 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "method": "initialize", +    "params": { +        "processId": 2, +        "rootPath": ".", +        "rootUri": "file://.", +      "capabilities": { +        "workspace": { +          "applyEdit": true, +          "workspaceEdit": { +            "documentChanges": true +          }, +          "symbol": { +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "configuration": true, +          "workspaceFolders": true +        }, +        "textDocument": { +          "publishDiagnostics": { +            "relatedInformation": true +          }, +          "synchronization": { +            "dynamicRegistration": true, +            "willSave": true, +            "willSaveWaitUntil": true, +            "didSave": true +          }, +          "completion": { +            "dynamicRegistration": true, +            "contextSupport": true, +            "completionItem": { +              "snippetSupport": true, +              "commitCharactersSupport": true, +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ], +              "deprecatedSupport": true +            }, +            "completionItemKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25 +              ] +            } +          }, +          "hover": { +            "dynamicRegistration": true, +            "contentFormat": [ +              "markdown", +              "plaintext" +            ] +          }, +          "signatureHelp": { +            "dynamicRegistration": true, +            "signatureInformation": { +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ] +            } +          }, +          "documentSymbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          } +        } +      }, +      "trace": "off", +      "workspaceFolders": [ +        { +            "uri": "file:///.", +            "name": "workspacename" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "initialized", +    "params": {} +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didOpen", +    "params": { +      "textDocument": { +        "uri": "file:///../files/hello.vhdl", +        "languageId": "vhdl", +        "version": 1, +        "text": "\n--  Hello world program\nuse std.textio.all; -- Imports the standard textio package.\n\n--  Defines a design entity, without any ports.\nentity hello_world is\nend hello_world;\n\narchitecture behaviour of hello_world is\nbegin\n  process\n    variable l : line;\n  begin\n    write (l, String'(\"Hello world!\"));\n    writeline (output, l);\n    wait;\n  end process;\nend behaviour;\n\n" +      } +    } +  } +] diff --git a/testsuite/pyunit/lsp/004errprj/hdl-prj.json b/testsuite/pyunit/lsp/004errprj/hdl-prj.json new file mode 100644 index 000000000..1711a10f6 --- /dev/null +++ b/testsuite/pyunit/lsp/004errprj/hdl-prj.json @@ -0,0 +1,3 @@ +{ files: [ +    { "file": "../files/heartbeat.vhdl", "language": "vhdl" }, +]} diff --git a/testsuite/pyunit/lsp/004errprj/replies.json b/testsuite/pyunit/lsp/004errprj/replies.json new file mode 100644 index 000000000..4c7f38082 --- /dev/null +++ b/testsuite/pyunit/lsp/004errprj/replies.json @@ -0,0 +1,42 @@ +[ +  { +    "jsonrpc": "2.0", +    "method": "window/showMessage", +    "params": { +      "type": 1, +      "message": "json error in project file ./hdl-prj.json:1:3" +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 0, +    "result": { +      "capabilities": { +        "textDocumentSync": { +          "openClose": true, +          "change": 2, +          "save": { +            "includeText": true +          } +        }, +        "hoverProvider": false, +        "definitionProvider": true, +        "referencesProvider": false, +        "documentHighlightProvider": false, +        "documentSymbolProvider": true, +        "codeActionProvider": false, +        "documentFormattingProvider": false, +        "documentRangeFormattingProvider": true, +        "renameProvider": false +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///../files/hello.vhdl", +      "diagnostics": [] +    } +  } +] diff --git a/testsuite/pyunit/lsp/005create/cmds.json b/testsuite/pyunit/lsp/005create/cmds.json new file mode 100644 index 000000000..c4748062f --- /dev/null +++ b/testsuite/pyunit/lsp/005create/cmds.json @@ -0,0 +1,248 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "method": "initialize", +    "params": { +        "processId": 6576, +        "rootPath": ".", +        "rootUri": "file://.", +      "capabilities": { +        "workspace": { +          "applyEdit": true, +          "workspaceEdit": { +            "documentChanges": true +          }, +          "didChangeConfiguration": { +            "dynamicRegistration": true +          }, +          "didChangeWatchedFiles": { +            "dynamicRegistration": true +          }, +          "symbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "executeCommand": { +            "dynamicRegistration": true +          }, +          "configuration": true, +          "workspaceFolders": true +        }, +        "textDocument": { +          "publishDiagnostics": { +            "relatedInformation": true +          }, +          "synchronization": { +            "dynamicRegistration": true, +            "willSave": true, +            "willSaveWaitUntil": true, +            "didSave": true +          }, +          "completion": { +            "dynamicRegistration": true, +            "contextSupport": true, +            "completionItem": { +              "snippetSupport": true, +              "commitCharactersSupport": true, +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ], +              "deprecatedSupport": true, +              "preselectSupport": true +            }, +            "completionItemKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25 +              ] +            } +          }, +          "hover": { +            "dynamicRegistration": true, +            "contentFormat": [ +              "markdown", +              "plaintext" +            ] +          }, +          "signatureHelp": { +            "dynamicRegistration": true, +            "signatureInformation": { +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ] +            } +          }, +          "definition": { +            "dynamicRegistration": true +          }, +          "references": { +            "dynamicRegistration": true +          }, +          "documentHighlight": { +            "dynamicRegistration": true +          }, +          "documentSymbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            }, +            "hierarchicalDocumentSymbolSupport": true +          }, +          "codeAction": { +            "dynamicRegistration": true, +            "codeActionLiteralSupport": { +              "codeActionKind": { +                "valueSet": [ +                  "", +                  "quickfix", +                  "refactor", +                  "refactor.extract", +                  "refactor.inline", +                  "refactor.rewrite", +                  "source", +                  "source.organizeImports" +                ] +              } +            } +          }, +          "codeLens": { +            "dynamicRegistration": true +          }, +          "formatting": { +            "dynamicRegistration": true +          }, +          "rangeFormatting": { +            "dynamicRegistration": true +          }, +          "onTypeFormatting": { +            "dynamicRegistration": true +          }, +          "rename": { +            "dynamicRegistration": true +          }, +          "documentLink": { +            "dynamicRegistration": true +          }, +          "typeDefinition": { +            "dynamicRegistration": true +          }, +          "implementation": { +            "dynamicRegistration": true +          }, +          "colorProvider": { +            "dynamicRegistration": true +          }, +          "foldingRange": { +            "dynamicRegistration": true, +            "rangeLimit": 5000, +            "lineFoldingOnly": true +          } +        } +      }, +      "trace": "off", +      "workspaceFolders": [ +        { +            "uri": "file://.", +          "name": "folder" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "initialized", +    "params": {} +  }, +  { +    "jsonrpc": "2.0", +    "id": 7, +    "method": "textDocument/documentSymbol", +    "params": { +      "textDocument": { +        "uri": "file://../files/hello.vhdl" +      } +    } +  } +] diff --git a/testsuite/pyunit/lsp/005create/replies.json b/testsuite/pyunit/lsp/005create/replies.json new file mode 100644 index 000000000..06027b28a --- /dev/null +++ b/testsuite/pyunit/lsp/005create/replies.json @@ -0,0 +1,31 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "result": { +      "capabilities": { +        "textDocumentSync": { +          "openClose": true, +          "change": 2, +          "save": { +            "includeText": true +          } +        }, +        "hoverProvider": false, +        "definitionProvider": true, +        "referencesProvider": false, +        "documentHighlightProvider": false, +        "documentSymbolProvider": true, +        "codeActionProvider": false, +        "documentFormattingProvider": false, +        "documentRangeFormattingProvider": true, +        "renameProvider": false +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 7, +    "result": [] +  } +] diff --git a/testsuite/pyunit/lsp/005opterr/cmds.json b/testsuite/pyunit/lsp/005opterr/cmds.json new file mode 100644 index 000000000..79fd0207d --- /dev/null +++ b/testsuite/pyunit/lsp/005opterr/cmds.json @@ -0,0 +1,260 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "method": "initialize", +    "params": { +      "processId": 14698, +      "rootPath": "/home/tgingold/work/ghdl-language-server/ghdl-ls/tests/005opterr", +      "rootUri": "file:///home/tgingold/work/ghdl-language-server/ghdl-ls/tests/005opterr", +      "capabilities": { +        "workspace": { +          "applyEdit": true, +          "workspaceEdit": { +            "documentChanges": true +          }, +          "didChangeConfiguration": { +            "dynamicRegistration": true +          }, +          "didChangeWatchedFiles": { +            "dynamicRegistration": true +          }, +          "symbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "executeCommand": { +            "dynamicRegistration": true +          }, +          "configuration": true, +          "workspaceFolders": true +        }, +        "textDocument": { +          "publishDiagnostics": { +            "relatedInformation": true +          }, +          "synchronization": { +            "dynamicRegistration": true, +            "willSave": true, +            "willSaveWaitUntil": true, +            "didSave": true +          }, +          "completion": { +            "dynamicRegistration": true, +            "contextSupport": true, +            "completionItem": { +              "snippetSupport": true, +              "commitCharactersSupport": true, +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ], +              "deprecatedSupport": true, +              "preselectSupport": true +            }, +            "completionItemKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25 +              ] +            } +          }, +          "hover": { +            "dynamicRegistration": true, +            "contentFormat": [ +              "markdown", +              "plaintext" +            ] +          }, +          "signatureHelp": { +            "dynamicRegistration": true, +            "signatureInformation": { +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ] +            } +          }, +          "definition": { +            "dynamicRegistration": true +          }, +          "references": { +            "dynamicRegistration": true +          }, +          "documentHighlight": { +            "dynamicRegistration": true +          }, +          "documentSymbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            }, +            "hierarchicalDocumentSymbolSupport": true +          }, +          "codeAction": { +            "dynamicRegistration": true, +            "codeActionLiteralSupport": { +              "codeActionKind": { +                "valueSet": [ +                  "", +                  "quickfix", +                  "refactor", +                  "refactor.extract", +                  "refactor.inline", +                  "refactor.rewrite", +                  "source", +                  "source.organizeImports" +                ] +              } +            } +          }, +          "codeLens": { +            "dynamicRegistration": true +          }, +          "formatting": { +            "dynamicRegistration": true +          }, +          "rangeFormatting": { +            "dynamicRegistration": true +          }, +          "onTypeFormatting": { +            "dynamicRegistration": true +          }, +          "rename": { +            "dynamicRegistration": true +          }, +          "documentLink": { +            "dynamicRegistration": true +          }, +          "typeDefinition": { +            "dynamicRegistration": true +          }, +          "implementation": { +            "dynamicRegistration": true +          }, +          "colorProvider": { +            "dynamicRegistration": true +          }, +          "foldingRange": { +            "dynamicRegistration": true, +            "rangeLimit": 5000, +            "lineFoldingOnly": true +          } +        } +      }, +      "trace": "off", +      "workspaceFolders": [ +        { +          "uri": "file:///home/tgingold/work/ghdl-language-server/ghdl-ls/tests/005opterr", +          "name": "005opterr" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "initialized", +    "params": {} +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/didOpen", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/ghdl-language-server/ghdl-ls/tests/files/heartbeat.vhdl", +        "languageId": "vhdl", +        "version": 1, +        "text": "\nlibrary ieee;\nuse ieee.std_logic_1164.all;\n\nentity heartbeat is\n  port ( clk: out std_logic);\nend heartbeat;\n\narchitecture behaviour of heartbeat\nis\n  constant clk_period : time := 10 ns;\nbegin\n  -- Clock process definition\n  clk_process: process\n  begin\n    clk <= '0';\n    wait for clk_period/2;\n    clk <= '1';\n    wait for clk_period/2;\n  end process;\nend behaviour;\n\n" +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 1, +    "method": "textDocument/documentSymbol", +    "params": { +      "textDocument": { +        "uri": "file:///home/tgingold/work/ghdl-language-server/ghdl-ls/tests/files/heartbeat.vhdl" +      } +    } +  } +] diff --git a/testsuite/pyunit/lsp/005opterr/hdl-prj.json b/testsuite/pyunit/lsp/005opterr/hdl-prj.json new file mode 100644 index 000000000..9d2798bd1 --- /dev/null +++ b/testsuite/pyunit/lsp/005opterr/hdl-prj.json @@ -0,0 +1,4 @@ +{ "options": { "ghdl_analysis": [ "--unknown-option" ]}, +  "files": [ +    { "file": "../files/heartbeat.vhdl", "language": "vhdl" } +]} diff --git a/testsuite/pyunit/lsp/005opterr/replies.json b/testsuite/pyunit/lsp/005opterr/replies.json new file mode 100644 index 000000000..e21affc07 --- /dev/null +++ b/testsuite/pyunit/lsp/005opterr/replies.json @@ -0,0 +1,116 @@ +[ +  { +    "jsonrpc": "2.0", +    "method": "window/showMessage", +    "params": { +      "type": 1, +      "message": "error with option: --unknown-option" +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 0, +    "result": { +      "capabilities": { +        "textDocumentSync": { +          "openClose": true, +          "change": 2, +          "save": { +            "includeText": true +          } +        }, +        "hoverProvider": false, +        "definitionProvider": true, +        "referencesProvider": false, +        "documentHighlightProvider": false, +        "documentSymbolProvider": true, +        "codeActionProvider": false, +        "documentFormattingProvider": false, +        "documentRangeFormattingProvider": true, +        "renameProvider": false +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "textDocument/publishDiagnostics", +    "params": { +      "uri": "file:///home/tgingold/work/ghdl-language-server/ghdl-ls/tests/files/heartbeat.vhdl", +      "diagnostics": [] +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 1, +    "result": [ +      { +        "kind": 2, +        "name": "heartbeat", +        "location": { +          "uri": "file:///home/tgingold/work/ghdl-language-server/ghdl-ls/tests/files/heartbeat.vhdl", +          "range": { +            "start": { +              "line": 4, +              "character": 0 +            }, +            "end": { +              "line": 6, +              "character": 0 +            } +          } +        } +      }, +      { +        "kind": 2, +        "name": "behaviour", +        "location": { +          "uri": "file:///home/tgingold/work/ghdl-language-server/ghdl-ls/tests/files/heartbeat.vhdl", +          "range": { +            "start": { +              "line": 8, +              "character": 0 +            }, +            "end": { +              "line": 20, +              "character": 0 +            } +          } +        } +      }, +      { +        "kind": 6, +        "name": "clk_process", +        "location": { +          "uri": "file:///home/tgingold/work/ghdl-language-server/ghdl-ls/tests/files/heartbeat.vhdl", +          "range": { +            "start": { +              "line": 13, +              "character": 15 +            }, +            "end": { +              "line": 19, +              "character": 2 +            } +          } +        }, +        "containerName": { +          "kind": 2, +          "name": "behaviour", +          "location": { +            "uri": "file:///home/tgingold/work/ghdl-language-server/ghdl-ls/tests/files/heartbeat.vhdl", +            "range": { +              "start": { +                "line": 8, +                "character": 0 +              }, +              "end": { +                "line": 20, +                "character": 0 +              } +            } +          } +        } +      } +    ] +  } +] diff --git a/testsuite/pyunit/lsp/007errprj/cmds.json b/testsuite/pyunit/lsp/007errprj/cmds.json new file mode 100644 index 000000000..d560fae75 --- /dev/null +++ b/testsuite/pyunit/lsp/007errprj/cmds.json @@ -0,0 +1,168 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "method": "initialize", +    "params": { +        "processId": 2, +        "rootPath": ".", +        "rootUri": "file://.", +      "capabilities": { +        "workspace": { +          "applyEdit": true, +          "workspaceEdit": { +            "documentChanges": true +          }, +          "symbol": { +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "configuration": true, +          "workspaceFolders": true +        }, +        "textDocument": { +          "publishDiagnostics": { +            "relatedInformation": true +          }, +          "synchronization": { +            "dynamicRegistration": true, +            "willSave": true, +            "willSaveWaitUntil": true, +            "didSave": true +          }, +          "completion": { +            "dynamicRegistration": true, +            "contextSupport": true, +            "completionItem": { +              "snippetSupport": true, +              "commitCharactersSupport": true, +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ], +              "deprecatedSupport": true +            }, +            "completionItemKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25 +              ] +            } +          }, +          "hover": { +            "dynamicRegistration": true, +            "contentFormat": [ +              "markdown", +              "plaintext" +            ] +          }, +          "signatureHelp": { +            "dynamicRegistration": true, +            "signatureInformation": { +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ] +            } +          }, +          "documentSymbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          } +        } +      }, +      "trace": "off", +      "workspaceFolders": [ +        { +            "uri": "file:///.", +            "name": "workspacename" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "initialized", +    "params": {} +  } +] diff --git a/testsuite/pyunit/lsp/007errprj/hdl-prj.json b/testsuite/pyunit/lsp/007errprj/hdl-prj.json new file mode 100644 index 000000000..eb675bd13 --- /dev/null +++ b/testsuite/pyunit/lsp/007errprj/hdl-prj.json @@ -0,0 +1,3 @@ +{ "files": [ +    "../files/heartbeat.vhdl" +]} diff --git a/testsuite/pyunit/lsp/007errprj/replies.json b/testsuite/pyunit/lsp/007errprj/replies.json new file mode 100644 index 000000000..205c303dc --- /dev/null +++ b/testsuite/pyunit/lsp/007errprj/replies.json @@ -0,0 +1,34 @@ +[ +  { +    "jsonrpc": "2.0", +    "method": "window/showMessage", +    "params": { +      "type": 1, +      "message": "error in project file: an element of 'files' is not a dict" +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 0, +    "result": { +      "capabilities": { +        "textDocumentSync": { +          "openClose": true, +          "change": 2, +          "save": { +            "includeText": true +          } +        }, +        "hoverProvider": false, +        "definitionProvider": true, +        "referencesProvider": false, +        "documentHighlightProvider": false, +        "documentSymbolProvider": true, +        "codeActionProvider": false, +        "documentFormattingProvider": false, +        "documentRangeFormattingProvider": true, +        "renameProvider": false +      } +    } +  } +] diff --git a/testsuite/pyunit/lsp/008errnofile/cmds.json b/testsuite/pyunit/lsp/008errnofile/cmds.json new file mode 100644 index 000000000..ba9b35a55 --- /dev/null +++ b/testsuite/pyunit/lsp/008errnofile/cmds.json @@ -0,0 +1,244 @@ +[ +  { +    "jsonrpc": "2.0", +    "id": 0, +    "method": "initialize", +    "params": { +      "processId": 19954, +      "rootPath": "/home/tgingold/work/ghdl-language-server/ghdl-ls/tests/008errnofile", +      "rootUri": "file:///home/tgingold/work/ghdl-language-server/ghdl-ls/tests/008errnofile", +      "capabilities": { +        "workspace": { +          "applyEdit": true, +          "workspaceEdit": { +            "documentChanges": true +          }, +          "didChangeConfiguration": { +            "dynamicRegistration": true +          }, +          "didChangeWatchedFiles": { +            "dynamicRegistration": true +          }, +          "symbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            } +          }, +          "executeCommand": { +            "dynamicRegistration": true +          }, +          "configuration": true, +          "workspaceFolders": true +        }, +        "textDocument": { +          "publishDiagnostics": { +            "relatedInformation": true +          }, +          "synchronization": { +            "dynamicRegistration": true, +            "willSave": true, +            "willSaveWaitUntil": true, +            "didSave": true +          }, +          "completion": { +            "dynamicRegistration": true, +            "contextSupport": true, +            "completionItem": { +              "snippetSupport": true, +              "commitCharactersSupport": true, +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ], +              "deprecatedSupport": true, +              "preselectSupport": true +            }, +            "completionItemKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25 +              ] +            } +          }, +          "hover": { +            "dynamicRegistration": true, +            "contentFormat": [ +              "markdown", +              "plaintext" +            ] +          }, +          "signatureHelp": { +            "dynamicRegistration": true, +            "signatureInformation": { +              "documentationFormat": [ +                "markdown", +                "plaintext" +              ] +            } +          }, +          "definition": { +            "dynamicRegistration": true +          }, +          "references": { +            "dynamicRegistration": true +          }, +          "documentHighlight": { +            "dynamicRegistration": true +          }, +          "documentSymbol": { +            "dynamicRegistration": true, +            "symbolKind": { +              "valueSet": [ +                1, +                2, +                3, +                4, +                5, +                6, +                7, +                8, +                9, +                10, +                11, +                12, +                13, +                14, +                15, +                16, +                17, +                18, +                19, +                20, +                21, +                22, +                23, +                24, +                25, +                26 +              ] +            }, +            "hierarchicalDocumentSymbolSupport": true +          }, +          "codeAction": { +            "dynamicRegistration": true, +            "codeActionLiteralSupport": { +              "codeActionKind": { +                "valueSet": [ +                  "", +                  "quickfix", +                  "refactor", +                  "refactor.extract", +                  "refactor.inline", +                  "refactor.rewrite", +                  "source", +                  "source.organizeImports" +                ] +              } +            } +          }, +          "codeLens": { +            "dynamicRegistration": true +          }, +          "formatting": { +            "dynamicRegistration": true +          }, +          "rangeFormatting": { +            "dynamicRegistration": true +          }, +          "onTypeFormatting": { +            "dynamicRegistration": true +          }, +          "rename": { +            "dynamicRegistration": true +          }, +          "documentLink": { +            "dynamicRegistration": true +          }, +          "typeDefinition": { +            "dynamicRegistration": true +          }, +          "implementation": { +            "dynamicRegistration": true +          }, +          "colorProvider": { +            "dynamicRegistration": true +          }, +          "foldingRange": { +            "dynamicRegistration": true, +            "rangeLimit": 5000, +            "lineFoldingOnly": true +          } +        } +      }, +      "trace": "off", +      "workspaceFolders": [ +        { +          "uri": "file://.", +          "name": "008errnofile" +        } +      ] +    } +  }, +  { +    "jsonrpc": "2.0", +    "method": "initialized", +    "params": {} +  }, +  { +    "jsonrpc": "2.0", +    "id": 2, +    "method": "shutdown", +    "params": null +  } +] diff --git a/testsuite/pyunit/lsp/008errnofile/hdl-prj.json b/testsuite/pyunit/lsp/008errnofile/hdl-prj.json new file mode 100644 index 000000000..5bf5bd0fe --- /dev/null +++ b/testsuite/pyunit/lsp/008errnofile/hdl-prj.json @@ -0,0 +1,4 @@ +{ +  "files": [ +    { "file": "nofile.vhdl", "language": "vhdl" } +]} diff --git a/testsuite/pyunit/lsp/008errnofile/replies.json b/testsuite/pyunit/lsp/008errnofile/replies.json new file mode 100644 index 000000000..51fbc3134 --- /dev/null +++ b/testsuite/pyunit/lsp/008errnofile/replies.json @@ -0,0 +1,39 @@ +[ +  { +    "jsonrpc": "2.0", +    "method": "window/showMessage", +    "params": { +      "type": 1, +      "message": "cannot load nofile.vhdl: No such file or directory" +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 0, +    "result": { +      "capabilities": { +        "textDocumentSync": { +          "openClose": true, +          "change": 2, +          "save": { +            "includeText": true +          } +        }, +        "hoverProvider": false, +        "definitionProvider": true, +        "referencesProvider": false, +        "documentHighlightProvider": false, +        "documentSymbolProvider": true, +        "codeActionProvider": false, +        "documentFormattingProvider": false, +        "documentRangeFormattingProvider": true, +        "renameProvider": false +      } +    } +  }, +  { +    "jsonrpc": "2.0", +    "id": 2, +    "result": null +  } +] diff --git a/testsuite/pyunit/lsp/files/adder.vhdl b/testsuite/pyunit/lsp/files/adder.vhdl new file mode 100644 index 000000000..38ff2a60f --- /dev/null +++ b/testsuite/pyunit/lsp/files/adder.vhdl @@ -0,0 +1,16 @@ + +entity adder is +  -- `i0`, `i1`, and the carry-in `ci` are inputs of the adder. +  -- `s` is the sum output, `co` is the carry-out. +  port (i0, i1 : in bit; ci : in bit; s : out bit; co : out bit); +end adder; + +architecture rtl of adder is +begin +  --  This full-adder architecture contains two concurrent assignments. +  --  Compute the sum. +  s <= i0 xor i1 xor ci; +  --  Compute the carry. +  co <= (i0 and i1) or (i0 and ci) or (i1 and ci); +end rtl; + diff --git a/testsuite/pyunit/lsp/files/adder_tb.vhdl b/testsuite/pyunit/lsp/files/adder_tb.vhdl new file mode 100644 index 000000000..7dd9f60b5 --- /dev/null +++ b/testsuite/pyunit/lsp/files/adder_tb.vhdl @@ -0,0 +1,60 @@ + +--  A testbench has no ports. +entity adder_tb is +end adder_tb; + +architecture behav of adder_tb is +  --  Declaration of the component that will be instantiated. +  component adder +    port (i0, i1 : in bit; ci : in bit; s : out bit; co : out bit); +  end component; + +  --  Specifies which entity is bound with the component. +  for adder_0: adder use entity work.adder; +  signal i0, i1, ci, s, co : bit; +begin +  --  Component instantiation. +  adder_0: adder port map (i0 => i0, i1 => i1, ci => ci, +                           s => s, co => co); + +  --  This process does the real job. +  process +    type pattern_type is record +      --  The inputs of the adder. +      i0, i1, ci : bit; +      --  The expected outputs of the adder. +      s, co : bit; +    end record; +    --  The patterns to apply. +    type pattern_array is array (natural range <>) of pattern_type; +    constant patterns : pattern_array := +      (('0', '0', '0', '0', '0'), +       ('0', '0', '1', '1', '0'), +       ('0', '1', '0', '1', '0'), +       ('0', '1', '1', '0', '1'), +       ('1', '0', '0', '1', '0'), +       ('1', '0', '1', '0', '1'), +       ('1', '1', '0', '0', '1'), +       ('1', '1', '1', '1', '1')); +  begin +    --  Check each pattern. +    for i in patterns'range loop +      --  Set the inputs. +      i0 <= patterns(i).i0; +      i1 <= patterns(i).i1; +      ci <= patterns(i).ci; +      --  Wait for the results. +      wait for 1 ns; +      --  Check the outputs. +      assert s = patterns(i).s +        report "bad sum value" severity error; +      assert co = patterns(i).co +        report "bad carry out value" severity error; +    end loop; +    assert false report "end of test" severity note; +    --  Wait forever; this will finish the simulation. +    wait; +  end process; +end behav; + + diff --git a/testsuite/pyunit/lsp/files/heartbeat.vhdl b/testsuite/pyunit/lsp/files/heartbeat.vhdl new file mode 100644 index 000000000..6dfc1a1e1 --- /dev/null +++ b/testsuite/pyunit/lsp/files/heartbeat.vhdl @@ -0,0 +1,22 @@ + +library ieee; +use ieee.std_logic_1164.all; + +entity heartbeat is +  port ( clk: out std_logic); +end heartbeat; + +architecture behaviour of heartbeat +is +  constant clk_period : time := 10 ns; +begin +  -- Clock process definition +  clk_process: process +  begin +    clk <= '0'; +    wait for clk_period/2; +    clk <= '1'; +    wait for clk_period/2; +  end process; +end behaviour; + diff --git a/testsuite/pyunit/lsp/files/hello.vhdl b/testsuite/pyunit/lsp/files/hello.vhdl new file mode 100644 index 000000000..f93578b4a --- /dev/null +++ b/testsuite/pyunit/lsp/files/hello.vhdl @@ -0,0 +1,19 @@ + +--  Hello world program +use std.textio.all; -- Imports the standard textio package. + +--  Defines a design entity, without any ports. +entity hello_world is +end hello_world; + +architecture behaviour of hello_world is +begin +  process +    variable l : line; +  begin +    write (l, String'("Hello world!")); +    writeline (output, l); +    wait; +  end process; +end behaviour; + | 
