Open
Description
Language Server Version
0.36.1
Terraform Version
1.10.5
Client Version
Visual Studio 2022 (v17.12.5)
Terraform Configuration
no applicable
Steps to Reproduce
I am experimenting to create extension for Visual Studio (not VS Code) to integrate Terraform Language Server.
Expected Behavior
The language properly initialize.
Actual Behavior
I am getting error during initialization. The language fails:
2025/03/17 00:04:02 langserver.go:102: Starting server (pid 2544; concurrency: 6) ...
2025/03/17 00:04:02 opts.go:215: Received request batch of size 1 (qlen=0)
2025/03/17 00:04:02 opts.go:215: Dequeued request batch of length 1 (qlen=0)
2025/03/17 00:04:02 opts.go:215: Request check error for "initialize" (params "{\"processId\":47544,\"rootPath\":\"C:\\Test\\terraform\",\"rootUri\":\"file:///C:/Test/terraform\",\"capabilities\":{\"_vs_supportsVisualStudioExtensions\":true,\"_vs_supportedSnippetVersion\":1,\"_vs_supportsIconExtensions\":true,\"_vs_supportsDiagnosticRequests\":true,\"workspace\":{\"applyEdit\":true,\"workspaceEdit\":{\"documentChanges\":true,\"resourceOperations\":[],\"normalizesLineEndings\":true},\"didChangeConfiguration\":{},\"didChangeWatchedFiles\":{},\"symbol\":{},\"executeCommand\":{\"_vs_supportedCommands\":[\"_ms_setClipboard\",\"_ms_openUrl\"]},\"semanticTokens\":{\"refreshSupport\":true},\"diagnostics\":{\"refreshSupport\":true},\"inlayHint\":{\"refreshSupport\":true}},\"textDocument\":{\"_vs_onAutoInsert\":{\"dynamicRegistration\":true},\"synchronization\":{\"didSave\":true,\"dynamicRegistration\":true},\"completion\":{\"_vs_completionList\":{\"_vs_data\":true,\"_vs_commitCharacters\":true},\"completionItem\":{},\"completionItemKind\":{\"valueSet\":[0,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,118115,118116,118117,118118,118119,118120,118121,118122,118123,118124,118125,118126]},\"insertTextMode\":1,\"completionList\":{\"itemDefaults\":[\"commitCharacters\",\"editRange\",\"insertTextFormat\"]},\"dynamicRegistration\":true},\"hover\":{\"contentFormat\":[\"plaintext\"],\"dynamicRegistration\":true},\"signatureHelp\":{\"signatureInformation\":{\"documentationFormat\":[\"plaintext\"],\"parameterInformation\":{\"labelOffsetSupport\":true}},\"contextSupport\":true,\"dynamicRegistration\":true},\"definition\":{\"dynamicRegistration\":true},\"typeDefinition\":{\"dynamicRegistration\":true},\"implementation\":{\"dynamicRegistration\":true},\"references\":{\"dynamicRegistration\":true},\"documentHighlight\":{\"dynamicRegistration\":true},\"documentSymbol\":{\"dynamicRegistration\":true},\"codeAction\":{\"codeActionLiteralSupport\":{\"_vs_codeActionGroup\":{\"_vs_valueSet\":[\"quickfix\",\"refactor\",\"refactor.extract\",\"refactor.inline\",\"refactor.rewrite\",\"source\",\"source.organizeImports\"]},\"codeActionKind\":{\"valueSet\":[\"quickfix\",\"refactor\",\"refactor.extract\",\"refactor.inline\",\"refactor.rewrite\",\"source\",\"source.organizeImports\"]}},\"resolveSupport\":{\"properties\":[\"additionalTextEdits\",\"command\",\"commitCharacters\",\"description\",\"detail\",\"documentation\",\"insertText\",\"insertTextFormat\",\"label\"]},\"dataSupport\":true,\"dynamicRegistration\":true},\"codeLens\":{\"dynamicRegistration\":true},\"documentLink\":{\"dynamicRegistration\":true},\"formatting\":{\"dynamicRegistration\":true},\"rangeFormatting\":{\"dynamicRegistration\":true},\"onTypeFormatting\":{\"dynamicRegistration\":true},\"rename\":{\"prepareSupport\":true,\"prepareSupportDefaultBehavior\":1,\"dynamicRegistration\":true},\"publishDiagnostics\":{\"tagSupport\":{\"valueSet\":[1,2,2147483646,2147483645]}},\"foldingRange\":{\"_vs_refreshSupport\":true,\"foldingRange\":{\"collapsedText\":true},\"dynamicRegistration\":true},\"linkedEditingRange\":{\"dynamicRegistration\":true},\"semanticTokens\":{\"requests\":{\"range\":true,\"full\":{\"delta\":true}},\"tokenTypes\":[\"namespace\",\"type\",\"class\",\"enum\",\"interface\",\"struct\",\"typeParameter\",\"parameter\",\"variable\",\"property\",\"enumMember\",\"event\",\"function\",\"method\",\"macro\",\"keyword\",\"modifier\",\"comment\",\"string\",\"number\",\"regexp\",\"operator\",\"cppMacro\",\"cppEnumerator\",\"cppGlobalVariable\",\"cppLocalVariable\",\"cppParameter\",\"cppType\",\"cppRefType\",\"cppValueType\",\"cppFunction\",\"cppMemberFunction\",\"cppMemberField\",\"cppStaticMemberFunction\",\"cppStaticMemberField\",\"cppProperty\",\"cppEvent\",\"cppClassTemplate\",\"cppGenericType\",\"cppFunctionTemplate\",\"cppNamespace\",\"cppLabel\",\"cppUserDefinedLiteralRaw\",\"cppUserDefinedLiteralNumber\",\"cppUserDefinedLiteralString\",\"cppOperator\",\"cppMemberOperator\",\"cppNewDelete\"],\"tokenModifiers\":[\"declaration\",\"definition\",\"readonly\",\"static\",\"deprecated\",\"abstract\",\"async\",\"modification\",\"documentation\",\"defaultLibrary\"],\"formats\":[\"relative\"],\"dynamicRegistration\":true},\"inlayHint\":{\"dynamicRegistration\":true}}}}"): [-32600] extra fields in request
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x30 pc=0x94dd48]
goroutine 18 [running]:
github.com/creachadair/jrpc2.InboundRequest(...)
github.com/creachadair/[email protected]/ctx.go:18
github.com/hashicorp/terraform-ls/internal/langserver.(*rpcLogger).LogResponse(0xc00007a358, {0x0?, 0x0?}, 0xc00011e040)
github.com/hashicorp/terraform-ls/internal/langserver/rpc_logger.go:42 +0xc8
github.com/creachadair/jrpc2.tasks.responses({0xc000120000, 0x1, 0x0?}, {0x1bce980, 0xc00007a358})
github.com/creachadair/[email protected]/server.go:813 +0x439
github.com/creachadair/jrpc2.(*Server).dispatchLocked.func1()
github.com/creachadair/[email protected]/server.go:278 +0x229
github.com/creachadair/jrpc2.(*Server).serve.func1()
github.com/creachadair/[email protected]/server.go:180 +0x4c
created by github.com/creachadair/jrpc2.(*Server).serve in goroutine 10
github.com/creachadair/[email protected]/server.go:178 +0x26
Formatted request is the following:
{
"processId": 47544,
"rootPath": "C:\\\\Ivan\\\\infra\\\\azure\\\\dsc\\\\terraform",
"rootUri": "file:///C:/Ivan/infra/azure/dsc/terraform",
"capabilities": {
"_vs_supportsVisualStudioExtensions": true,
"_vs_supportedSnippetVersion": 1,
"_vs_supportsIconExtensions": true,
"_vs_supportsDiagnosticRequests": true,
"workspace": {
"applyEdit": true,
"workspaceEdit": {
"documentChanges": true,
"resourceOperations": [],
"normalizesLineEndings": true
},
"didChangeConfiguration": {},
"didChangeWatchedFiles": {},
"symbol": {},
"executeCommand": { "_vs_supportedCommands": [ "_ms_setClipboard", "_ms_openUrl" ] },
"semanticTokens": { "refreshSupport": true },
"diagnostics": { "refreshSupport": true },
"inlayHint": { "refreshSupport": true }
},
"textDocument": {
"_vs_onAutoInsert": { "dynamicRegistration": true },
"synchronization": {
"didSave": true,
"dynamicRegistration": true
},
"completion": {
"_vs_completionList": {
"_vs_data": true,
"_vs_commitCharacters": true
},
"completionItem": {},
"completionItemKind": { "valueSet": [ 0, 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, 118115, 118116, 118117, 118118, 118119, 118120, 118121, 118122, 118123, 118124, 118125, 118126 ] },
"insertTextMode": 1,
"completionList": { "itemDefaults": [ "commitCharacters", "editRange", "insertTextFormat" ] },
"dynamicRegistration": true
},
"hover": {
"contentFormat": [ "plaintext" ],
"dynamicRegistration": true
},
"signatureHelp": {
"signatureInformation": {
"documentationFormat": [ "plaintext" ],
"parameterInformation": { "labelOffsetSupport": true }
},
"contextSupport": true,
"dynamicRegistration": true
},
"definition": { "dynamicRegistration": true },
"typeDefinition": { "dynamicRegistration": true },
"implementation": { "dynamicRegistration": true },
"references": { "dynamicRegistration": true },
"documentHighlight": { "dynamicRegistration": true },
"documentSymbol": { "dynamicRegistration": true },
"codeAction": {
"codeActionLiteralSupport": {
"_vs_codeActionGroup": { "_vs_valueSet": [ "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" ] },
"codeActionKind": { "valueSet": [ "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" ] }
},
"resolveSupport": { "properties": [ "additionalTextEdits", "command", "commitCharacters", "description", "detail", "documentation", "insertText", "insertTextFormat", "label" ] },
"dataSupport": true,
"dynamicRegistration": true
},
"codeLens": { "dynamicRegistration": true },
"documentLink": { "dynamicRegistration": true },
"formatting": { "dynamicRegistration": true },
"rangeFormatting": { "dynamicRegistration": true },
"onTypeFormatting": { "dynamicRegistration": true },
"rename": {
"prepareSupport": true,
"prepareSupportDefaultBehavior": 1,
"dynamicRegistration": true
},
"publishDiagnostics": { "tagSupport": { "valueSet": [ 1, 2, 2147483646, 2147483645 ] } },
"foldingRange": {
"_vs_refreshSupport": true,
"foldingRange": { "collapsedText": true },
"dynamicRegistration": true
},
"linkedEditingRange": { "dynamicRegistration": true },
"semanticTokens": {
"requests": {
"range": true,
"full": { "delta": true }
},
"tokenTypes": [ "namespace", "type", "class", "enum", "interface", "struct", "typeParameter", "parameter", "variable", "property", "enumMember", "event", "function", "method", "macro", "keyword", "modifier", "comment", "string", "number", "regexp", "operator", "cppMacro", "cppEnumerator", "cppGlobalVariable", "cppLocalVariable", "cppParameter", "cppType", "cppRefType", "cppValueType", "cppFunction", "cppMemberFunction", "cppMemberField", "cppStaticMemberFunction", "cppStaticMemberField", "cppProperty", "cppEvent", "cppClassTemplate", "cppGenericType", "cppFunctionTemplate", "cppNamespace", "cppLabel", "cppUserDefinedLiteralRaw", "cppUserDefinedLiteralNumber", "cppUserDefinedLiteralString", "cppOperator", "cppMemberOperator", "cppNewDelete" ],
"tokenModifiers": [ "declaration", "definition", "readonly", "static", "deprecated", "abstract", "async", "modification", "documentation", "defaultLibrary" ],
"formats": [ "relative" ],
"dynamicRegistration": true
},
"inlayHint": { "dynamicRegistration": true }
}
}
}
As far I understand language server should ignore unknown attributes, but I didn't dig to details.
Could you please help me to investigate?
Gist
No response
Workarounds
No response
References
No response
Help Wanted
- I'm interested in contributing a fix myself
Community Note
- Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
- Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
- If you are interested in working on this issue or have submitted a pull request, please leave a comment