Skip to content

[Bug] Entry point functions cannot be generic #29303

@mohammadfawaz

Description

@mohammadfawaz

🐛 Bug Report

The following fails with a panic. It should fail gracefully with an error instead:

program simple.aleo {
    fn store::[N: u32]() -> u32 {
        return N;
    }
}

error:

leo build
⚠️ No network specified, defaulting to 'testnet'.
⚠️ No endpoint specified, defaulting to 'https://api.explorer.provable.com/v1'.

       Leo 🔨 Compiling 'bad_gen.aleo'
thread `main` panicked at crates/passes/src/code_generation/expression.rs:107:46:
guaranteed by pass pipeline.
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /Users/mohammadfawaz/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/backtrace-0.3.76/src/backtrace/libunwind.rs:117:9
      backtrace::backtrace::trace_unsynchronized
             at /Users/mohammadfawaz/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/backtrace-0.3.76/src/backtrace/mod.rs:66:14
      backtrace::backtrace::trace
             at /Users/mohammadfawaz/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/backtrace-0.3.76/src/backtrace/mod.rs:53:14
   1: backtrace::capture::Backtrace::create
             at /Users/mohammadfawaz/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/backtrace-0.3.76/src/capture.rs:294:9
   2: backtrace::capture::Backtrace::new
             at /Users/mohammadfawaz/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/backtrace-0.3.76/src/capture.rs:259:22
   3: leo::set_panic_hook::{{closure}}
             at /Users/mohammadfawaz/Desktop/leo/crates/leo/src/cli/main.rs:26:50
   4: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call
             at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/alloc/src/boxed.rs:2220:9
      std::panicking::panic_with_hook
             at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/std/src/panicking.rs:833:13
   5: std::panicking::panic_handler::{{closure}}
             at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/std/src/panicking.rs:698:13
   6: std::sys::backtrace::__rust_end_short_backtrace
             at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/std/src/sys/backtrace.rs:182:18
   7: __rustc::rust_begin_unwind
             at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/std/src/panicking.rs:689:5
   8: core::panicking::panic_fmt
             at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/panicking.rs:80:14
   9: core::panicking::panic_display
             at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/panicking.rs:259:5
      core::option::expect_failed
             at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/option.rs:2208:5
  10: core::option::Option<T>::expect
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/option.rs:971:21
      leo_passes::code_generation::expression::<impl leo_passes::code_generation::visitor::CodeGeneratingVisitor>::visit_path
             at /Users/mohammadfawaz/Desktop/leo/crates/passes/src/code_generation/expression.rs:107:46
  11: leo_passes::code_generation::expression::<impl leo_passes::code_generation::visitor::CodeGeneratingVisitor>::visit_expression
             at /Users/mohammadfawaz/Desktop/leo/crates/passes/src/code_generation/expression.rs:78:50
  12: leo_passes::code_generation::statement::<impl leo_passes::code_generation::visitor::CodeGeneratingVisitor>::visit_return
             at /Users/mohammadfawaz/Desktop/leo/crates/passes/src/code_generation/statement.rs:122:51
  13: leo_passes::code_generation::statement::<impl leo_passes::code_generation::visitor::CodeGeneratingVisitor>::visit_block::{{closure}}
             at /Users/mohammadfawaz/Desktop/leo/crates/passes/src/code_generation/statement.rs:267:54
      core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:310:21
      core::option::Option<T>::map
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/option.rs:1165:29
      <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/adapters/map.rs:107:26
      <core::iter::adapters::fuse::Fuse<I> as core::iter::adapters::fuse::FuseImpl<I>>::next
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/adapters/fuse.rs:381:29
      <core::iter::adapters::fuse::Fuse<I> as core::iter::traits::iterator::Iterator>::next
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/adapters/fuse.rs:50:9
      <core::iter::adapters::flatten::FlattenCompat<I,U> as core::iter::traits::iterator::Iterator>::next
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/adapters/flatten.rs:523:29
      <core::iter::adapters::flatten::FlatMap<I,U,F> as core::iter::traits::iterator::Iterator>::next
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/adapters/flatten.rs:64:20
  14: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/vec/spec_from_iter_nested.rs:24:41
      <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/vec/spec_from_iter.rs:33:9
  15: <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:3801:9
      core::iter::traits::iterator::Iterator::collect
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2035:9
      leo_passes::code_generation::statement::<impl leo_passes::code_generation::visitor::CodeGeneratingVisitor>::visit_block
             at /Users/mohammadfawaz/Desktop/leo/crates/passes/src/code_generation/statement.rs:267:77
      leo_passes::code_generation::program::<impl leo_passes::code_generation::visitor::CodeGeneratingVisitor>::visit_function_with
             at /Users/mohammadfawaz/Desktop/leo/crates/passes/src/code_generation/program.rs:298:35
  16: leo_passes::code_generation::program::<impl leo_passes::code_generation::visitor::CodeGeneratingVisitor>::visit_program::{{closure}}
             at /Users/mohammadfawaz/Desktop/leo/crates/passes/src/code_generation/program.rs:95:50
      core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
             at /Users/mohammadfawaz/.rustup/toolchains/1.94.1-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:298:21
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working🧱 Core CompilerAnything related to the core compiler including parsing, analysis, transforms, codegen, etc.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions