Skip to content

Referencing a footnote panics with HTML export #7100

@cady-b

Description

@cady-b

Description

Minimal reproducible example (the footnote's body doesn't seem to matter):

#footnote[]<a>
@a

given to typst compile --features html -f html mre.typ outputs:

thread 'main' panicked at crates/typst-library/src/model/footnote.rs:314:45:
called `Option::unwrap()` on a `None` value

let body = self.note.body_content().unwrap().clone();

backtrace
thread 'main' panicked at crates/typst-library/src/model/footnote.rs:314:45:
called `Option::unwrap()` on a `None` value
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/ace633090349fc5075b5b0d56294de985e7d1191/library/std/src/panicking.rs:697:5
   1: core::panicking::panic_fmt
             at /rustc/ace633090349fc5075b5b0d56294de985e7d1191/library/core/src/panicking.rs:75:14
   2: core::panicking::panic
             at /rustc/ace633090349fc5075b5b0d56294de985e7d1191/library/core/src/panicking.rs:145:5
   3: core::option::unwrap_failed
             at /rustc/ace633090349fc5075b5b0d56294de985e7d1191/library/core/src/option.rs:2130:5
   4: core::option::Option<T>::unwrap
             at /home/cady/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:1009:21
   5: typst_library::model::footnote::<impl typst_library::foundations::content::packed::Packed<typst_library::model::footnote::FootnoteEntry>>::realize
             at /home/cady/pali/git/typst/crates/typst-library/src/model/footnote.rs:314:45
   6: typst_html::rules::FOOTNOTE_ENTRY_RULE::{{closure}}
             at /home/cady/pali/git/typst/crates/typst-html/src/rules.rs:383:31
   7: core::ops::function::FnOnce::call_once
             at /home/cady/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:253:5
   8: typst_library::foundations::styles::rule::NativeShowRule::apply
             at /home/cady/pali/git/typst/crates/typst-library/src/foundations/styles.rs:1107:22
   9: typst_realize::visit_show_rules
             at /home/cady/pali/git/typst/crates/typst-realize/src/lib.rs:380:22
  10: typst_realize::visit
             at /home/cady/pali/git/typst/crates/typst-realize/src/lib.rs:249:8
  11: typst_realize::realize
             at /home/cady/pali/git/typst/crates/typst-realize/src/lib.rs:68:5
  12: typst_html::fragment::realize_fragment
             at /home/cady/pali/git/typst/crates/typst-html/src/fragment.rs:119:5
  13: typst_html::fragment::html_inline_fragment
             at /home/cady/pali/git/typst/crates/typst-html/src/fragment.rs:98:20
  14: typst_html::convert::handle_html_elem
             at /home/cady/pali/git/typst/crates/typst-html/src/convert.rs:196:24
  15: typst_html::convert::handle
             at /home/cady/pali/git/typst/crates/typst-html/src/convert.rs:96:9
  16: typst_html::convert::convert_to_nodes
             at /home/cady/pali/git/typst/crates/typst-html/src/convert.rs:76:9
  17: typst_html::fragment::html_block_fragment_impl::{{closure}}
             at /home/cady/pali/git/typst/crates/typst-html/src/fragment.rs:68:5
  18: comemo::memoize::memoize
             at /home/cady/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/comemo-0.5.0/src/memoize.rs:71:18
  19: typst_html::fragment::html_block_fragment_impl
             at /home/cady/pali/git/typst/crates/typst-html/src/fragment.rs:39:1
  20: typst_html::fragment::html_block_fragment
             at /home/cady/pali/git/typst/crates/typst-html/src/fragment.rs:24:5
  21: typst_html::convert::handle_html_elem
             at /home/cady/pali/git/typst/crates/typst-html/src/convert.rs:182:24
  22: typst_html::convert::handle
             at /home/cady/pali/git/typst/crates/typst-html/src/convert.rs:96:9
  23: typst_html::convert::convert_to_nodes
             at /home/cady/pali/git/typst/crates/typst-html/src/convert.rs:76:9
  24: typst_html::fragment::html_block_fragment_impl::{{closure}}
             at /home/cady/pali/git/typst/crates/typst-html/src/fragment.rs:68:5
  25: comemo::memoize::memoize
             at /home/cady/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/comemo-0.5.0/src/memoize.rs:71:18
  26: typst_html::fragment::html_block_fragment_impl
             at /home/cady/pali/git/typst/crates/typst-html/src/fragment.rs:39:1
  27: typst_html::fragment::html_block_fragment
             at /home/cady/pali/git/typst/crates/typst-html/src/fragment.rs:24:5
  28: typst_html::convert::handle_html_elem
             at /home/cady/pali/git/typst/crates/typst-html/src/convert.rs:182:24
  29: typst_html::convert::handle
             at /home/cady/pali/git/typst/crates/typst-html/src/convert.rs:96:9
  30: typst_html::convert::convert_to_nodes
             at /home/cady/pali/git/typst/crates/typst-html/src/convert.rs:76:9
  31: typst_html::fragment::html_block_fragment_impl::{{closure}}
             at /home/cady/pali/git/typst/crates/typst-html/src/fragment.rs:68:5
  32: comemo::memoize::memoize
             at /home/cady/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/comemo-0.5.0/src/memoize.rs:71:18
  33: typst_html::fragment::html_block_fragment_impl
             at /home/cady/pali/git/typst/crates/typst-html/src/fragment.rs:39:1
  34: typst_html::fragment::html_block_fragment
             at /home/cady/pali/git/typst/crates/typst-html/src/fragment.rs:24:5
  35: typst_html::document::html_document_impl::{{closure}}
             at /home/cady/pali/git/typst/crates/typst-html/src/document.rs:99:21
  36: comemo::memoize::memoize
             at /home/cady/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/comemo-0.5.0/src/memoize.rs:71:18
  37: typst_html::document::html_document_impl
             at /home/cady/pali/git/typst/crates/typst-html/src/document.rs:46:1
  38: typst_html::document::html_document
             at /home/cady/pali/git/typst/crates/typst-html/src/document.rs:33:5
  39: <typst_html::dom::HtmlDocument as typst::sealed::Sealed>::create
             at /home/cady/pali/git/typst/crates/typst/src/lib.rs:321:13
  40: typst::compile_impl
             at /home/cady/pali/git/typst/crates/typst/src/lib.rs:149:20
  41: typst::compile
             at /home/cady/pali/git/typst/crates/typst/src/lib.rs:71:18
  42: typst::compile::compile_and_export
             at /home/cady/pali/git/typst/crates/typst-cli/src/compile.rs:304:47
  43: typst::compile::compile_once
             at /home/cady/pali/git/typst/crates/typst-cli/src/compile.rs:248:43
  44: typst::compile::compile::{{closure}}
             at /home/cady/pali/git/typst/crates/typst-cli/src/compile.rs:43:38
  45: typst::timings::Timer::record
             at /home/cady/pali/git/typst/crates/typst-cli/src/timings.rs:48:23
  46: typst::compile::compile
             at /home/cady/pali/git/typst/crates/typst-cli/src/compile.rs:43:11
  47: typst::dispatch
             at /home/cady/pali/git/typst/crates/typst-cli/src/main.rs:76:38
  48: typst::main
             at /home/cady/pali/git/typst/crates/typst-cli/src/main.rs:58:15
  49: core::ops::function::FnOnce::call_once
             at /home/cady/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:253:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

I wasn't able to reproduce this when exporting to PDF; as such, it appears to be within the currently 'experimental' parts of Typst.

Operating system

Linux

Typst version

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcrashThe Typst compiler crashes for some inputhtmlRelated to HTML exporturgentShould be fixed before the next release.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions