-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
compiler error #16822
Comments
I believe this may possibly be related to #16643. What version of |
rustc 0.12.0-pre (0d3bd77 2014-08-27 21:31:13 +0000) |
i've managed to reproduce this with a simple example: test.rs: extern crate lib;
use std::cell::RefCell;
struct App{
i: int
}
impl lib::Update for App{
fn update(&mut self){
self.i += 1;
}
}
fn main(){
let app = App{i: 5};
let window = lib::Window{data: RefCell::new(app)};
window.update(1);
} lib.rs #![crate_type = "lib"]
#![crate_name = "lib"]
use std::cell::RefCell;
pub struct Window<Data>{
pub data: RefCell<Data>
}
impl<Data: Update> Window<Data>{
pub fn update(&self, e: i32){
match e{
1 => self.data.borrow_mut().update(),
_ => {}
}
}
}
pub trait Update{
fn update(&mut self);
} the error seems to happen only when accessing a RefCell from a library instanciated with a type coming from a program linking to that library and only if the borrow is inside a match!, it doesn't seem to matter if the borrow is mutable or not. |
here's the cargo files in case it helps to test:
|
Closes rust-lang#5988. Closes rust-lang#10176. Closes rust-lang#10456. Closes rust-lang#12744. Closes rust-lang#13264. Closes rust-lang#13324. Closes rust-lang#14182. Closes rust-lang#15381. Closes rust-lang#15444. Closes rust-lang#15480. Closes rust-lang#15756. Closes rust-lang#16822. Closes rust-lang#16966. Closes rust-lang#17351. Closes rust-lang#17503. Closes rust-lang#17545. Closes rust-lang#17771. Closes rust-lang#17816. Closes rust-lang#17897. Closes rust-lang#17905. Closes rust-lang#18188. Closes rust-lang#18232. Closes rust-lang#18345. Closes rust-lang#18389. Closes rust-lang#18400. Closes rust-lang#18502. Closes rust-lang#18611. Closes rust-lang#18783. Closes rust-lang#19009. Closes rust-lang#19081. Closes rust-lang#19098. Closes rust-lang#19127. Closes rust-lang#19135.
Closes rust-lang#5988. Closes rust-lang#10176. Closes rust-lang#10456. Closes rust-lang#12744. Closes rust-lang#13264. Closes rust-lang#13324. Closes rust-lang#14182. Closes rust-lang#15381. Closes rust-lang#15444. Closes rust-lang#15480. Closes rust-lang#15756. Closes rust-lang#16822. Closes rust-lang#16966. Closes rust-lang#17351. Closes rust-lang#17503. Closes rust-lang#17545. Closes rust-lang#17771. Closes rust-lang#17816. Closes rust-lang#17897. Closes rust-lang#17905. Closes rust-lang#18188. Closes rust-lang#18232. Closes rust-lang#18345. Closes rust-lang#18389. Closes rust-lang#18400. Closes rust-lang#18502. Closes rust-lang#18611. Closes rust-lang#18783. Closes rust-lang#19009. Closes rust-lang#19081. Closes rust-lang#19098. Closes rust-lang#19127. Closes rust-lang#19135.
Closes #5988. Closes #10176. Closes #10456. Closes #12744. Closes #13264. Closes #13324. Closes #14182. Closes #15381. Closes #15444. Closes #15480. Closes #15756. Closes #16822. Closes #16966. Closes #17351. Closes #17503. Closes #17545. Closes #17771. Closes #17816. Closes #17897. Closes #17905. Closes #18188. Closes #18232. Closes #18345. Closes #18389. Closes #18400. Closes #18502. Closes #18611. Closes #18783. Closes #19009. Closes #19081. Closes #19098. Closes #19127. Closes #19135.
fix: Make inlay hint resolving work better for inlays targetting the same position
just updated rust to latest master and while trying to compile a program that was working before i'm getting:
the code is rather large, i have tried to reproduce the error in a smaller example but can't find exactly where's the problem, it seems to be related with doing a borrow_mut() on a RefCell but as i said it doesn't happen on a smaller test
this is the backtrace:
The text was updated successfully, but these errors were encountered: