microsoft / azure-pipelines-language-server

A language server for Azure Pipelines YAML
37 stars 25 forks source link

Language server crashes when pasting certain text #140

Closed stijnherreman closed 1 year ago

stijnherreman commented 1 year ago

I have a pipeline with the following content:

          - task: PowerShellOnTargetMachines@3
            inputs:
              Machines: EXAMPLE
              InlineScript: |

              CommunicationProtocol: Http

I try to paste this text: [System.Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem") | Out-Null

This is the resulting content:

          - task: PowerShellOnTargetMachines@3
            inputs:
              Machines: EXAMPLE
              InlineScript: |
              [System.Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem") | Out-Null
              CommunicationProtocol: Http

The language server crashes, and it is always reproducible. Perhaps of significance, the indentation I initially have is reduced by two spaces when pasting.

[Error - 17:45:27] Request textDocument/documentSymbol failed.
  Message: Request textDocument/documentSymbol failed with message: Cannot read properties of undefined (reading 'startsWith')
  Code: -32603 
c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1876
        if (property.key.value.startsWith("${{") && property.key.value.endsWith("}}")) {
                               ^

TypeError: Cannot read properties of undefined (reading 'startsWith')
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1876:32)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1806:48)
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1883:30)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
    at addItemsToArrayNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1929:28)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1814:13)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1806:48)
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1883:30)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
[Info  - 17:45:28] Connection to server got closed. Server will restart.
[Error - 17:45:28] Request textDocument/documentSymbol failed.
  Message: Request textDocument/documentSymbol failed with message: Cannot read properties of undefined (reading 'startsWith')
  Code: -32603 
c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1876
        if (property.key.value.startsWith("${{") && property.key.value.endsWith("}}")) {
                               ^

TypeError: Cannot read properties of undefined (reading 'startsWith')
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1876:32)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1806:48)
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1883:30)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
    at addItemsToArrayNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1929:28)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1814:13)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1806:48)
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1883:30)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
[Info  - 17:45:28] Connection to server got closed. Server will restart.
[Error - 17:45:28] Request textDocument/documentSymbol failed.
  Message: Request textDocument/documentSymbol failed with message: Cannot read properties of undefined (reading 'startsWith')
  Code: -32603 
c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1876
        if (property.key.value.startsWith("${{") && property.key.value.endsWith("}}")) {
                               ^

TypeError: Cannot read properties of undefined (reading 'startsWith')
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1876:32)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1806:48)
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1883:30)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
    at addItemsToArrayNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1929:28)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1814:13)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1806:48)
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1883:30)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
[Info  - 17:45:28] Connection to server got closed. Server will restart.
[Error - 17:45:29] Request textDocument/documentSymbol failed.
  Message: Request textDocument/documentSymbol failed with message: Cannot read properties of undefined (reading 'startsWith')
  Code: -32603 
c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1876
        if (property.key.value.startsWith("${{") && property.key.value.endsWith("}}")) {
                               ^

TypeError: Cannot read properties of undefined (reading 'startsWith')
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1876:32)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1806:48)
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1883:30)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
    at addItemsToArrayNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1929:28)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1814:13)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1806:48)
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1883:30)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
[Info  - 17:45:29] Connection to server got closed. Server will restart.
[Error - 17:45:29] Request textDocument/documentSymbol failed.
  Message: Request textDocument/documentSymbol failed with message: Cannot read properties of undefined (reading 'startsWith')
  Code: -32603 
[Error - 17:45:29] Request textDocument/hover failed.
  Message: Request textDocument/hover failed with message: Cannot read properties of undefined (reading 'startsWith')
  Code: -32603 
c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1876
        if (property.key.value.startsWith("${{") && property.key.value.endsWith("}}")) {
                               ^

TypeError: Cannot read properties of undefined (reading 'startsWith')
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1876:32)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1806:48)
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1883:30)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
    at addItemsToArrayNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1929:28)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1814:13)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1806:48)
    at addPropertiesToObjectNode (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1883:30)
    at recursivelyBuildAst (c:\Users\stijn.herreman\.vscode\extensions\ms-azure-devops.azure-pipelines-1.208.0\dist\server.js:1794:13)
[Error - 17:45:29] Connection to server got closed. Server will not be restarted.
50Wliu commented 1 year ago

Thanks for reporting, @stijnherreman. Every time I think we've figured out all the edge cases with expressions, another crash gets reported 😅.

50Wliu commented 1 year ago

This is fixed and will go out in the next extension release (hopefully sometime this week!).