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

Importing Custom Ability Panics Compile #6702

Open
benplotke opened this issue May 2, 2024 · 0 comments
Open

Importing Custom Ability Panics Compile #6702

benplotke opened this issue May 2, 2024 · 0 comments
Labels
abilities bug Something isn't working loading Loading modules from files

Comments

@benplotke
Copy link

Steps to Reproduce

  1. Create SortAbility.roc with contents:
module [
    Comparison,
    Sort,
]

Comparison : [LessThan, Equal, GreaterThan]
Sort implements
    compare : a, a -> Comparison where a implements Sort
  1. In the same directory, create ImportAbility.roc with contents:
module [
]

import SortAbility
  1. run roc test AbilityImport.roc

Expected Results

Nothing

Actual

 ~/docs/code/roc/OrderedCollections $ ~/roc/roc_ben-build-2024-05-02-798dd77/roc test AbilityImport.roc
An internal compiler expectation was broken.
This is definitely a compiler bug.
Please file an issue here: https://github.com/roc-lang/roc/issues/new/choose
thread '<unnamed>' panicked at crates/compiler/load_internal/src/file.rs:4535:29:
Import ability member `SortAbility.compare` not available
stack backtrace:
   0: rust_begin_unwind
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:595:5
   1: core::panicking::panic_fmt
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/panicking.rs:67:14
   2: import_variable_for_symbol
             at /home/ben/roc/roc-src/crates/compiler/load_internal/src/file.rs:4535:29
   3: roc_load_internal::file::add_imports::{{closure}}
             at /home/ben/roc/roc-src/crates/compiler/load_internal/src/file.rs:4429:17
   4: roc_can::abilities::IAbilitiesStore<roc_can::abilities::Pending>::resolve_for_module::{{closure}}
             at /home/ben/roc/roc-src/crates/compiler/can/src/abilities.rs:621:44
   5: core::iter::adapters::map::map_fold::{{closure}}
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/iter/adapters/map.rs:84:28
   6: core::iter::traits::iterator::Iterator::fold
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/iter/traits/iterator.rs:2639:21
   7: fold<(roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Resolved>), std::collections::hash::map::IntoIter<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Pending>>, roc_can::abilities::{impl#7}::resolve_for_module::{closure_env#0}<roc_load_internal::file::add_imports::Ctx, roc_load_internal::file::add_imports::{closure_env#0}, roc_load_internal::file::add_imports::{closure_env#1}>, (), core::iter::traits::iterator::Iterator::for_each::call::{closure_env#0}<(roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Resolved>), hashbrown::map::{impl#95}::extend::{closure_env#0}<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Resolved>, core::hash::BuildHasherDefault<wyhash::traits::WyHash>, alloc::alloc::Global, core::iter::adapters::map::Map<std::collections::hash::map::IntoIter<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Pending>>, roc_can::abilities::{impl#7}::resolve_for_module::{closure_env#0}<roc_load_internal::file::add_imports::Ctx, roc_load_internal::file::add_imports::{closure_env#0}, roc_load_internal::file::add_imports::{closure_env#1}>>>>>
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/iter/adapters/map.rs:124:9
   8: for_each<core::iter::adapters::map::Map<std::collections::hash::map::IntoIter<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Pending>>, roc_can::abilities::{impl#7}::resolve_for_module::{closure_env#0}<roc_load_internal::file::add_imports::Ctx, roc_load_internal::file::add_imports::{closure_env#0}, roc_load_internal::file::add_imports::{closure_env#1}>>, hashbrown::map::{impl#95}::extend::{closure_env#0}<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Resolved>, core::hash::BuildHasherDefault<wyhash::traits::WyHash>, alloc::alloc::Global, core::iter::adapters::map::Map<std::collections::hash::map::IntoIter<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Pending>>, roc_can::abilities::{impl#7}::resolve_for_module::{closure_env#0}<roc_load_internal::file::add_imports::Ctx, roc_load_internal::file::add_imports::{closure_env#0}, roc_load_internal::file::add_imports::{closure_env#1}>>>>
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/iter/traits/iterator.rs:857:9
   9: extend<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Resolved>, core::hash::BuildHasherDefault<wyhash::traits::WyHash>, alloc::alloc::Global, core::iter::adapters::map::Map<std::collections::hash::map::IntoIter<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Pending>>, roc_can::abilities::{impl#7}::resolve_for_module::{closure_env#0}<roc_load_internal::file::add_imports::Ctx, roc_load_internal::file::add_imports::{closure_env#0}, roc_load_internal::file::add_imports::{closure_env#1}>>>
             at /cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.14.0/src/map.rs:6455:9
  10: extend<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Resolved>, core::hash::BuildHasherDefault<wyhash::traits::WyHash>, core::iter::adapters::map::Map<std::collections::hash::map::IntoIter<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Pending>>, roc_can::abilities::{impl#7}::resolve_for_module::{closure_env#0}<roc_load_internal::file::add_imports::Ctx, roc_load_internal::file::add_imports::{closure_env#0}, roc_load_internal::file::add_imports::{closure_env#1}>>>
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/collections/hash/map.rs:3038:9
  11: from_iter<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Resolved>, core::hash::BuildHasherDefault<wyhash::traits::WyHash>, core::iter::adapters::map::Map<std::collections::hash::map::IntoIter<roc_module::symbol::Symbol, roc_can::abilities::AbilityMemberData<roc_can::abilities::Pending>>, roc_can::abilities::{impl#7}::resolve_for_module::{closure_env#0}<roc_load_internal::file::add_imports::Ctx, roc_load_internal::file::add_imports::{closure_env#0}, roc_load_internal::file::add_imports::{closure_env#1}>>>
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/collections/hash/map.rs:3023:13
  12: core::iter::traits::iterator::Iterator::collect
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/iter/traits/iterator.rs:2053:9
  13: roc_can::abilities::IAbilitiesStore<roc_can::abilities::Pending>::resolve_for_module
             at /home/ben/roc/roc-src/crates/compiler/can/src/abilities.rs:605:31
  14: add_imports
             at /home/ben/roc/roc-src/crates/compiler/load_internal/src/file.rs:4417:27
  15: run_solve_solve
             at /home/ben/roc/roc-src/crates/compiler/load_internal/src/file.rs:4604:47
  16: roc_load_internal::file::run_solve
             at /home/ben/roc/roc-src/crates/compiler/load_internal/src/file.rs:4765:13
  17: roc_load_internal::file::run_task
             at /home/ben/roc/roc-src/crates/compiler/load_internal/src/file.rs:6144:17
  18: worker_task
             at /home/ben/roc/roc-src/crates/compiler/load_internal/src/file.rs:2091:34
  19: roc_load_internal::file::load_multi_threaded::{{closure}}::{{closure}}
             at /home/ben/roc/roc-src/crates/compiler/load_internal/src/file.rs:1831:25
  20: crossbeam_utils::thread::ScopedThreadBuilder::spawn::{{closure}}
             at /home/ben/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crossbeam-utils-0.8.16/src/thread.rs:440:31
  21: core::ops::function::FnOnce::call_once{{vtable.shim}}
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/ops/function.rs:250:5
  22: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
             at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/alloc/src/boxed.rs:2007:9
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
@agu-z agu-z added bug Something isn't working loading Loading modules from files abilities labels May 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
abilities bug Something isn't working loading Loading modules from files
Projects
None yet
Development

No branches or pull requests

2 participants