Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

@param name puppet strings tag crashes language server #320

Closed
h4l opened this issue Dec 31, 2021 · 0 comments · Fixed by #321
Closed

@param name puppet strings tag crashes language server #320

h4l opened this issue Dec 31, 2021 · 0 comments · Fixed by #321
Labels
bug Something isn't working

Comments

@h4l
Copy link
Contributor

h4l commented Dec 31, 2021

Describe the Bug

(I'm using the language server via the Puppet vscode extension, but I assume I should report this here as it appears to be a language server issue.)

Including the following in a .pp file causes the language server to crash when starting:

# @param name foo
define example() {
}

I get the following traceback in the vscode extension's log file:

/Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_strings_helper.rb:147:in `block (3 levels) in populate_classes_from_yard_registry!': undefined method `join' for nil:NilClass (NoMethodError)
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_strings_helper.rb:143:in `each'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_strings_helper.rb:143:in `block (2 levels) in populate_classes_from_yard_registry!'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_strings_helper.rb:128:in `each'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_strings_helper.rb:128:in `block in populate_classes_from_yard_registry!'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_strings_helper.rb:127:in `each'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_strings_helper.rb:127:in `populate_classes_from_yard_registry!'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_strings_helper.rb:102:in `populate_from_yard_registry!'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_strings_helper.rb:74:in `file_documentation'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_strings_helper.rb:10:in `file_documentation'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_helper.rb:93:in `block in retrieve_via_puppet_strings'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_helper.rb:92:in `each'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet-languageserver-sidecar/puppet_helper.rb:92:in `retrieve_via_puppet_strings'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet_languageserver_sidecar.rb:303:in `execute'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/lib/puppet_languageserver_sidecar.rb:360:in `execute_and_output'
        from /Users/hal/.vscode/extensions/puppet.puppet-vscode-1.4.0/vendor/languageserver/puppet-languageserver-sidecar:14:in `<main>'

Expected Behavior

The language server shouldn't crash.

Steps to Reproduce

I included the above snippet in a vscode project with the Puppet extension enabled.

Environment

  • Puppet vscode extension version 1.4.0
  • vscode reports it's using Puppet version 7.12.0

Additional Context

N/A

@h4l h4l added the bug Something isn't working label Dec 31, 2021
h4l added a commit to h4l/puppet-editor-services that referenced this issue Jan 4, 2022
Classes and defined types with @param tags for parameters that were not
present were causing the language server to crash due to
populate_classes_from_yard_registry assuming param tags always had a
:types array present. Param tags without types are now ignored. Note
that class/defined type parameters without a specified type
automatically have the "Any" type in their :types array, so they're not
excluded by this change.
h4l added a commit to h4l/puppet-editor-services that referenced this issue Jan 4, 2022
Classes and defined types with docstring @param tags for parameters are
not actually present in the parameter list cause the language server to
crash, due to populate_classes_from_yard_registry assuming param tags
always have a :types array present.

@param tags without types are now ignored. Note that class/defined type
parameters without a specified type automatically have the "Any" type
in their :types array, so they're not excluded by this change.
h4l added a commit to h4l/puppet-editor-services that referenced this issue Jan 4, 2022
Classes and defined types with docstring @param tags for parameters
that are not actually present in the parameter list cause the language
server to crash, due to populate_classes_from_yard_registry assuming
param tags always have a :types array present.

@param tags without types are now ignored. Note that class/defined type
parameters without a specified type automatically have the "Any" type
in their :types array, so they're not excluded by this change.
michaeltlombardi added a commit that referenced this issue Jan 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant