veryl-lang / veryl

Veryl: A Modern Hardware Description Language
Other
478 stars 22 forks source link

Panic on resolving generics arguments #759

Closed taichi-ishitani closed 3 months ago

taichi-ishitani commented 3 months ago

Veryl reports paninc error when building following veryl code.

package PackageA {
    function FuncA::<W> -> logic<W> {
        var a: logic<W>;
        a = 0;
        return a;
    }
}

module Sub::<W> {
  let _a: logic<W> = PackageA::FuncA::<W>();
}

module Top {
  inst u_sub_1: Sub::<1>();
  inst u_sub_2: Sub::<2>();
}

Back trace

taichi@LAPTOP-NFQ573GE:test
$ veryl --version
veryl 0.10.1
taichi@LAPTOP-NFQ573GE:test
$ RUST_BACKTRACE=full veryl build
[INFO ]   Processing file (/home/taichi/workspace/temp/veryl/test/test.veryl)
thread 'main' panicked at /home/taichi/.cargo/registry/src/index.crates.io-6f17d22bba15001f/veryl-analyzer-0.10.1/src/symbol_path.rs:118:56:
called `Option::unwrap()` on a `None` value
stack backtrace:
   0:     0x55d5db9e79f6 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h9c4bd387f9f3f544
   1:     0x55d5dba14de0 - core::fmt::write::h938c332fdab924eb
   2:     0x55d5db9e3def - std::io::Write::write_fmt::h4a694b02e44e6363
   3:     0x55d5db9e77d4 - std::sys_common::backtrace::print::ha888e6736b0bc71f
   4:     0x55d5db9e8ea7 - std::panicking::default_hook::{{closure}}::he19a7f79f7beab5e
   5:     0x55d5db9e8c09 - std::panicking::default_hook::h67efe04e9a5d446e
   6:     0x55d5db9e9338 - std::panicking::rust_panic_with_hook::h49021cdbc4b22349
   7:     0x55d5db9e91d9 - std::panicking::begin_panic_handler::{{closure}}::hfbf601f3d8c62d13
   8:     0x55d5db9e7ef6 - std::sys_common::backtrace::__rust_end_short_backtrace::h98dd020b6e913806
   9:     0x55d5db9e8f64 - rust_begin_unwind
  10:     0x55d5db0afb45 - core::panicking::panic_fmt::h0d3f1893e38be419
  11:     0x55d5db0afc03 - core::panicking::panic::h59297120e85ea178
  12:     0x55d5db0afa96 - core::option::unwrap_failed::h630ca121a67dc3e4
  13:     0x55d5db48050d - veryl_analyzer::symbol_table::resolve::ha8ae6e95b49320ba
  14:     0x55d5db4aca44 - veryl_analyzer::symbol_path::GenericSymbolPath::is_generic_reference::h35f3c15634025bc7
  15:     0x55d5db4a22f3 - veryl_analyzer::handlers::create_reference::CreateReference::generic_symbol_path::hd43be72611093f00
  16:     0x55d5db4a2a84 - veryl_analyzer::handlers::create_reference::CreateReference::generic_symbol_path::hd43be72611093f00
  17:     0x55d5db4a36e4 - <veryl_analyzer::handlers::create_reference::CreateReference as veryl_parser::generated::veryl_grammar_trait::VerylGrammarTrait>::scoped_identifier::h657d1ff2e7c50958
  18:     0x55d5db0c9d76 - veryl_parser::veryl_walker::VerylWalker::scoped_identifier::h1cbc2d5609f3c6db
  19:     0x55d5db0bfc87 - veryl_parser::veryl_walker::VerylWalker::module_group::hb12b7f15c7f7150c
  20:     0x55d5db0c75ec - veryl_parser::veryl_walker::VerylWalker::description_item::h2840c93810309b63
  21:     0x55d5db0c8eda - veryl_parser::veryl_walker::VerylWalker::description_group::h412a5b92a11c1261
  22:     0x55d5db0e1efc - veryl_analyzer::analyzer::Analyzer::analyze_pass2::h08b8b97816126ba0
  23:     0x55d5db16a210 - veryl::cmd_build::CmdBuild::exec::h089a4583feb0b0a1
  24:     0x55d5db1e6202 - veryl::main::h13625467ed46e3fa
  25:     0x55d5db1c9886 - std::sys_common::backtrace::__rust_begin_short_backtrace::hd0b28abe428a997e
  26:     0x55d5db1d2d02 - std::rt::lang_start::{{closure}}::h8492d6a75efcc3b4
  27:     0x55d5db9dc521 - std::rt::lang_start_internal::hc3f700406209db2c
  28:     0x55d5db1f3f95 - main
  29:     0x7f6a81dafd90 - <unknown>
  30:     0x7f6a81dafe40 - __libc_start_main
  31:     0x55d5db0b0395 - _start
  32:                0x0 - <unknown>