Skip to content

Commit

Permalink
Auto merge of #4690 - lzutao:fix-test-on-non-amd64, r=flip1995
Browse files Browse the repository at this point in the history
generate stderr file on 32bit pointer system

changelog: none
  • Loading branch information
bors committed Dec 1, 2019
2 parents 5a75502 + 7156aa7 commit 45196ce
Show file tree
Hide file tree
Showing 23 changed files with 506 additions and 101 deletions.
15 changes: 14 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
dist: xenial
language: bash
git:
depth: 1
quiet: true

branches:
# Don't build these branches
Expand All @@ -22,6 +25,7 @@ env:
- secure: "OKulfkA5OGd/d1IhvBKzRkHQwMcWjzrzbimo7+5NhkUkWxndAzl+719TB3wWvIh1i2wXXrEXsyZkXM5FtRrHm55v1VKQ5ibjEvFg1w3NIg81iDyoLq186fLqywvxGkOAFPrsePPsBj5USd5xvhwwbrjO6L7/RK6Z8shBwOSc41s="

before_install:
- export CARGO_TARGET_DIR="$TRAVIS_BUILD_DIR/target"
- curl -sSL https://sh.rustup.rs | sh -s -- -y --default-toolchain=nightly --profile=minimal
- export PATH="$HOME/.cargo/bin:$PATH"
install:
Expand All @@ -48,6 +52,15 @@ matrix:
include:
# Builds that are executed for every PR
- os: linux
# i686 toolchain could run on x86_64 system.
- os: linux
env: HOST_TOOLCHAIN=i686-unknown-linux-gnu
addons:
apt:
packages:
- gcc-multilib
- libssl-dev:i386 # openssl dev in Cargo.toml
if: branch IN (auto, try)
- os: windows
env: CARGO_INCREMENTAL=0 OS_WINDOWS=true

Expand Down Expand Up @@ -114,7 +127,7 @@ before_script:
SYSROOT=$(rustc --print sysroot)
case "$TRAVIS_OS_NAME" in
windows ) export PATH="${SYSROOT}/bin:${PATH}" ;;
linux ) export LD_LIBRARY_PATH="${SYSROOT}/lib" ;;
linux ) export LD_LIBRARY_PATH="${SYSROOT}/lib${LD_LIBRARY_PATH+:${LD_LIBRARY_PATH}}" ;;
osx )
# See <https://github.com/nteract/nteract/issues/1523#issuecomment-301623519>
sudo mkdir -p /usr/local/lib
Expand Down
4 changes: 0 additions & 4 deletions ci/base-tests.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
#!/usr/bin/env bash
set -ex

# for faster build, share target dir between subcrates
CARGO_TARGET_DIR=$(pwd)/target/
export CARGO_TARGET_DIR

echo "Running clippy base tests"

PATH=$PATH:./node_modules/.bin
Expand Down
1 change: 1 addition & 0 deletions clippy_lints/src/enum_clike.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ declare_clippy_lint! {
///
/// **Example:**
/// ```rust
/// # #[cfg(target_pointer_width = "64")]
/// #[repr(usize)]
/// enum NonPortable {
/// X = 0x1_0000_0000,
Expand Down
8 changes: 7 additions & 1 deletion setup-toolchain.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,11 @@ if rustc +master -Vv 2>/dev/null | grep -q "$RUST_COMMIT"; then
exit 0
fi

rustup-toolchain-install-master -f -n master -c rustc-dev -- "$RUST_COMMIT"
if [[ -n "$HOST_TOOLCHAIN" ]]; then
TOOLCHAIN=('--host' "$HOST_TOOLCHAIN")
else
TOOLCHAIN=()
fi

rustup-toolchain-install-master -f -n master "${TOOLCHAIN[@]}" -c rustc-dev -- "$RUST_COMMIT"
rustup override set master
4 changes: 3 additions & 1 deletion tests/fmt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@ fn fmt() {

let root_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let dev_dir = root_dir.join("clippy_dev");
let target_dir = root_dir.join("target");
let target_dir = target_dir.to_str().unwrap();
let output = Command::new("cargo")
.current_dir(dev_dir)
.args(&["+nightly", "run", "--", "fmt", "--check"])
.args(&["+nightly", "run", "--target-dir", target_dir, "--", "fmt", "--check"])
.output()
.unwrap();

Expand Down
1 change: 1 addition & 0 deletions tests/ui/cast_size.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// ignore-32bit
#[warn(
clippy::cast_precision_loss,
clippy::cast_possible_truncation,
Expand Down
36 changes: 18 additions & 18 deletions tests/ui/cast_size.stderr
Original file line number Diff line number Diff line change
@@ -1,113 +1,113 @@
error: casting isize to i8 may truncate the value
--> $DIR/cast_size.rs:11:5
--> $DIR/cast_size.rs:12:5
|
LL | 1isize as i8;
| ^^^^^^^^^^^^
|
= note: `-D clippy::cast-possible-truncation` implied by `-D warnings`

error: casting isize to f64 causes a loss of precision on targets with 64-bit wide pointers (isize is 64 bits wide, but f64's mantissa is only 52 bits wide)
--> $DIR/cast_size.rs:14:5
--> $DIR/cast_size.rs:15:5
|
LL | x0 as f64;
| ^^^^^^^^^
|
= note: `-D clippy::cast-precision-loss` implied by `-D warnings`

error: casting usize to f64 causes a loss of precision on targets with 64-bit wide pointers (usize is 64 bits wide, but f64's mantissa is only 52 bits wide)
--> $DIR/cast_size.rs:15:5
--> $DIR/cast_size.rs:16:5
|
LL | x1 as f64;
| ^^^^^^^^^

error: casting isize to f32 causes a loss of precision (isize is 32 or 64 bits wide, but f32's mantissa is only 23 bits wide)
--> $DIR/cast_size.rs:16:5
--> $DIR/cast_size.rs:17:5
|
LL | x0 as f32;
| ^^^^^^^^^

error: casting usize to f32 causes a loss of precision (usize is 32 or 64 bits wide, but f32's mantissa is only 23 bits wide)
--> $DIR/cast_size.rs:17:5
--> $DIR/cast_size.rs:18:5
|
LL | x1 as f32;
| ^^^^^^^^^

error: casting isize to i32 may truncate the value on targets with 64-bit wide pointers
--> $DIR/cast_size.rs:18:5
--> $DIR/cast_size.rs:19:5
|
LL | 1isize as i32;
| ^^^^^^^^^^^^^

error: casting isize to u32 may truncate the value on targets with 64-bit wide pointers
--> $DIR/cast_size.rs:19:5
--> $DIR/cast_size.rs:20:5
|
LL | 1isize as u32;
| ^^^^^^^^^^^^^

error: casting usize to u32 may truncate the value on targets with 64-bit wide pointers
--> $DIR/cast_size.rs:20:5
--> $DIR/cast_size.rs:21:5
|
LL | 1usize as u32;
| ^^^^^^^^^^^^^

error: casting usize to i32 may truncate the value on targets with 64-bit wide pointers
--> $DIR/cast_size.rs:21:5
--> $DIR/cast_size.rs:22:5
|
LL | 1usize as i32;
| ^^^^^^^^^^^^^

error: casting usize to i32 may wrap around the value on targets with 32-bit wide pointers
--> $DIR/cast_size.rs:21:5
--> $DIR/cast_size.rs:22:5
|
LL | 1usize as i32;
| ^^^^^^^^^^^^^
|
= note: `-D clippy::cast-possible-wrap` implied by `-D warnings`

error: casting i64 to isize may truncate the value on targets with 32-bit wide pointers
--> $DIR/cast_size.rs:23:5
--> $DIR/cast_size.rs:24:5
|
LL | 1i64 as isize;
| ^^^^^^^^^^^^^

error: casting i64 to usize may truncate the value on targets with 32-bit wide pointers
--> $DIR/cast_size.rs:24:5
--> $DIR/cast_size.rs:25:5
|
LL | 1i64 as usize;
| ^^^^^^^^^^^^^

error: casting u64 to isize may truncate the value on targets with 32-bit wide pointers
--> $DIR/cast_size.rs:25:5
--> $DIR/cast_size.rs:26:5
|
LL | 1u64 as isize;
| ^^^^^^^^^^^^^

error: casting u64 to isize may wrap around the value on targets with 64-bit wide pointers
--> $DIR/cast_size.rs:25:5
--> $DIR/cast_size.rs:26:5
|
LL | 1u64 as isize;
| ^^^^^^^^^^^^^

error: casting u64 to usize may truncate the value on targets with 32-bit wide pointers
--> $DIR/cast_size.rs:26:5
--> $DIR/cast_size.rs:27:5
|
LL | 1u64 as usize;
| ^^^^^^^^^^^^^

error: casting u32 to isize may wrap around the value on targets with 32-bit wide pointers
--> $DIR/cast_size.rs:27:5
--> $DIR/cast_size.rs:28:5
|
LL | 1u32 as isize;
| ^^^^^^^^^^^^^

error: casting i32 to f32 causes a loss of precision (i32 is 32 bits wide, but f32's mantissa is only 23 bits wide)
--> $DIR/cast_size.rs:32:5
--> $DIR/cast_size.rs:33:5
|
LL | 999_999_999 as f32;
| ^^^^^^^^^^^^^^^^^^

error: casting usize to f64 causes a loss of precision on targets with 64-bit wide pointers (usize is 64 bits wide, but f64's mantissa is only 52 bits wide)
--> $DIR/cast_size.rs:33:5
--> $DIR/cast_size.rs:34:5
|
LL | 9_999_999_999_999_999usize as f64;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down
35 changes: 35 additions & 0 deletions tests/ui/cast_size_32bit.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// ignore-64bit
#[warn(
clippy::cast_precision_loss,
clippy::cast_possible_truncation,
clippy::cast_sign_loss,
clippy::cast_possible_wrap,
clippy::cast_lossless
)]
#[allow(clippy::no_effect, clippy::unnecessary_operation)]
fn main() {
// Casting from *size
1isize as i8;
let x0 = 1isize;
let x1 = 1usize;
x0 as f64;
x1 as f64;
x0 as f32;
x1 as f32;
1isize as i32;
1isize as u32;
1usize as u32;
1usize as i32;
// Casting to *size
1i64 as isize;
1i64 as usize;
1u64 as isize;
1u64 as usize;
1u32 as isize;
1u32 as usize; // Should not trigger any lint
1i32 as isize; // Neither should this
1i32 as usize;
// Big integer literal to float
999_999_999 as f32;
3_999_999_999usize as f64;
}
132 changes: 132 additions & 0 deletions tests/ui/cast_size_32bit.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
error: casting isize to i8 may truncate the value
--> $DIR/cast_size_32bit.rs:12:5
|
LL | 1isize as i8;
| ^^^^^^^^^^^^
|
= note: `-D clippy::cast-possible-truncation` implied by `-D warnings`

error: casting isize to f64 causes a loss of precision on targets with 64-bit wide pointers (isize is 64 bits wide, but f64's mantissa is only 52 bits wide)
--> $DIR/cast_size_32bit.rs:15:5
|
LL | x0 as f64;
| ^^^^^^^^^
|
= note: `-D clippy::cast-precision-loss` implied by `-D warnings`

error: casting isize to f64 may become silently lossy if you later change the type
--> $DIR/cast_size_32bit.rs:15:5
|
LL | x0 as f64;
| ^^^^^^^^^ help: try: `f64::from(x0)`
|
= note: `-D clippy::cast-lossless` implied by `-D warnings`

error: casting usize to f64 causes a loss of precision on targets with 64-bit wide pointers (usize is 64 bits wide, but f64's mantissa is only 52 bits wide)
--> $DIR/cast_size_32bit.rs:16:5
|
LL | x1 as f64;
| ^^^^^^^^^

error: casting usize to f64 may become silently lossy if you later change the type
--> $DIR/cast_size_32bit.rs:16:5
|
LL | x1 as f64;
| ^^^^^^^^^ help: try: `f64::from(x1)`

error: casting isize to f32 causes a loss of precision (isize is 32 or 64 bits wide, but f32's mantissa is only 23 bits wide)
--> $DIR/cast_size_32bit.rs:17:5
|
LL | x0 as f32;
| ^^^^^^^^^

error: casting usize to f32 causes a loss of precision (usize is 32 or 64 bits wide, but f32's mantissa is only 23 bits wide)
--> $DIR/cast_size_32bit.rs:18:5
|
LL | x1 as f32;
| ^^^^^^^^^

error: casting isize to i32 may truncate the value on targets with 64-bit wide pointers
--> $DIR/cast_size_32bit.rs:19:5
|
LL | 1isize as i32;
| ^^^^^^^^^^^^^

error: casting isize to u32 may truncate the value on targets with 64-bit wide pointers
--> $DIR/cast_size_32bit.rs:20:5
|
LL | 1isize as u32;
| ^^^^^^^^^^^^^

error: casting usize to u32 may truncate the value on targets with 64-bit wide pointers
--> $DIR/cast_size_32bit.rs:21:5
|
LL | 1usize as u32;
| ^^^^^^^^^^^^^

error: casting usize to i32 may truncate the value on targets with 64-bit wide pointers
--> $DIR/cast_size_32bit.rs:22:5
|
LL | 1usize as i32;
| ^^^^^^^^^^^^^

error: casting usize to i32 may wrap around the value on targets with 32-bit wide pointers
--> $DIR/cast_size_32bit.rs:22:5
|
LL | 1usize as i32;
| ^^^^^^^^^^^^^
|
= note: `-D clippy::cast-possible-wrap` implied by `-D warnings`

error: casting i64 to isize may truncate the value on targets with 32-bit wide pointers
--> $DIR/cast_size_32bit.rs:24:5
|
LL | 1i64 as isize;
| ^^^^^^^^^^^^^

error: casting i64 to usize may truncate the value on targets with 32-bit wide pointers
--> $DIR/cast_size_32bit.rs:25:5
|
LL | 1i64 as usize;
| ^^^^^^^^^^^^^

error: casting u64 to isize may truncate the value on targets with 32-bit wide pointers
--> $DIR/cast_size_32bit.rs:26:5
|
LL | 1u64 as isize;
| ^^^^^^^^^^^^^

error: casting u64 to isize may wrap around the value on targets with 64-bit wide pointers
--> $DIR/cast_size_32bit.rs:26:5
|
LL | 1u64 as isize;
| ^^^^^^^^^^^^^

error: casting u64 to usize may truncate the value on targets with 32-bit wide pointers
--> $DIR/cast_size_32bit.rs:27:5
|
LL | 1u64 as usize;
| ^^^^^^^^^^^^^

error: casting u32 to isize may wrap around the value on targets with 32-bit wide pointers
--> $DIR/cast_size_32bit.rs:28:5
|
LL | 1u32 as isize;
| ^^^^^^^^^^^^^

error: casting i32 to f32 causes a loss of precision (i32 is 32 bits wide, but f32's mantissa is only 23 bits wide)
--> $DIR/cast_size_32bit.rs:33:5
|
LL | 999_999_999 as f32;
| ^^^^^^^^^^^^^^^^^^

error: casting integer literal to f64 is unnecessary
--> $DIR/cast_size_32bit.rs:34:5
|
LL | 3_999_999_999usize as f64;
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `3999999999_f64`
|
= note: `-D clippy::unnecessary-cast` implied by `-D warnings`

error: aborting due to 20 previous errors

2 changes: 1 addition & 1 deletion tests/ui/fn_to_numeric_cast.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// only-64bit
// ignore-32bit

#![warn(clippy::fn_to_numeric_cast, clippy::fn_to_numeric_cast_with_truncation)]

Expand Down
Loading

0 comments on commit 45196ce

Please sign in to comment.