Skip to content

rustc panics on invalid syntax where T: !u64 #59051

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Closed
hawkrives opened this issue Mar 9, 2019 · 3 comments
Closed

rustc panics on invalid syntax where T: !u64 #59051

hawkrives opened this issue Mar 9, 2019 · 3 comments
Labels
A-parser Area: The lexing & parsing of Rust source code to an AST I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@hawkrives
Copy link

I tried this code:

trait Thing {}

impl<T> Thing for Option<T> where T: !u64 {}

Now, I realize that that's invalid code, but I expected an error message instead of a panic?

For example, rustfmt reports:

error: expected one of `(`, `,`, `?`, `for`, `{`, lifetime, or path, found `!`
 --> /Users/rives/Projects/gobbldygook-area-auditor/foo.rs:3:38
  |
3 | impl<T> Thing for Option<T> where T: !u64 {}
  |                                      ^ expected one of 7 possible tokens here

Meta

rustup run nightly -- rustc --version --verbose:

rustc 1.35.0-nightly (2a65cbe 2019-03-08)
binary: rustc
commit-hash: 2a65cbe
commit-date: 2019-03-08
host: x86_64-apple-darwin
release: 1.35.0-nightly
LLVM version: 8.0

Backtrace:

thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/libcore/option.rs:345:21
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::sys_common::backtrace::_print
   2: std::panicking::default_hook::{{closure}}
   3: std::panicking::default_hook
   4: std::panicking::rust_panic_with_hook
   5: std::panicking::continue_panic_fmt
   6: rust_begin_unwind
   7: core::panicking::panic_fmt
   8: core::panicking::panic
   9: syntax::parse::parser::Parser::parse_generic_bounds_common
  10: syntax::parse::parser::Parser::parse_where_clause
  11: syntax::parse::parser::Parser::parse_item_implementation
  12: syntax::parse::parser::Parser::parse_item_
  13: syntax::parse::parser::Parser::parse_item
  14: syntax::parse::parser::Parser::parse_mod_items
  15: syntax::parse::parser::Parser::parse_crate_mod
  16: syntax::parse::parse_crate_from_file
  17: rustc_driver::driver::phase_1_parse_input::{{closure}}
  18: rustc::util::common::time
  19: rustc_driver::driver::phase_1_parse_input
  20: rustc_driver::driver::compile_input
  21: rustc_driver::run_compiler_with_pool
  22: <scoped_tls::ScopedKey<T>>::set
  23: rustc_driver::run_compiler
  24: syntax::with_globals
  25: __rust_maybe_catch_panic
  26: <F as alloc::boxed::FnBox<A>>::call_box
  27: std::sys::unix::thread::Thread::new::thread_start
  28: _pthread_body
  29: _pthread_start

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.35.0-nightly (2a65cbeea 2019-03-08) running on x86_64-apple-darwin
@jonas-schievink
Copy link
Contributor

Might be duplicate of #58857 - please check with the next nightly, which should contain #58861

@hawkrives
Copy link
Author

Yep! Looks like a duplicate of that issue. I'll be sure to test the next nightly.

@estebank estebank added I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ A-parser Area: The lexing & parsing of Rust source code to an AST labels Mar 9, 2019
@estebank
Copy link
Contributor

estebank commented Mar 9, 2019

Confirmed fixed in master:

error: negative trait bounds are not supported
 --> file.rs:3:36
  |
3 | impl<T> Thing for Option<T> where T: !u64 {}
  |                                    ^^^^^^ help: remove the trait bound

@estebank estebank closed this as completed Mar 9, 2019
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
A-parser Area: The lexing & parsing of Rust source code to an AST I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

No branches or pull requests

3 participants