Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions compiler/rustc_lint/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,11 @@ impl LintStore {
})
}

/// Returns all lint group names, including deprecated/aliased groups
pub fn get_all_group_names(&self) -> impl Iterator<Item = &'static str> {
self.lint_groups.keys().copied()
}

pub fn register_early_pass(
&mut self,
pass: impl Fn() -> EarlyLintPassObject + 'static + sync::DynSend + sync::DynSync,
Expand Down
10 changes: 7 additions & 3 deletions compiler/rustc_trait_selection/src/traits/query/normalize.rs
Original file line number Diff line number Diff line change
Expand Up @@ -376,10 +376,14 @@ impl<'a, 'tcx> QueryNormalizer<'a, 'tcx> {
// `tcx.normalize_canonicalized_projection` may normalize to a type that
// still has unevaluated consts, so keep normalizing here if that's the case.
// Similarly, `tcx.normalize_canonicalized_free_alias` will only unwrap one layer
// of type and we need to continue folding it to reveal the TAIT behind it.
// of type/const and we need to continue folding it to reveal the TAIT behind it
// or further normalize nested unevaluated consts.
if res != term.to_term(tcx)
&& (res.as_type().map_or(false, |t| t.has_type_flags(ty::TypeFlags::HAS_CT_PROJECTION))
|| term.kind(tcx) == ty::AliasTermKind::FreeTy)
&& (res.has_type_flags(ty::TypeFlags::HAS_CT_PROJECTION)
|| matches!(
term.kind(tcx),
ty::AliasTermKind::FreeTy | ty::AliasTermKind::FreeConst
))
{
res.try_fold_with(self)
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ pub fn check(cx: &LateContext<'_>) {
{
let mut rustc_groups = FxHashSet::default();
let mut clippy_groups = FxHashSet::default();
for (group, ..) in unerased_lint_store(cx.tcx.sess).get_lint_groups() {
for group in unerased_lint_store(cx.tcx.sess).get_all_group_names() {
match group.split_once("::") {
None => {
rustc_groups.insert(group);
Expand Down
1 change: 0 additions & 1 deletion src/tools/tidy/src/issues.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2978,7 +2978,6 @@ ui/unboxed-closures/issue-18652.rs
ui/unboxed-closures/issue-18661.rs
ui/unboxed-closures/issue-30906.rs
ui/unboxed-closures/issue-53448.rs
ui/underscore-imports/issue-110164.rs
ui/uniform-paths/auxiliary/issue-53691.rs
ui/uniform-paths/issue-53691.rs
ui/uninhabited/issue-107505.rs
Expand Down
32 changes: 1 addition & 31 deletions tests/ui/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,6 @@ See:
- [`std::box::Boxed`](https://doc.rust-lang.org/std/boxed/struct.Box.html)
- [Tracking issue for `box_patterns` feature #29641](https://github.com/rust-lang/rust/issues/29641)

## `tests/ui/btreemap/`: B-Tree Maps

Tests focused on `BTreeMap` collections and their compiler interactions. E.g. collection patterns, iterator behavior, and trait implementations specific to `BTreeMap`. See [`std::collections::BTreeMap`](https://doc.rust-lang.org/std/collections/struct.BTreeMap.html).

## `tests/ui/builtin-superkinds/`: Built-in Trait Hierarchy Tests

Tests for built-in trait hierarchy (Send, Sync, Sized, etc.) and their supertrait relationships. E.g. auto traits and marker trait constraints.
Expand Down Expand Up @@ -262,12 +258,10 @@ This directory only contains one highly specific test. Other coinduction tests c

## `tests/ui/collections`

These tests exercise the `collections` library.
These tests exercise the `collections` library. For example, `BTreeMap` and `HashMap`.

See [`std::collections`](https://doc.rust-lang.org/std/collections/index.html)

**FIXME**: consider merge with `tests/ui/btreemap` and `tests/ui/hashmap`

## `tests/ui/command/`: `std::process::Command`

This directory is actually for the standard library [`std::process::Command`](https://doc.rust-lang.org/std/process/struct.Command.html) type, where some tests are too difficult or inconvenient to write as unit tests or integration tests within the standard library itself.
Expand Down Expand Up @@ -518,10 +512,6 @@ The `dyn` keyword is used to highlight that calls to methods on the associated T

See [`dyn` keyword](https://doc.rust-lang.org/std/keyword.dyn.html).

## `tests/ui/dynamically-sized-types`: Dynamically Sized Types

**FIXME**: should be coalesced with `tests/ui/dst`.

## `tests/ui/editions/`: Rust edition-specific peculiarities

These tests run in specific Rust editions, such as Rust 2015 or Rust 2018, and check errors and functionality related to specific now-deprecated idioms and features.
Expand Down Expand Up @@ -688,10 +678,6 @@ Tests on range patterns where one of the bounds is not a direct value.

**FIXME**: Overlaps with `ui/range`. `impossible_range.rs` is particularly suspected to be a duplicate test.

## `tests/ui/hashmap/`

Tests for the standard library collection [`std::collections::HashMap`](https://doc.rust-lang.org/std/collections/struct.HashMap.html).

## `tests/ui/higher-ranked/`

Tests for higher-ranked trait bounds.
Expand All @@ -701,10 +687,6 @@ See:
- [Higher-ranked trait bounds | rustc-dev-guide](https://rustc-dev-guide.rust-lang.org/traits/hrtb.html)
- [Higher-ranked trait bounds | Nomicon](https://doc.rust-lang.org/nomicon/hrtb.html)

## `tests/ui/higher-ranked-trait-bounds`

**FIXME**: move to `tests/ui/higher-ranked/trait-bounds`

## `tests/ui/hygiene/`

This seems to have been originally intended for "hygienic macros" - macros which work in all contexts, independent of what surrounds them. However, this category has grown into a mish-mash of many tests that may belong in the other directories.
Expand Down Expand Up @@ -927,12 +909,6 @@ See [Tracking issue for allowing overlapping implementations for marker trait #2

Broad category of tests on `match` constructs.

## `tests/ui/meta/`: Tests for compiletest itself

These tests check the function of the UI test suite at large and Compiletest in itself.

**FIXME**: This should absolutely be merged with `tests/ui/compiletest-self-test/`.

## `tests/ui/methods/`

A broad category for anything related to methods and method resolution.
Expand Down Expand Up @@ -1530,12 +1506,6 @@ See [RFC 0132 Unified Function Call Syntax](https://github.com/rust-lang/rfcs/bl

See [Tracking issue for Fn traits (`unboxed_closures` & `fn_traits` feature)](https://github.com/rust-lang/rust/issues/29625).

## `tests/ui/underscore-imports/`

See [Underscore imports | Reference](https://doc.rust-lang.org/reference/items/use-declarations.html#underscore-imports).

**FIXME**: should become a subdirectory of `tests/ui/imports/`.

## `tests/ui/underscore-lifetime/`: `'_` elided lifetime

Exercises [anonymous elided lifetimes](https://doc.rust-lang.org/reference/lifetime-elision.html).
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
error[E0161]: cannot move a value of type `str`
--> $DIR/dst-index.rs:31:5
--> $DIR/dst-index-fail.rs:31:5
|
LL | S[0];
| ^^^^ the size of `str` cannot be statically determined

error[E0161]: cannot move a value of type `dyn Debug`
--> $DIR/dst-index.rs:34:5
--> $DIR/dst-index-fail.rs:34:5
|
LL | T[0];
| ^^^^ the size of `dyn Debug` cannot be statically determined

error[E0507]: cannot move out of index of `S`
--> $DIR/dst-index.rs:31:5
--> $DIR/dst-index-fail.rs:31:5
|
LL | S[0];
| ^^^^ move occurs because value has type `str`, which does not implement the `Copy` trait

error[E0507]: cannot move out of index of `T`
--> $DIR/dst-index.rs:34:5
--> $DIR/dst-index-fail.rs:34:5
|
LL | T[0];
| ^^^^ move occurs because value has type `dyn Debug`, which does not implement the `Copy` trait
Expand Down
File renamed without changes.
File renamed without changes.
21 changes: 21 additions & 0 deletions tests/ui/generic-const-items/type-const-nested-assoc-const.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//@ check-pass

#![feature(generic_const_items, min_generic_const_args)]
#![allow(incomplete_features)]

#[type_const]
const CT<T: ?Sized>: usize = { <T as Trait>::N };

trait Trait {
#[type_const]
const N: usize;
}

impl<T: ?Sized> Trait for T {
#[type_const]
const N: usize = 0;
}

fn f(_x: [(); CT::<()>]) {}

fn main() {}
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
// https://github.com/rust-lang/rust/issues/60218
// Regression test for #60218
//
// Regression test for https://github.com/rust-lang/rust/issues/60218
// This was reported to cause ICEs.

use std::iter::Map;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
error[E0277]: the trait bound `&u32: Foo` is not satisfied
--> $DIR/higher-trait-bounds-ice-60218.rs:19:19
--> $DIR/higher-trait-bounds-ice-60218.rs:17:19
|
LL | trigger_error(vec![], |x: &u32| x)
| ------------- ^^^^^^ the trait `Foo` is not implemented for `&u32`
| |
| required by a bound introduced by this call
|
help: this trait has no implementations, consider adding one
--> $DIR/higher-trait-bounds-ice-60218.rs:8:1
--> $DIR/higher-trait-bounds-ice-60218.rs:6:1
|
LL | pub trait Foo {}
| ^^^^^^^^^^^^^
note: required by a bound in `trigger_error`
--> $DIR/higher-trait-bounds-ice-60218.rs:14:72
--> $DIR/higher-trait-bounds-ice-60218.rs:12:72
|
LL | pub fn trigger_error<I, F>(iterable: I, functor: F)
| ------------- required by a bound in this function
Expand Down
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
error: expected identifier, found reserved identifier `_`
--> $DIR/issue-110164.rs:8:5
--> $DIR/invalid-path-110164.rs:8:5
|
LL | use _::a;
| ^ expected identifier, found reserved identifier

error: expected identifier, found reserved identifier `_`
--> $DIR/issue-110164.rs:10:5
--> $DIR/invalid-path-110164.rs:10:5
|
LL | use _::*;
| ^ expected identifier, found reserved identifier

error: expected identifier, found reserved identifier `_`
--> $DIR/issue-110164.rs:14:9
--> $DIR/invalid-path-110164.rs:14:9
|
LL | use _::a;
| ^ expected identifier, found reserved identifier

error: expected identifier, found reserved identifier `_`
--> $DIR/issue-110164.rs:16:9
--> $DIR/invalid-path-110164.rs:16:9
|
LL | use _::*;
| ^ expected identifier, found reserved identifier

error[E0432]: unresolved import `self::*`
--> $DIR/issue-110164.rs:4:5
--> $DIR/invalid-path-110164.rs:4:5
|
LL | use self::*;
| ^^^^^^^ cannot glob-import a module into itself

error[E0432]: unresolved import `crate::*`
--> $DIR/issue-110164.rs:6:5
--> $DIR/invalid-path-110164.rs:6:5
|
LL | use crate::*;
| ^^^^^^^^ cannot glob-import a module into itself
Expand Down
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
error: expected identifier, found reserved identifier `_`
--> $DIR/issue-110164.rs:8:5
--> $DIR/invalid-path-110164.rs:8:5
|
LL | use _::a;
| ^ expected identifier, found reserved identifier

error: expected identifier, found reserved identifier `_`
--> $DIR/issue-110164.rs:10:5
--> $DIR/invalid-path-110164.rs:10:5
|
LL | use _::*;
| ^ expected identifier, found reserved identifier

error: expected identifier, found reserved identifier `_`
--> $DIR/issue-110164.rs:14:9
--> $DIR/invalid-path-110164.rs:14:9
|
LL | use _::a;
| ^ expected identifier, found reserved identifier

error: expected identifier, found reserved identifier `_`
--> $DIR/issue-110164.rs:16:9
--> $DIR/invalid-path-110164.rs:16:9
|
LL | use _::*;
| ^ expected identifier, found reserved identifier

error[E0432]: unresolved import `self::*`
--> $DIR/issue-110164.rs:4:5
--> $DIR/invalid-path-110164.rs:4:5
|
LL | use self::*;
| ^^^^^^^ cannot glob-import a module into itself

error[E0432]: unresolved import `crate::*`
--> $DIR/issue-110164.rs:6:5
--> $DIR/invalid-path-110164.rs:6:5
|
LL | use crate::*;
| ^^^^^^^^ cannot glob-import a module into itself
Expand Down
Loading