Skip to content

Suggestion broken with latest ElixirSense #54

@moissela

Description

@moissela

Describe the bug
Spark autocomplete suggestion is broken with the latest ElixirSense release.

Expected behavior
Inside a resource action, when I type change all worked fine but when I go on with change m expecting manage_relationship suggestion, I've got this error inside the ElixirLS output tab:

** (UndefinedFunctionError) function ElixirSense.Providers.Suggestion.Complete.Env.__struct__/0 is undefined (module ElixirSense.Providers.Suggestion.Complete.Env is not available)
    ElixirSense.Providers.Suggestion.Complete.Env.__struct__()
    (spark 1.1.22) lib/spark/elixir_sense/entity.ex:30: Spark.ElixirSense.Entity.find_spark_behaviour_impls/4
    (spark 1.1.22) lib/spark/elixir_sense/plugin.ex:114: Spark.ElixirSense.Plugin.get_suggestions/4
    (elixir_sense 2.0.0) lib/elixir_sense/providers/suggestion/generic_reducer.ex:41: ElixirSense.Providers.Suggestion.GenericReducer.reduce/6
    (elixir 1.15.4) lib/enum.ex:4830: Enumerable.List.reduce/3
    (elixir 1.15.4) lib/enum.ex:2564: Enum.reduce_while/3
    (elixir_sense 2.0.0) lib/elixir_sense/providers/suggestion.ex:137: ElixirSense.Providers.Suggestion.find/6
    (language_server 0.16.0) lib/language_server/providers/completion.ex:159: ElixirLS.LanguageServer.Providers.Completion.completion/4

First try to fix, here, changing mix.exs to use that commit of my fork's branch and restarting vscode, in the same conditions I get a new error:

** (UndefinedFunctionError) function ElixirSense.Providers.Suggestion.Complete.complete/2 is undefined or private
    (elixir_sense 2.0.0) ElixirSense.Providers.Suggestion.Complete.complete("Ash.Resource.Change.Builtins.m", %ElixirSense.Core.State.Env{imports: [], requires: [], aliases: [], module: nil, module_variants: [], protocol: nil, protocol_variants: nil, vars: [], attributes: [], behaviours: [], scope: nil, scope_id: nil})
    (spark 1.1.23) lib/spark/elixir_sense/entity.ex:29: Spark.ElixirSense.Entity.find_spark_behaviour_impls/4
    (spark 1.1.23) lib/spark/elixir_sense/plugin.ex:114: Spark.ElixirSense.Plugin.get_suggestions/4
    (elixir_sense 2.0.0) lib/elixir_sense/providers/suggestion/generic_reducer.ex:41: ElixirSense.Providers.Suggestion.GenericReducer.reduce/6
    (elixir 1.15.4) lib/enum.ex:4830: Enumerable.List.reduce/3
    (elixir 1.15.4) lib/enum.ex:2564: Enum.reduce_while/3
    (elixir_sense 2.0.0) lib/elixir_sense/providers/suggestion.ex:137: ElixirSense.Providers.Suggestion.find/6
    (language_server 0.16.0) lib/language_server/providers/completion.ex:159: ElixirLS.LanguageServer.Providers.Completion.completion/4

Second round seems to work fine but I'm not sure about passing "fake" values as third and fourth arguments (metadata and cursor_position) of the ElixirSense.Providers.Suggestion.Complete.complete/5.

Runtime

  • Elixir version: 1.15.4
  • Erlang version: 26.0.2
  • OS: macOS Ventura 13.5
  • Spark version: latest
  • ElixirSense version: latest

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions