Repository navigation
un-closed delimiter causes compiler to crash. #33823
Copy link
Copy link
Closed
Description
I ran this code:
// External Crate Imports
extern crate clap;
extern crate diesel;
// Distro enum import
use super::distro::{Distro, which_distro};
// Imports needed to run each command
use std::process::Command;
// Std Lib Imports
use std::process::exit;
use std::collections::HashSet;
use db;
// Gets what distro is being used from distro.rs
// then sets that as a function.
pub fn getWhichDistro() {
let opt_dist = which_distro();
if opt_dist.is_none() {
println!("Your distribution is not supported");
exit(0);
}
/// Installs packages for what ever Distro is returned
/// from which_distro();
///
/// #Examples
///
/// ```
/// let mut packages: HashSet<&str> = HashSet::new();
/// packages.push("sudo");
/// packages.push("postgresql");
/// void_install(packages);
/// ```
///
pub fn opt_distro_install(packages: HashSet<String>) {
let opt_distro_packages = convert_to_opt_distro(packages);
if !opt_distro_packages.is_empty() {
pac(opt_distro_packages);
}
}
/// Convert package names from other distros to void
fn convert_to_opt_distro(input_packages: HashSet<String>) -> HashSet<String> {
let results = db::pack_query(input_packages);
let mut pac_converted: HashSet<String> = HashSet::new();
// Using the querys store into the HashSet the actual
// void package name for use later
for i in results {
// All querys will either be a string or '' in the db
// allowing us to use is_empty()
if !i.opt_distro.is_empty() {
pac_converted.insert(i.opt_distro);
}
}
pac_converted
}
// Figures out the current package manager based on Distro
pub fn setFunctionVaribles() {
if opt_distro().contains("Ubuntu") {
let opt_pac_install = "apt-get";
let opt_pac_install_args = "install";
let opt_pac_refresh = "apt-get";
let opt_pac_refresh_args = "update";
let opt_pac_upgrade = "apt-get";
let opt_pac_upgrade_args = "upgrade";
} else if opt_distro().contains("Void") {
let opt_pac_install = "xbps-install";
let opt_pac_install_args = "-S";
let opt_pac_refresh = "xbps-install";
let opt_pac_refresh_args = "-Sy";
let opt_pac_upgrade = "xbps-install";
let opt_pac_upgrade_args = "-Syu";
} else if opt_distro().contains("Debian") {
let opt_pac_install = "apt-get";
let opt_pac_install_args = "install";
let opt_pac_refresh = "apt-get";
let opt_pac_refresh_args = "update";
let opt_pac_upgrade = "apt-get";
let opt_pac_upgrade_args = "upgrade";
} else if opt_distro().contains("Mint") {
let opt_pac_install = "apt-get";
let opt_pac_install_args = "install";
let opt_pac_refresh = "apt-get";
let opt_pac_refresh_args = "update";
let opt_pac_upgrade = "apt-get";
let opt_pac_upgrade_args = "upgrade";
} else if opt_distro().contains("FreeBSD") {
let opt_pac_install = "pkg";
let opt_pac_install_args = "install";
let opt_pac_refresh = "pkg";
let opt_pac_refresh_args = "update";
let opt_pac_upgrade = "pkg";
let opt_pac_upgrade_args = "upgrade";
}
}
// Package Manager specific functions
/// Calls the package manager program to install packages
///
/// #Examples
///
/// ```
/// let mut packages: HashSet<String> = HashSet::new();
/// packages.push("sudo".to_owned());
/// pac(packages);
/// ```
///
pub fn pac(mut packages: HashSet<String>) {
let mut child = match Command::new(opt_pac_install)
.arg(opt_pac_install_args)
.args(packages.drain()
.collect::<Vec<String>>()
.as_slice())
.spawn() {
Ok(child) => child,
Err(e) => panic!("Failed to execute child: {}", e),
};
let _unused = child.wait();
}
/// Calls the xbps-install program to refresh the package list
///
/// #Examples
///
/// ```
/// refresh_list();
/// ```
///
pub fn refresh_list() {
let mut child = match Command::new(opt_pac_refresh)
.arg(opt_pac_refresh_args)
.spawn() {
Ok(child) => child,
Err(e) => panic!("Failed to execute child: {}", e),
};
let _unused = child.wait();
}
/// Calls the xbps-install program to upgrage all packages
///
/// #Examples
///
/// ```
/// refresh_list();
/// ```
///
pub fn upgrade_packages() {
let mut child = match Command::new(opt_pac_upgrade)
.arg(opt_pac_upgrade_args)
.spawn() {
Ok(child) => child,
Err(e) => panic!("Failed to execute child: {}", e),
};
let _unused = child.wait();
}I expected it to tell me whats wrong with the code.
Instead it crashed with a un-closed delimiter error.
Meta
rustc --version --verbose
rustc 1.10.0-nightly (d91f8ab0f 2016-05-07)
binary: rustc
commit-hash: d91f8ab0f58fa123857d96b9e151fc5185f5ff08
commit-date: 2016-05-07
host: x86_64-unknown-linux-gnu
release: 1.10.0-nightlyBacktrace:
Compiling Alchemist v0.4.0 (file:///home/benjamin/git-projects/Alchemist)
src/alchemy/function.rs:163:3: 163:3 error: this file contains an un-closed delimiter
src/alchemy/function.rs:163:3: 163:3 error: this file contains an un-closed delimiter
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: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'no annotations resulted from: Line { line_index: 162, annotations: [Annotation { start_col: 2, end_col: 2, is_primary: true, label: None }] }', ../src/libsyntax/errors/snippet/mod.rs:495
stack backtrace:
1: 0x7fdf604f8d20 - std::sys::backtrace::tracing::imp::write::h9fb600083204ae7f
2: 0x7fdf6050656b - std::panicking::default_hook::_$u7b$$u7b$closure$u7d$$u7d$::hca543c34f11229ac
3: 0x7fdf6050610c - std::panicking::default_hook::hc2c969e7453d080c
4: 0x7fdf604cb8cf - std::sys_common::unwind::begin_unwind_inner::h30e12d15ce2b2e25
5: 0x7fdf604cd9b8 - std::sys_common::unwind::begin_unwind_fmt::hb2de8a9968d38523
6: 0x7fdf5bb3a3f0 - _<std..iter..FlatMap<I, U, F> as std..iter..Iterator>::next::h5f2bd9e6e7475c71
7: 0x7fdf5bb2529d - syntax::errors::snippet::SnippetData::render_lines::hcf468c4f4b065b33
8: 0x7fdf5bb1de5d - _<errors..emitter..EmitterWriter as errors..emitter..CoreEmitter>::emit_message::h90dab4fc68091626
9: 0x7fdf5cdb581d - _<T as syntax..errors..emitter..Emitter>::emit_struct::h7b7bf4316e311f87
10: 0x7fdf5bbfea79 - syntax::parse::parser::Parser::parse_token_tree::hd7887691a0224788
11: 0x7fdf5bbecd8e - syntax::parse::parser::Parser::parse_all_token_trees::hd7d5e9405b2cb448
12: 0x7fdf5bbedb06 - syntax::parse::filemap_to_tts::hef694d21976dabc3
13: 0x7fdf5bbed222 - syntax::parse::filemap_to_parser::haaf76e155992a193
14: 0x7fdf5bbed5a5 - syntax::parse::new_sub_parser_from_file::h958bfc7a4123d826
15: 0x7fdf5bc66c0e - syntax::parse::parser::Parser::eval_src_mod::hc1b930270df2f2db
16: 0x7fdf5bc46dfa - syntax::parse::parser::Parser::parse_item_::h42775dc76ed27882
17: 0x7fdf5bbebea2 - syntax::parse::parser::Parser::parse_item::h10c52ea29e5c06b9
18: 0x7fdf5bc64985 - syntax::parse::parser::Parser::parse_mod_items::h66337b460d5459b0
19: 0x7fdf5bbea357 - syntax::parse::parser::Parser::parse_crate_mod::hab124b9c61eef337
20: 0x7fdf5bbea0ee - syntax::parse::parse_crate_from_file::h9d8c63cd0dc10cd2
21: 0x7fdf60a5ba7f - rustc_driver::driver::phase_1_parse_input::_$u7b$$u7b$closure$u7d$$u7d$::h356ebaf3d4ce86d0
22: 0x7fdf60a36698 - rustc_driver::driver::phase_1_parse_input::h338b1890954f9a2c
23: 0x7fdf60a11e97 - rustc_driver::driver::compile_input::h0629572e6f316b31
24: 0x7fdf60a0857d - rustc_driver::run_compiler::h8902aebf8b1849a8
25: 0x7fdf60a0583d - std::sys_common::unwind::try::try_fn::h4c74456035d0fcc7
26: 0x7fdf604f64fb - __rust_try
27: 0x7fdf604f648d - std::sys_common::unwind::inner_try::h47a4d9cd4a369dcd
28: 0x7fdf60a0626a - _<F as std..boxed..FnBox<A>>::call_box::h27f542a39f1d61ef
29: 0x7fdf605046d4 - std::sys::thread::Thread::new::thread_start::h6f266e069bf4ec2b
30: 0x7fdf5829e3f3 - start_thread
at /builddir/glibc-2.23/nptl/pthread_create.c:333
31: 0x7fdf60161bac - clone
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
32: 0x0 - <unknown>
Build failed, waiting for other jobs to finish...
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: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'no annotations resulted from: Line { line_index: 162, annotations: [Annotation { start_col: 2, end_col: 2, is_primary: true, label: None }] }', ../src/libsyntax/errors/snippet/mod.rs:495
stack backtrace:
1: 0x7f1398831d20 - std::sys::backtrace::tracing::imp::write::h9fb600083204ae7f
2: 0x7f139883f56b - std::panicking::default_hook::_$u7b$$u7b$closure$u7d$$u7d$::hca543c34f11229ac
3: 0x7f139883f10c - std::panicking::default_hook::hc2c969e7453d080c
4: 0x7f13988048cf - std::sys_common::unwind::begin_unwind_inner::h30e12d15ce2b2e25
5: 0x7f13988069b8 - std::sys_common::unwind::begin_unwind_fmt::hb2de8a9968d38523
6: 0x7f1393e733f0 - _<std..iter..FlatMap<I, U, F> as std..iter..Iterator>::next::h5f2bd9e6e7475c71
7: 0x7f1393e5e29d - syntax::errors::snippet::SnippetData::render_lines::hcf468c4f4b065b33
8: 0x7f1393e56e5d - _<errors..emitter..EmitterWriter as errors..emitter..CoreEmitter>::emit_message::h90dab4fc68091626
9: 0x7f13950ee81d - _<T as syntax..errors..emitter..Emitter>::emit_struct::h7b7bf4316e311f87
10: 0x7f1393f37a79 - syntax::parse::parser::Parser::parse_token_tree::hd7887691a0224788
11: 0x7f1393f25d8e - syntax::parse::parser::Parser::parse_all_token_trees::hd7d5e9405b2cb448
12: 0x7f1393f26b06 - syntax::parse::filemap_to_tts::hef694d21976dabc3
13: 0x7f1393f26222 - syntax::parse::filemap_to_parser::haaf76e155992a193
14: 0x7f1393f265a5 - syntax::parse::new_sub_parser_from_file::h958bfc7a4123d826
15: 0x7f1393f9fc0e - syntax::parse::parser::Parser::eval_src_mod::hc1b930270df2f2db
16: 0x7f1393f7fdfa - syntax::parse::parser::Parser::parse_item_::h42775dc76ed27882
17: 0x7f1393f24ea2 - syntax::parse::parser::Parser::parse_item::h10c52ea29e5c06b9
18: 0x7f1393f9d985 - syntax::parse::parser::Parser::parse_mod_items::h66337b460d5459b0
19: 0x7f1393f23357 - syntax::parse::parser::Parser::parse_crate_mod::hab124b9c61eef337
20: 0x7f1393f230ee - syntax::parse::parse_crate_from_file::h9d8c63cd0dc10cd2
21: 0x7f1398d94a7f - rustc_driver::driver::phase_1_parse_input::_$u7b$$u7b$closure$u7d$$u7d$::h356ebaf3d4ce86d0
22: 0x7f1398d6f698 - rustc_driver::driver::phase_1_parse_input::h338b1890954f9a2c
23: 0x7f1398d4ae97 - rustc_driver::driver::compile_input::h0629572e6f316b31
24: 0x7f1398d4157d - rustc_driver::run_compiler::h8902aebf8b1849a8
25: 0x7f1398d3e83d - std::sys_common::unwind::try::try_fn::h4c74456035d0fcc7
26: 0x7f139882f4fb - __rust_try
27: 0x7f139882f48d - std::sys_common::unwind::inner_try::h47a4d9cd4a369dcd
28: 0x7f1398d3f26a - _<F as std..boxed..FnBox<A>>::call_box::h27f542a39f1d61ef
29: 0x7f139883d6d4 - std::sys::thread::Thread::new::thread_start::h6f266e069bf4ec2b
30: 0x7f13905d73f3 - start_thread
at /builddir/glibc-2.23/nptl/pthread_create.c:333
31: 0x7f139849abac - clone
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
32: 0x0 - <unknown>
error: Could not compile `Alchemist`.
To learn more, run the command again with --verbose.Metadata
Metadata
Assignees
Labels
No labels
Activity
TimNN commentedon May 24, 2016
This seems to have been fixed on the latest nightly.
TimNN commentedon May 24, 2016
More specifically, this was probably fixed by #33369.
alexcrichton commentedon May 24, 2016
Yay!
Arzte commentedon May 24, 2016
Cool!