incr.comp. Add tests for stable span hashing.

This commit is contained in:
Michael Woerister 2016-08-26 16:31:02 -04:00
parent e355ec1c6a
commit 8b67ad69a7
7 changed files with 194 additions and 0 deletions

View file

@ -0,0 +1,63 @@
// Copyright 2016 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.
// This test makes sure that different expansions of the file!(), line!(),
// column!() macros get picked up by the incr. comp. hash.
// revisions:rpass1 rpass2
// compile-flags: -Z query-dep-graph
#![feature(rustc_attrs)]
#[rustc_clean(label="Hir", cfg="rpass2")]
fn line_same() {
let _ = line!();
}
#[rustc_clean(label="Hir", cfg="rpass2")]
fn col_same() {
let _ = column!();
}
#[rustc_clean(label="Hir", cfg="rpass2")]
fn file_same() {
let _ = file!();
}
#[cfg(rpass1)]
fn line_different() {
let _ = line!();
}
#[cfg(rpass2)]
#[rustc_dirty(label="Hir", cfg="rpass2")]
fn line_different() {
let _ = line!();
}
#[cfg(rpass1)]
fn col_different() {
let _ = column!();
}
#[cfg(rpass2)]
#[rustc_dirty(label="Hir", cfg="rpass2")]
fn col_different() {
let _ = column!();
}
fn main() {
line_same();
line_different();
col_same();
col_different();
file_same();
}

View file

@ -0,0 +1,17 @@
// Copyright 2016 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.
#[cfg(rpass1)]
pub mod sub2;
pub mod sub1;
#[cfg(rpass2)]
pub mod sub2;

View file

@ -0,0 +1,15 @@
// Copyright 2016 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.
#[rustc_clean(label="Hir", cfg="rpass2")]
pub struct SomeType {
pub x: u32,
pub y: i64,
}

View file

@ -0,0 +1,15 @@
// Copyright 2016 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.
#[rustc_clean(label="Hir", cfg="rpass2")]
pub struct SomeOtherType {
pub a: i32,
pub b: u64,
}

View file

@ -0,0 +1,34 @@
// Copyright 2016 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.
// This test makes sure that it doesn't make a difference in which order we are
// adding source files to the codemap. The order affects the BytePos values of
// the spans and this test makes sure that we handle them correctly by hashing
// file:line:column instead of raw byte offset.
// revisions:rpass1 rpass2
// compile-flags: -g -Z query-dep-graph
#![feature(rustc_attrs)]
mod auxiliary;
fn main() {
let _ = auxiliary::sub1::SomeType {
x: 0,
y: 1,
};
let _ = auxiliary::sub2::SomeOtherType {
a: 2,
b: 3,
};
}

View file

@ -0,0 +1,25 @@
// Copyright 2016 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.
// This test makes sure that just changing a definition's location in the
// source file does *not* change its incr. comp. hash, if debuginfo is disabled.
// revisions:rpass1 rpass2
// compile-flags: -Z query-dep-graph
#![feature(rustc_attrs)]
#[cfg(rpass1)]
pub fn main() {}
#[cfg(rpass2)]
#[rustc_clean(label="Hir", cfg="rpass2")]
pub fn main() {}

View file

@ -0,0 +1,25 @@
// Copyright 2016 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.
// This test makes sure that just changing a definition's location in the
// source file also changes its incr. comp. hash, if debuginfo is enabled.
// revisions:rpass1 rpass2
// compile-flags: -g -Z query-dep-graph
#![feature(rustc_attrs)]
#[cfg(rpass1)]
pub fn main() {}
#[cfg(rpass2)]
#[rustc_dirty(label="Hir", cfg="rpass2")]
pub fn main() {}