Fix ICE that @steveklabnik encountered in rust-ice. The problems turned out to be that were being very loose with bound regions in trans (we were basically just ignoring and flattening binders). Since binders are significant to subtyping and hence to trait selection, this can cause a lot of problems. So this patch makes us treat them more strictly -- for example, we propagate binders, and avoid skipping past the Binder by writing foo.0.
Fixes #20644.
This commit is contained in:
parent
8efd9901b6
commit
2486d93e5b
23 changed files with 399 additions and 183 deletions
35
src/test/run-pass/issue-20644.rs
Normal file
35
src/test/run-pass/issue-20644.rs
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// A reduced version of the rustbook ice. The problem this encountered
|
||||
// had to do with trans ignoring binders.
|
||||
|
||||
#![feature(slicing_syntax)]
|
||||
#![feature(associated_types)]
|
||||
#![feature(macro_rules)]
|
||||
|
||||
use std::iter;
|
||||
use std::os;
|
||||
use std::io::File;
|
||||
|
||||
#[allow(unused)]
|
||||
pub fn parse_summary<R: Reader>(_: R, _: &Path) {
|
||||
let path_from_root = Path::new("");
|
||||
Path::new(iter::repeat("../")
|
||||
.take(path_from_root.components().count() - 1)
|
||||
.collect::<String>());
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let cwd = os::getcwd().unwrap();
|
||||
let src = cwd.clone();
|
||||
let summary = File::open(&src.join("SUMMARY.md"));
|
||||
let _ = parse_summary(summary, &src);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue