Shopify / theme-check

The Ultimate Shopify Theme Linter
Other
333 stars 96 forks source link

[Intelligent code completion] Do not log an error with ranges #684

Closed Poitrin closed 1 year ago

Poitrin commented 1 year ago

Describe the bug / Actual ICC crashes when it tries to iterate over a range.

{%- for i in (1..4) -%}
  {%- if blo⬜️

13-44-ritgq-c7imj

Inspired by Dawn.

Expected ICC should not crash, or even suggest filters corresponding to the input.

Stack trace

[completion error] error: undefined method `name' for 1..4:Range
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder/scope.rb:48:in `iteration_tag_as_potential_lookup'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder/scope.rb:26:in `<<'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder/node_handler.rb:56:in `on_block_body'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder/scope_visitor.rb:28:in `visit'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder/scope_visitor.rb:32:in `block in visit'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder/scope_visitor.rb:32:in `each'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder/scope_visitor.rb:32:in `visit'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder/scope_visitor.rb:32:in `block in visit'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder/scope_visitor.rb:32:in `each'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder/scope_visitor.rb:32:in `visit'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder/scope_visitor.rb:19:in `visit_template'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder.rb:37:in `visit_template'
/lib/theme_check/language_server/variable_lookup_finder/assignments_finder.rb:20:in `find!'
/lib/theme_check/language_server/variable_lookup_finder.rb:52:in `find_assignments'
/lib/theme_check/language_server/variable_lookup_finder.rb:37:in `potential_lookup'
/lib/theme_check/language_server/variable_lookup_finder.rb:23:in `lookup'
/lib/theme_check/language_server/completion_providers/object_completion_provider.rb:10:in `completions'
/lib/theme_check/language_server/completion_engine.rb:16:in `block in completions'
/lib/theme_check/language_server/completion_engine.rb:16:in `each'
/lib/theme_check/language_server/completion_engine.rb:16:in `flat_map'
/lib/theme_check/language_server/completion_engine.rb:16:in `completions'
/lib/theme_check/language_server/handler.rb:145:in `on_text_document_completion'
/lib/theme_check/language_server/server.rb:138:in `handle_message'
/lib/theme_check/language_server/server.rb:109:in `block in handle_messages'
/lib/theme_check/language_server/server.rb:105:in `loop'
/lib/theme_check/language_server/server.rb:105:in `handle_messages'
/lib/theme_check/language_server/server.rb:99:in `block (2 levels) in start_handler_threads'

Debugging information

Additional context