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

bug: generic structs where generic is bounded to some trait fails with cycle if implementations specified #3133

Closed
taco-paco opened this issue May 12, 2023 · 1 comment
Labels
bug Something isn't working

Comments

@taco-paco
Copy link
Contributor

Bug Report

Cairo version:

1.0.0-rc0
Current behavior:

Compiler panics.

Expected behavior:

Compiles successfully.

Steps to reproduce:

Try to compile code below.

Related code:

trait Trait<T> {}

struct B<T, G, impl GTriat: Trait<G>> {
    t: T,
    g: G,
}

impl BCopy<T, G, impl GTriat: Trait<G>, impl TCopy: Copy<T>, impl GCopy: Copy<G>> of Copy<B<T, G, GTriat, TCopy, Gopy>>;

Other information:

Related issue #2995

Different Stacktrace:

thread 'main' panicked at 'Internal error, cycle detected:

DatabaseKeyIndex { group_index: 4, query_index: 74, key_index: 320 }
DatabaseKeyIndex { group_index: 4, query_index: 79, key_index: 382 }
DatabaseKeyIndex { group_index: 4, query_index: 133, key_index: 100 }
DatabaseKeyIndex { group_index: 4, query_index: 76, key_index: 320 }
', /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:490:48
stack backtrace:
   0: rust_begin_unwind
             at /rustc/9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0/library/std/src/panicking.rs:575:5
   1: core::panicking::panic_fmt
             at /rustc/9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0/library/core/src/panicking.rs:64:14
   2: core::panicking::panic_display
             at /rustc/9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0/library/core/src/panicking.rs:147:5
   3: salsa::QueryTable<Q>::get::{{closure}}
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:490:48
   4: core::result::Result<T,E>::unwrap_or_else
             at /rustc/9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0/library/core/src/result.rs:1503:23
   5: salsa::QueryTable<Q>::get
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:490:9
   6: <DB as cairo_lang_semantic::db::SemanticGroup>::impl_def_generic_params::__shim
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
   7: <DB as cairo_lang_semantic::db::SemanticGroup>::impl_def_generic_params
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
   8: cairo_lang_semantic::items::generics::generic_item_generic_params
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/items/generics.rs:151:36
   9: cairo_lang_semantic::items::generics::generic_param_semantic
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/items/generics.rs:137:26
  10: <cairo_lang_semantic::db::GenericParamSemanticQuery as salsa::plumbing::QueryFunction>::execute
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:732:21
  11: salsa::derived::slot::Slot<Q,MP>::read_upgrade::{{closure}}
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:218:13
  12: salsa::runtime::Runtime::execute_query_implementation
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/runtime.rs:330:21
  13: salsa::derived::slot::Slot<Q,MP>::read_upgrade
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:215:26
  14: salsa::derived::slot::Slot<Q,MP>::read
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:148:9
  15: <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived.rs:170:13
  16: salsa::QueryTable<Q>::try_get
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:494:9
  17: salsa::QueryTable<Q>::get
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:490:9
  18: <DB as cairo_lang_semantic::db::SemanticGroup>::generic_param_semantic::__shim
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
  19: <DB as cairo_lang_semantic::db::SemanticGroup>::generic_param_semantic
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
  20: cairo_lang_semantic::items::imp::impl_concrete_trait
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/items/imp.rs:220:34
  21: <cairo_lang_semantic::db::ImplConcreteTraitQuery as salsa::plumbing::QueryFunction>::execute
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:383:21
  22: salsa::derived::slot::Slot<Q,MP>::read_upgrade::{{closure}}
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:218:13
  23: salsa::runtime::Runtime::execute_query_implementation
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/runtime.rs:330:21
  24: salsa::derived::slot::Slot<Q,MP>::read_upgrade
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:215:26
  25: salsa::derived::slot::Slot<Q,MP>::read
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:148:9
  26: <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived.rs:170:13
  27: salsa::QueryTable<Q>::try_get
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:494:9
  28: salsa::QueryTable<Q>::get
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:490:9
  29: <DB as cairo_lang_semantic::db::SemanticGroup>::impl_concrete_trait::__shim
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
  30: <DB as cairo_lang_semantic::db::SemanticGroup>::impl_concrete_trait
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
  31: cairo_lang_semantic::resolve::Resolver::resolve_generic_arg
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:846:47
  32: cairo_lang_semantic::resolve::Resolver::resolve_generic_args
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:755:31
  33: cairo_lang_semantic::resolve::Resolver::specialize_type
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:707:13
  34: cairo_lang_semantic::resolve::Resolver::specialize_generic_module_item
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:481:44
  35: cairo_lang_semantic::resolve::Resolver::resolve_next_concrete
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:370:20
  36: cairo_lang_semantic::resolve::Resolver::resolve_concrete_path
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:196:20
  37: cairo_lang_semantic::types::maybe_resolve_type
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/types.rs:288:19
  38: cairo_lang_semantic::types::resolve_type
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/types.rs:276:5
  39: cairo_lang_semantic::resolve::Resolver::resolve_generic_arg
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:801:26
  40: cairo_lang_semantic::resolve::Resolver::resolve_generic_args
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:755:31
  41: cairo_lang_semantic::resolve::Resolver::specialize_trait
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:645:13
  42: cairo_lang_semantic::resolve::Resolver::specialize_generic_module_item
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:525:45
  43: cairo_lang_semantic::resolve::Resolver::resolve_next_concrete
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:370:20
  44: cairo_lang_semantic::resolve::Resolver::resolve_concrete_path
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/resolve/mod.rs:196:20
  45: cairo_lang_semantic::items::imp::priv_impl_declaration_data_inner
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/items/imp.rs:280:9
  46: cairo_lang_semantic::items::imp::priv_impl_declaration_data
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/items/imp.rs:241:5
  47: <cairo_lang_semantic::db::PrivImplDeclarationDataQuery as salsa::plumbing::QueryFunction>::execute
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:361:21
  48: salsa::derived::slot::Slot<Q,MP>::read_upgrade::{{closure}}
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:218:13
  49: salsa::runtime::Runtime::execute_query_implementation
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/runtime.rs:330:21
  50: salsa::derived::slot::Slot<Q,MP>::read_upgrade
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:215:26
  51: salsa::derived::slot::Slot<Q,MP>::read
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:148:9
  52: <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived.rs:170:13
  53: salsa::QueryTable<Q>::try_get
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:494:9
  54: salsa::QueryTable<Q>::get
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:490:9
  55: <DB as cairo_lang_semantic::db::SemanticGroup>::priv_impl_declaration_data::__shim
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
  56: <DB as cairo_lang_semantic::db::SemanticGroup>::priv_impl_declaration_data
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
  57: cairo_lang_semantic::items::imp::impl_semantic_declaration_diagnostics
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/items/imp.rs:178:5
  58: <cairo_lang_semantic::db::ImplSemanticDeclarationDiagnosticsQuery as salsa::plumbing::QueryFunction>::execute
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:368:21
  59: salsa::derived::slot::Slot<Q,MP>::read_upgrade::{{closure}}
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:218:13
  60: salsa::runtime::Runtime::execute_query_implementation
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/runtime.rs:330:21
  61: salsa::derived::slot::Slot<Q,MP>::read_upgrade
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:215:26
  62: salsa::derived::slot::Slot<Q,MP>::read
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:148:9
  63: <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived.rs:170:13
  64: salsa::QueryTable<Q>::try_get
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:494:9
  65: salsa::QueryTable<Q>::get
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:490:9
  66: <DB as cairo_lang_semantic::db::SemanticGroup>::impl_semantic_declaration_diagnostics::__shim
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
  67: <DB as cairo_lang_semantic::db::SemanticGroup>::impl_semantic_declaration_diagnostics
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
  68: cairo_lang_semantic::db::module_semantic_diagnostics
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:881:36
  69: <cairo_lang_semantic::db::ModuleSemanticDiagnosticsQuery as salsa::plumbing::QueryFunction>::execute
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:779:8
  70: salsa::derived::slot::Slot<Q,MP>::read_upgrade::{{closure}}
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:218:13
  71: salsa::runtime::Runtime::execute_query_implementation
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/runtime.rs:330:21
  72: salsa::derived::slot::Slot<Q,MP>::read_upgrade
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:215:26
  73: salsa::derived::slot::Slot<Q,MP>::read
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived/slot.rs:148:9
  74: <salsa::derived::DerivedStorage<Q,MP> as salsa::plumbing::QueryStorageOps<Q>>::try_fetch
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/derived.rs:170:13
  75: salsa::QueryTable<Q>::try_get
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:494:9
  76: salsa::QueryTable<Q>::get
             at /Users/edwin/.cargo/registry/src/github.ghproxy.top-1ecc6299db9ec823/salsa-0.16.1/src/lib.rs:490:9
  77: <DB as cairo_lang_semantic::db::SemanticGroup>::module_semantic_diagnostics::__shim
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
  78: <DB as cairo_lang_semantic::db::SemanticGroup>::module_semantic_diagnostics
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-semantic/src/db.rs:51:1
  79: cairo_lang_compiler::diagnostics::DiagnosticsReporter::check
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-compiler/src/diagnostics.rs:113:35
  80: cairo_run::main
             at /Users/edwin/Documents/projects/cairo/cairo/crates/cairo-lang-runner/src/cli.rs:43:8
  81: core::ops::function::FnOnce::call_once
             at /rustc/9eb3afe9ebe9c7d2b84b71002d44f4a0edac95e0/library/core/src/ops/function.rs:250:5
@taco-paco taco-paco added the bug Something isn't working label May 12, 2023
@orizi
Copy link
Collaborator

orizi commented Aug 16, 2023

Getting a proper diagnostic in main now.

@orizi orizi closed this as completed Aug 16, 2023
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

No branches or pull requests

2 participants