Skip to content
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

Internal lints take 2 #59316

Merged
merged 22 commits into from
Apr 4, 2019
Merged

Internal lints take 2 #59316

merged 22 commits into from
Apr 4, 2019

Conversation

flip1995
Copy link
Member

@flip1995 flip1995 commented Mar 20, 2019

cc #58701
cc #49509

TODO: Add #![warn(internal)] to crates (and fix violations)

Crates depending on rustc_data_structures

  • librustc_resolve
  • librustc_driver
  • librustc_passes
  • librustc_metadata
  • librustc_interface
  • librustc_save_analysis
  • librustc_lint
  • librustc
  • librustc_incremental
  • librustc_codegen_utils
  • libarena
  • librustc_target
  • librustc_allocator
  • librustc_privacy
  • librustc_traits
  • librustc_borrowck
  • libsyntax
  • librustc_codegen_ssa
  • libsyntax_ext
  • librustc_errors
  • librustc_mir
  • libsyntax_pos
  • librustc_typeck

Crates with feature(rustc_private)
Excluding crates, which are already in the list above. Also excluding tools and tests.

  • libstd
  • libfmt_macros
  • librustdoc

r? @oli-obk

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Mar 20, 2019
@flip1995 flip1995 changed the title Internal lints take 2 [WIP] Internal lints take 2 Mar 20, 2019
@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:11b1b5dc:start=1553095864840844072,finish=1553095868258495909,duration=3417651837
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
$ export GCP_CACHE_BUCKET=rust-lang-ci-cache
Setting environment variables from .travis.yml
---
travis_time:start:test_debuginfo
Check compiletest suite=debuginfo mode=debuginfo-both (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
[01:20:31] 
[01:20:31] running 120 tests
[01:20:57] .iiiii...i.....i..i...i..i.i...i.ii...i.....i..i....i..........iiii..........i...ii...i.......ii.i.i 100/120
[01:21:02] .i......iii.i.....ii
[01:21:02] 
[01:21:02]  finished in 30.218
[01:21:02] travis_fold:end:test_debuginfo

---
travis_time:start:test_ui-fulldeps
Check compiletest suite=ui-fulldeps mode=ui (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
[01:21:02] 
[01:21:02] running 22 tests
[01:21:09] ...FF.................
[01:21:09] 
[01:21:09] ---- [ui] ui-fulldeps/internal-lints/default_hash_types.rs stdout ----
[01:21:09] diff of stderr:
[01:21:09] 
[01:21:09] 
[01:21:09] - warning: Prefer FxHashMap over HashMap, it has better performance
[01:21:09] -    |
[01:21:09] -    |
[01:21:09] - LL | use std::collections::{HashMap, HashSet};
[01:21:09] -    |                        ^^^^^^^ help: use: `FxHashMap`
[01:21:09] -    = note: #[warn(default_hash_types)] on by default
[01:21:09] -    = note: #[warn(default_hash_types)] on by default
[01:21:09] -    = note: a `use rustc_data_structures::fx::FxHashMap` may be necessary
[01:21:09] - 
[01:21:09] - warning: Prefer FxHashSet over HashSet, it has better performance
[01:21:09] -    |
[01:21:09] -    |
[01:21:09] - LL | use std::collections::{HashMap, HashSet};
[01:21:09] -    |                                 ^^^^^^^ help: use: `FxHashSet`
[01:21:09] -    |
[01:21:09] -    = note: a `use rustc_data_structures::fx::FxHashSet` may be necessary
[01:21:09] - 
[01:21:09] - error: Prefer FxHashMap over HashMap, it has better performance
[01:21:09] -    |
[01:21:09] -    |
[01:21:09] - LL |     let _map: HashMap<String, String> = HashMap::default();
[01:21:09] -    |               ^^^^^^^ help: use: `FxHashMap`
[01:21:09] - note: lint level defined here
[01:21:09] -   --> $DIR/default_hash_types.rs:12:8
[01:21:09] -    |
[01:21:09] -    |
[01:21:09] - LL | #[deny(default_hash_types)]
[01:21:09] -    |        ^^^^^^^^^^^^^^^^^^
[01:21:09] -    = note: a `use rustc_data_structures::fx::FxHashMap` may be necessary
[01:21:09] - 
[01:21:09] - error: Prefer FxHashMap over HashMap, it has better performance
[01:21:09] -    |
[01:21:09] -    |
[01:21:09] - LL |     let _map: HashMap<String, String> = HashMap::default();
[01:21:09] -    |                                         ^^^^^^^ help: use: `FxHashMap`
[01:21:09] -    |
[01:21:09] -    = note: a `use rustc_data_structures::fx::FxHashMap` may be necessary
[01:21:09] - 
[01:21:09] - error: Prefer FxHashSet over HashSet, it has better performance
[01:21:09] -    |
[01:21:09] -    |
[01:21:09] - LL |     let _set: HashSet<String> = HashSet::default();
[01:21:09] -    |               ^^^^^^^ help: use: `FxHashSet`
[01:21:09] -    |
[01:21:09] -    = note: a `use rustc_data_structures::fx::FxHashSet` may be necessary
[01:21:09] - 
[01:21:09] - error: Prefer FxHashSet over HashSet, it has better performance
[01:21:09] -    |
[01:21:09] -    |
[01:21:09] - LL |     let _set: HashSet<String> = HashSet::default();
[01:21:09] -    |                                 ^^^^^^^ help: use: `FxHashSet`
[01:21:09] -    |
[01:21:09] -    = note: a `use rustc_data_structures::fx::FxHashSet` may be necessary
[01:21:09] - error: aborting due to 4 previous errors
[01:21:09] + error: unknown debugging option: `internal-lints`
[01:21:09] 56 
[01:21:09] 57 
[01:21:09] 57 
[01:21:09] 
[01:21:09] 
[01:21:09] The actual stderr differed from the expected stderr.
[01:21:09] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui-fulldeps/internal-lints/default_hash_types/default_hash_types.stderr
[01:21:09] To update references, rerun the tests and pass the `--bless` flag
[01:21:09] To only update this specific test, also pass `--test-args internal-lints/default_hash_types.rs`
[01:21:09] error: 1 errors occurred comparing output.
[01:21:09] status: exit code: 1
[01:21:09] status: exit code: 1
[01:21:09] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui-fulldeps/internal-lints/default_hash_types.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui-fulldeps/internal-lints/default_hash_types/a" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-Z" "internal-lints" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui-fulldeps/internal-lints/default_hash_types/auxiliary" "-A" "unused"
[01:21:09] ------------------------------------------
[01:21:09] 
[01:21:09] ------------------------------------------
[01:21:09] stderr:
[01:21:09] stderr:
[01:21:09] ------------------------------------------
[01:21:09] {"message":"unknown debugging option: `internal-lints`","code":null,"level":"error","spans":[],"children":[],"rendered":"error: unknown debugging option: `internal-lints`\n\n"}
[01:21:09] ------------------------------------------
[01:21:09] 
[01:21:09] thread '[ui] ui-fulldeps/internal-lints/default_hash_types.rs' panicked at 'explicit panic', src/tools/compiletest/src/runtest.rs:3325:9
[01:21:09] note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
[01:21:09] note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
[01:21:09] 
[01:21:09] ---- [ui] ui-fulldeps/internal-lints/ty_tykind_usage.rs stdout ----
[01:21:09] 
[01:21:09] 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:11:15
[01:21:09] -    |
[01:21:09] - LL |     let sty = TyKind::Bool; //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |               ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - note: lint level defined here
[01:21:09] - note: lint level defined here
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:9:8
[01:21:09] -    |
[01:21:09] - LL | #[deny(usage_of_ty_tykind)]
[01:21:09] - 
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:14:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Bool => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:15:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Char => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:16:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Int(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:17:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Uint(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:18:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Float(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:19:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Adt(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:20:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Foreign(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:21:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Str => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:22:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Array(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:23:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Slice(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:24:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::RawPtr(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:25:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Ref(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:26:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::FnDef(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:27:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::FnPtr(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:28:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Dynamic(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:29:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Closure(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:30:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Generator(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:31:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::GeneratorWitness(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:32:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Never => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:33:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Tuple(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:34:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Projection(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:35:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::UnnormalizedProjection(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:36:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Opaque(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:37:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Param(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:38:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Bound(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:39:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Placeholder(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:40:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Infer(..) => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:41:9
[01:21:09] -    |
[01:21:09] - LL |         TyKind::Error => (), //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |         ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - 
[01:21:09] - error: usage of `ty::TyKind::<kind>`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:46:12
[01:21:09] -    |
[01:21:09] - LL |     if let TyKind::Int(int_ty) = sty {} //~ ERROR usage of `ty::TyKind::<kind>`
[01:21:09] -    |            ^^^^^^ help: try using ty::<kind> directly: `ty`
[01:21:09] - error: usage of `ty::TyKind`
[01:21:09] - error: usage of `ty::TyKind`
[01:21:09] -   --> $DIR/ty_tykind_usage.rs:48:24
[01:21:09] -    |
[01:21:09] - LL |     fn ty_kind(ty_bad: TyKind<'_>, ty_good: Ty<'_>) {} //~ ERROR usage of `ty::TyKind`
[01:21:09] -    |
[01:21:09] -    = help: try using `ty::Ty` instead
[01:21:09] - 
[01:21:09] - error: aborting due to 31 previous errors
[01:21:09] - error: aborting due to 31 previous errors
[01:21:09] + error: unknown debugging option: `internal-lints`
[01:21:09] 196 
[01:21:09] 197 
[01:21:09] 
[01:21:09] 
[01:21:09] The actual stderr differed from the expected stderr.
[01:21:09] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui-fulldeps/internal-lints/ty_tykind_usage/ty_tykind_usage.stderr
[01:21:09] To update references, rerun the tests and pass the `--bless` flag
[01:21:09] To only update this specific test, also pass `--test-args internal-lints/ty_tykind_usage.rs`
[01:21:09] error: 1 errors occurred comparing output.
[01:21:09] status: exit code: 1
[01:21:09] status: exit code: 1
[01:21:09] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui-fulldeps/internal-lints/ty_tykind_usage.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui-fulldeps/internal-lints/ty_tykind_usage/a" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-Z" "internal-lints" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui-fulldeps/internal-lints/ty_tykind_usage/auxiliary" "-A" "unused"
[01:21:09] ------------------------------------------
[01:21:09] 
[01:21:09] ------------------------------------------
[01:21:09] stderr:
[01:21:09] stderr:
[01:21:09] ------------------------------------------
[01:21:09] {"message":"unknown debugging option: `internal-lints`","code":null,"level":"error","spans":[],"children":[],"rendered":"error: unknown debugging option: `internal-lints`\n\n"}
[01:21:09] ------------------------------------------
[01:21:09] 
[01:21:09] 
[01:21:09] thread '[ui] ui-fulldeps/internal-lints/ty_tykind_usage.rs' panicked at 'explicit panic', src/tools/compiletest/src/runtest.rs:3325:9
[01:21:09] 
[01:21:09] failures:
[01:21:09]     [ui] ui-fulldeps/internal-lints/default_hash_types.rs
[01:21:09]     [ui] ui-fulldeps/internal-lints/default_hash_types.rs
[01:21:09]     [ui] ui-fulldeps/internal-lints/ty_tykind_usage.rs
[01:21:09] 
[01:21:09] test result: FAILED. 20 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out
[01:21:09] 
[01:21:09] 
[01:21:09] 
[01:21:09] 
[01:21:09] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/ui-fulldeps" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui-fulldeps" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "ui" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-6.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--target-rustcflags" "-Crpath -O -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "6.0.0\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
[01:21:09] 
[01:21:09] 
[01:21:09] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
[01:21:09] Build completed unsuccessfully in 0:12:28
[01:21:09] Build completed unsuccessfully in 0:12:28
[01:21:09] make: *** [check] Error 1
[01:21:09] Makefile:48: recipe for target 'check' failed
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:0898e024
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Wed Mar 20 16:52:29 UTC 2019
---
travis_time:end:0900769b:start=1553100751096494654,finish=1553100751101272437,duration=4777783
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:014d1d9a
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:10f16584
travis_time:start:10f16584
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:02cdc0b4
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:098c13f0:start=1553184710262449975,finish=1553184825589749695,duration=115327299720
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
$ export GCP_CACHE_BUCKET=rust-lang-ci-cache
Setting environment variables from .travis.yml
---
[00:24:58]    Compiling rustc_codegen_utils v0.0.0 (/checkout/src/librustc_codegen_utils)
[00:25:39]    Compiling rustc_save_analysis v0.0.0 (/checkout/src/librustc_save_analysis)
[00:25:39]    Compiling rustc_interface v0.0.0 (/checkout/src/librustc_interface)
[00:25:39]    Compiling rustc_codegen_ssa v0.0.0 (/checkout/src/librustc_codegen_ssa)
[00:25:40] error[E0382]: use of moved value: `sopts`
[00:25:40]    --> src/librustc_interface/util.rs:111:8
[00:25:40] 85  |     sopts: config::Options,
[00:25:40] 85  |     sopts: config::Options,
[00:25:40]     |     ----- move occurs because `sopts` has type `rustc::session::config::Options`, which does not implement the `Copy` trait
[00:25:40] 100 |         sopts,
[00:25:40]     |         ----- value moved here
[00:25:40] ...
[00:25:40] ...
[00:25:40] 111 |     if sopts.debugging_opts.unstable_options {
[00:25:40]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ value used here after move
[00:25:41] error: aborting due to previous error
[00:25:41] 
[00:25:41] For more information about this error, try `rustc --explain E0382`.
[00:25:41] error: Could not compile `rustc_interface`.
---
travis_time:end:2a402450:start=1553186483362854563,finish=1553186483368155486,duration=5300923
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:012f9b6c
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:01836120
travis_time:start:01836120
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:19039f59
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@oli-obk
Copy link
Contributor

oli-obk commented Mar 22, 2019

impl lgtm now

@flip1995
Copy link
Member Author

It seems like the unstable-options flag is not enabled while compiling e.g. librustc.

If I try to activate the lint group, I get an unknown lint error:

error: unknown lint: `internal`
  --> src/librustc/lib.rs:32:31
   |
32 | #![cfg_attr(not(stage0), deny(internal))]
   |                               ^^^^^^^^
   |
   = note: `-D unknown-lints` implied by `-D warnings`

error: aborting due to previous error

@oli-obk
Copy link
Contributor

oli-obk commented Mar 25, 2019

That's very curious. There's probably a hack that makes -Zunstable-options unnecessary in the presence of RUSTC_BOOTSTRAP=1. You can probably just add

if stage != "0" {
    cmd.arg("-Zunstable-options");
}

to

@Centril Centril added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 30, 2019
@Centril
Copy link
Contributor

Centril commented Mar 30, 2019

Ping from triage, @flip1995 ^

@flip1995
Copy link
Member Author

Will get to this today / Monday.

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:150c3430:start=1554037388575546144,finish=1554037480599845475,duration=92024299331
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
$ export GCP_CACHE_BUCKET=rust-lang-ci-cache
Setting environment variables from .travis.yml
---
[00:19:41]    Compiling rustc_lint v0.0.0 (/checkout/src/librustc_lint)
[00:19:42] error[E0061]: this function takes 5 parameters but 3 parameters were supplied
[00:19:42]    --> src/librustc_lint/lib.rs:495:11
[00:19:42]     |
[00:19:42] 495 |     store.register_late_pass(sess, false, box TyKindUsage);
[00:19:42] 
[00:19:43] error: aborting due to previous error
[00:19:43] 
[00:19:43] For more information about this error, try `rustc --explain E0061`.
---
travis_time:end:10ee5f2a:start=1554038748633009014,finish=1554038748638082337,duration=5073323
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:17b738f8
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:0c1d9afc
travis_time:start:0c1d9afc
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such f

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

src/librustc_lint/types.rs Outdated Show resolved Hide resolved
src/librustc_lint/types.rs Outdated Show resolved Hide resolved
@bors
Copy link
Contributor

bors commented Apr 3, 2019

☔ The latest upstream changes (presumably #59657) made this pull request unmergeable. Please resolve the merge conflicts.

Copy link
Contributor

@oli-obk oli-obk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two small nits, then this lgtm. Are you planning on doing this to any furhter crates? If not, please remove WIP from the title and rebase.

src/librustc_typeck/astconv.rs Outdated Show resolved Hide resolved
src/librustc_typeck/astconv.rs Outdated Show resolved Hide resolved
@flip1995
Copy link
Member Author

flip1995 commented Apr 3, 2019

Are you planning on doing this to any furhter crates?

I thought about adding usage_of_ty_tykind, but not default_hash_types to the crates libstd, libfmt_macros and librustdoc, since they use rustc_private, but don't depend on rustc_data_structures.

@oli-obk
Copy link
Contributor

oli-obk commented Apr 3, 2019

For libstd that's not necessary. libstd using extern crate rustc or similar would be a bug in itself. The others seem ok

@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Apr 3, 2019
Centril added a commit to Centril/rust that referenced this pull request Apr 3, 2019
…li-obk

Internal lints take 2

cc rust-lang#58701
cc rust-lang#49509

TODO: Add `#![warn(internal)]` to crates (and fix violations)

Crates depending on `rustc_data_structures`

- [x] librustc_resolve
- [x] librustc_driver
- [x] librustc_passes
- [x] librustc_metadata
- [x] librustc_interface
- [x] librustc_save_analysis
- [x] librustc_lint
- [x] librustc
- [x] librustc_incremental
- [x] librustc_codegen_utils
- [x] libarena
- [x] librustc_target
- [x] librustc_allocator
- [x] librustc_privacy
- [x] librustc_traits
- [x] librustc_borrowck
- [x] libsyntax
- [x] librustc_codegen_ssa
- [x] libsyntax_ext
- [x] librustc_errors
- [x] librustc_mir
- [x] libsyntax_pos
- [x] librustc_typeck

Crates with `feature(rustc_private)`
Excluding crates, which are already in the list above. Also excluding tools and tests.

- [ ] ~~libstd~~
- [x] libfmt_macros
- [x] librustdoc

r? @oli-obk
Centril added a commit to Centril/rust that referenced this pull request Apr 3, 2019
…li-obk

Internal lints take 2

cc rust-lang#58701
cc rust-lang#49509

TODO: Add `#![warn(internal)]` to crates (and fix violations)

Crates depending on `rustc_data_structures`

- [x] librustc_resolve
- [x] librustc_driver
- [x] librustc_passes
- [x] librustc_metadata
- [x] librustc_interface
- [x] librustc_save_analysis
- [x] librustc_lint
- [x] librustc
- [x] librustc_incremental
- [x] librustc_codegen_utils
- [x] libarena
- [x] librustc_target
- [x] librustc_allocator
- [x] librustc_privacy
- [x] librustc_traits
- [x] librustc_borrowck
- [x] libsyntax
- [x] librustc_codegen_ssa
- [x] libsyntax_ext
- [x] librustc_errors
- [x] librustc_mir
- [x] libsyntax_pos
- [x] librustc_typeck

Crates with `feature(rustc_private)`
Excluding crates, which are already in the list above. Also excluding tools and tests.

- [ ] ~~libstd~~
- [x] libfmt_macros
- [x] librustdoc

r? @oli-obk
bors added a commit that referenced this pull request Apr 4, 2019
Rollup of 6 pull requests

Successful merges:

 - #59316 (Internal lints take 2)
 - #59663 (Be more direct about borrow contract)
 - #59664 (Updated the documentation of spin_loop and spin_loop_hint)
 - #59666 (Updated the environment description in rustc.)
 - #59669 (Reduce repetition in librustc(_lint) wrt. impl LintPass by using macros)
 - #59677 (rustfix coverage: Skip UI tests with non-json error-format)

Failed merges:

r? @ghost
@bors bors merged commit c81ce06 into rust-lang:master Apr 4, 2019
@flip1995 flip1995 deleted the internal_lints_take_2 branch April 4, 2019 07:02

/// Check if a `DefId`'s path matches the given absolute type path usage.
// Uplifted from rust-lang/rust-clippy
pub fn match_path<'a, 'tcx>(self, tcx: TyCtxt<'a, 'tcx, 'tcx>, path: &[&str]) -> bool {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sorry for not noticing this until now, but such functionality doesn't belong on DefId, not even TyCtxt IMO.
Could we move this to the lint context, instead?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I will do this tomorrow/Saturday!

Centril added a commit to Centril/rust that referenced this pull request Apr 6, 2019
…anishearth

Move match_path from DefId to lint::LateContext

cc rust-lang#59316 (comment)

r? @eddyb
Centril added a commit to Centril/rust that referenced this pull request Apr 6, 2019
…anishearth

Move match_path from DefId to lint::LateContext

cc rust-lang#59316 (comment)

r? @eddyb
flip1995 added a commit to flip1995/rust that referenced this pull request Apr 7, 2019
This uplifts `get_def_path` from Clippy. This is a follow up on the
implementation of internal lints: rust-lang#59316

The internal lint implementation also copied the implementation of the
`AbsolutePathPrinter`. To get rid of this code duplication this also
uplifts the `get_def_path` function from Clippy.

This also renames `match_path` to `match_def_path`, as it was originally
named in Clippy.
Centril added a commit to Centril/rust that referenced this pull request Apr 8, 2019
…ishearth

Uplift `get_def_path` from Clippy

cc rust-lang/rust-clippy#3926
cc rust-lang#59738

This uplifts `get_def_path` from Clippy. This is a follow up on the
implementation of internal lints: rust-lang#59316

The internal lint implementation also copied the implementation of the
`AbsolutePathPrinter`. To get rid of this code duplication this also
uplifts the `get_def_path` function from Clippy.

This also renames `match_path` to `match_def_path`, as it was originally
named in Clippy.

r? @Manishearth
sanxiyn added a commit to sanxiyn/rust that referenced this pull request Apr 11, 2019
…ishearth

Uplift `get_def_path` from Clippy

cc rust-lang/rust-clippy#3926
cc rust-lang#59738

This uplifts `get_def_path` from Clippy. This is a follow up on the
implementation of internal lints: rust-lang#59316

The internal lint implementation also copied the implementation of the
`AbsolutePathPrinter`. To get rid of this code duplication this also
uplifts the `get_def_path` function from Clippy.

This also renames `match_path` to `match_def_path`, as it was originally
named in Clippy.

r? @Manishearth
flip1995 added a commit to flip1995/rust that referenced this pull request Apr 12, 2019
This uplifts `get_def_path` from Clippy. This is a follow up on the
implementation of internal lints: rust-lang#59316

The internal lint implementation also copied the implementation of the
`AbsolutePathPrinter`. To get rid of this code duplication this also
uplifts the `get_def_path` function from Clippy.

This also renames `match_path` to `match_def_path`, as it was originally
named in Clippy.
@@ -109,6 +108,9 @@ pub fn create_session(
let codegen_backend = get_codegen_backend(&sess);

rustc_lint::register_builtins(&mut sess.lint_store.borrow_mut(), Some(&sess));
if sess.unstable_options() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was it guarded by unstable_options()?

Copy link
Member Author

@flip1995 flip1995 Apr 15, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because every lint, that is registered will be run, which is bad performance wise (for normal users) and can be easily prevented. We decided to not introduce a new -Z option and just use the unstable_options flag. #58701 (comment) #59316 (comment)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These lints are useless outside of the compiler or clippy. Exposing them to stable would mean we'd need to support the name (or the lint existing) forever, even if the lint might disappear if the compiler datastructures change beyond the point where the lint is needed

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, GitHub collapsed that comment.

I was wondering if there is better solution for Clippy and possibly other projects.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not gating on whether the crate is compiled to be unstable with the feature rustc_private?

Centril added a commit to Centril/rust that referenced this pull request Apr 15, 2019
…ishearth

Uplift `get_def_path` from Clippy

cc rust-lang/rust-clippy#3926
cc rust-lang#59738

This uplifts `get_def_path` from Clippy. This is a follow up on the
implementation of internal lints: rust-lang#59316

The internal lint implementation also copied the implementation of the
`AbsolutePathPrinter`. To get rid of this code duplication this also
uplifts the `get_def_path` function from Clippy.

This also renames `match_path` to `match_def_path`, as it was originally
named in Clippy.

r? @Manishearth
@flip1995 flip1995 mentioned this pull request Jun 5, 2019
3 tasks
Centril added a commit to Centril/rust that referenced this pull request Jul 5, 2019
Implement another internal lints

cc rust-lang#49509

This adds ~~two~~ one internal lint~~s~~:
1. LINT_PASS_IMPL_WITHOUT_MACRO: Make sure, that the `{declare,impl}_lint_pass` macro is used to implement lint passes. cc rust-lang#59669
2. ~~USAGE_OF_TYCTXT_AND_SPAN_ARGS: item 2 on the list in rust-lang#49509~~

~~With 2. I wasn't sure, if this lint should be applied everywhere. That means a careful review of 0955835 would be great. Also 73fb9b4 allows this lint on some functions. Should I also apply this lint there?~~

TODO (not directly relevant for review):
- [ ] rust-lang#59316 (comment) (not sure yet, if this works or how to query for `rustc_private`, since it's not in [`Features`](https://doc.rust-lang.org/nightly/nightly-rustc/syntax/feature_gate/struct.Features.html) 🤔 cc @eddyb)
- [x] rust-lang#61735 (comment)
- [x] Check explicitly for the `{declare,impl}_lint_pass!` macros

r? @oli-obk
Centril added a commit to Centril/rust that referenced this pull request Jul 5, 2019
Implement another internal lints

cc rust-lang#49509

This adds ~~two~~ one internal lint~~s~~:
1. LINT_PASS_IMPL_WITHOUT_MACRO: Make sure, that the `{declare,impl}_lint_pass` macro is used to implement lint passes. cc rust-lang#59669
2. ~~USAGE_OF_TYCTXT_AND_SPAN_ARGS: item 2 on the list in rust-lang#49509~~

~~With 2. I wasn't sure, if this lint should be applied everywhere. That means a careful review of 0955835 would be great. Also 73fb9b4 allows this lint on some functions. Should I also apply this lint there?~~

TODO (not directly relevant for review):
- [ ] rust-lang#59316 (comment) (not sure yet, if this works or how to query for `rustc_private`, since it's not in [`Features`](https://doc.rust-lang.org/nightly/nightly-rustc/syntax/feature_gate/struct.Features.html) 🤔 cc @eddyb)
- [x] rust-lang#61735 (comment)
- [x] Check explicitly for the `{declare,impl}_lint_pass!` macros

r? @oli-obk
Centril added a commit to Centril/rust that referenced this pull request Jul 5, 2019
Implement another internal lints

cc rust-lang#49509

This adds ~~two~~ one internal lint~~s~~:
1. LINT_PASS_IMPL_WITHOUT_MACRO: Make sure, that the `{declare,impl}_lint_pass` macro is used to implement lint passes. cc rust-lang#59669
2. ~~USAGE_OF_TYCTXT_AND_SPAN_ARGS: item 2 on the list in rust-lang#49509~~

~~With 2. I wasn't sure, if this lint should be applied everywhere. That means a careful review of 0955835 would be great. Also 73fb9b4 allows this lint on some functions. Should I also apply this lint there?~~

TODO (not directly relevant for review):
- [ ] rust-lang#59316 (comment) (not sure yet, if this works or how to query for `rustc_private`, since it's not in [`Features`](https://doc.rust-lang.org/nightly/nightly-rustc/syntax/feature_gate/struct.Features.html) 🤔 cc @eddyb)
- [x] rust-lang#61735 (comment)
- [x] Check explicitly for the `{declare,impl}_lint_pass!` macros

r? @oli-obk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants