Add missing 2015 edition directives

These tests specifically test 2015 edition behavior, so ensure that they can only be run with this edition
This commit is contained in:
Lukas Wirth 2025-06-03 09:54:30 +02:00
parent b17dba4518
commit 49969468b5
36 changed files with 74 additions and 46 deletions

View file

@ -1,3 +1,4 @@
//@ edition: 2015
//@ run-pass
#![allow(unused_imports)]

View file

@ -1,3 +1,4 @@
//@ edition: 2015
//@ check-pass
#![allow(dead_code)]

View file

@ -1,3 +1,4 @@
//@ edition: 2015
//@ check-pass
trait Foo {

View file

@ -1,3 +1,4 @@
//@ edition: 2015
//@ check-pass
trait Foo {

View file

@ -1,3 +1,4 @@
//@ edition: 2015
//@ run-pass
#![deny(warnings)]

View file

@ -1,3 +1,4 @@
//@ edition: 2015
//@ check-pass
// Make sure several unnamed function parameters don't conflict with each other

View file

@ -1,3 +1,4 @@
//@ edition: 2015
//@ run-rustfix
#![allow(dead_code)]

View file

@ -1,3 +1,4 @@
//@ edition: 2015
//@ run-rustfix
#![allow(dead_code)]

View file

@ -1,5 +1,5 @@
error[E0642]: patterns aren't allowed in methods without bodies
--> $DIR/issue-50571.rs:5:12
--> $DIR/issue-50571.rs:6:12
|
LL | fn foo([a, b]: [i32; 2]) {}
| ^^^^^^

View file

@ -1,3 +1,4 @@
//@ edition: 2015
trait Foo<T, T = T> {}
//~^ ERROR the name `T` is already used for a generic parameter in this item's generic parameters

View file

@ -1,5 +1,5 @@
error[E0403]: the name `T` is already used for a generic parameter in this item's generic parameters
--> $DIR/issue-86756.rs:1:14
--> $DIR/issue-86756.rs:2:14
|
LL | trait Foo<T, T = T> {}
| - ^ already used
@ -7,13 +7,13 @@ LL | trait Foo<T, T = T> {}
| first use of `T`
error[E0412]: cannot find type `dyn` in this scope
--> $DIR/issue-86756.rs:5:10
--> $DIR/issue-86756.rs:6:10
|
LL | eq::<dyn, Foo>
| ^^^ not found in this scope
warning: trait objects without an explicit `dyn` are deprecated
--> $DIR/issue-86756.rs:5:15
--> $DIR/issue-86756.rs:6:15
|
LL | eq::<dyn, Foo>
| ^^^
@ -27,13 +27,13 @@ LL | eq::<dyn, dyn Foo>
| +++
error[E0107]: missing generics for trait `Foo`
--> $DIR/issue-86756.rs:5:15
--> $DIR/issue-86756.rs:6:15
|
LL | eq::<dyn, Foo>
| ^^^ expected at least 1 generic argument
|
note: trait defined here, with at least 1 generic parameter: `T`
--> $DIR/issue-86756.rs:1:7
--> $DIR/issue-86756.rs:2:7
|
LL | trait Foo<T, T = T> {}
| ^^^ -

View file

@ -1,4 +1,5 @@
//@ revisions: rust2015 rust2018 rust2021
//@[rust2015] edition:2015
//@[rust2018] edition:2018
//@[rust2021] edition:2021
fn main() {

View file

@ -1,5 +1,5 @@
error[E0762]: unterminated character literal
--> $DIR/lex-bad-str-literal-as-char-3.rs:5:26
--> $DIR/lex-bad-str-literal-as-char-3.rs:6:26
|
LL | println!('hello world');
| ^^^

View file

@ -1,5 +1,5 @@
error[E0762]: unterminated character literal
--> $DIR/lex-bad-str-literal-as-char-3.rs:5:26
--> $DIR/lex-bad-str-literal-as-char-3.rs:6:26
|
LL | println!('hello world');
| ^^^

View file

@ -1,5 +1,5 @@
error: prefix `world` is unknown
--> $DIR/lex-bad-str-literal-as-char-3.rs:5:21
--> $DIR/lex-bad-str-literal-as-char-3.rs:6:21
|
LL | println!('hello world');
| ^^^^^ unknown prefix
@ -12,7 +12,7 @@ LL + println!("hello world");
|
error[E0762]: unterminated character literal
--> $DIR/lex-bad-str-literal-as-char-3.rs:5:26
--> $DIR/lex-bad-str-literal-as-char-3.rs:6:26
|
LL | println!('hello world');
| ^^^

View file

@ -1,5 +1,7 @@
#![allow(bare_trait_objects)]
//@ edition: 2015
//@ check-pass
#![allow(bare_trait_objects)]
pub struct FormatWith<'a, I, F> {
sep: &'a str,
/// FormatWith uses interior mutability because Display::fmt takes &self.

View file

@ -1,4 +1,5 @@
// Verify that lifetime resolution correctly accounts for `Fn` bare trait objects.
//@ edition: 2015
//@ check-pass
#![allow(bare_trait_objects)]

View file

@ -1,3 +1,4 @@
//@ edition: 2015
#![feature(associated_type_defaults)]
trait Assoc {

View file

@ -1,5 +1,5 @@
warning: trait objects without an explicit `dyn` are deprecated
--> $DIR/bare-trait-objects-path.rs:14:5
--> $DIR/bare-trait-objects-path.rs:15:5
|
LL | Dyn::func();
| ^^^
@ -13,7 +13,7 @@ LL | <dyn Dyn>::func();
| ++++ +
warning: trait objects without an explicit `dyn` are deprecated
--> $DIR/bare-trait-objects-path.rs:17:5
--> $DIR/bare-trait-objects-path.rs:18:5
|
LL | ::Dyn::func();
| ^^^^^
@ -26,7 +26,7 @@ LL | <dyn (::Dyn)>::func();
| ++++++ ++
warning: trait objects without an explicit `dyn` are deprecated
--> $DIR/bare-trait-objects-path.rs:20:5
--> $DIR/bare-trait-objects-path.rs:21:5
|
LL | Dyn::CONST;
| ^^^
@ -39,7 +39,7 @@ LL | <dyn Dyn>::CONST;
| ++++ +
warning: trait objects without an explicit `dyn` are deprecated
--> $DIR/bare-trait-objects-path.rs:23:12
--> $DIR/bare-trait-objects-path.rs:24:12
|
LL | let _: Dyn::Ty;
| ^^^
@ -52,7 +52,7 @@ LL | let _: <dyn Dyn>::Ty;
| ++++ +
error[E0223]: ambiguous associated type
--> $DIR/bare-trait-objects-path.rs:23:12
--> $DIR/bare-trait-objects-path.rs:24:12
|
LL | let _: Dyn::Ty;
| ^^^^^^^

View file

@ -1,5 +1,6 @@
//@ check-pass
//@ compile-flags: -W rust-2018-compatibility
//@ edition: 2015
fn main() {}

View file

@ -1,3 +1,4 @@
//@ edition: 2015
//@ run-rustfix
#![deny(unused_qualifications)]
#![deny(unused_imports)]

View file

@ -1,3 +1,4 @@
//@ edition: 2015
//@ run-rustfix
#![deny(unused_qualifications)]
#![deny(unused_imports)]

View file

@ -1,11 +1,11 @@
error: unnecessary qualification
--> $DIR/lint-qualification.rs:12:5
--> $DIR/lint-qualification.rs:13:5
|
LL | foo::bar();
| ^^^^^^^^
|
note: the lint level is defined here
--> $DIR/lint-qualification.rs:2:9
--> $DIR/lint-qualification.rs:3:9
|
LL | #![deny(unused_qualifications)]
| ^^^^^^^^^^^^^^^^^^^^^
@ -16,7 +16,7 @@ LL + bar();
|
error: unnecessary qualification
--> $DIR/lint-qualification.rs:13:5
--> $DIR/lint-qualification.rs:14:5
|
LL | crate::foo::bar();
| ^^^^^^^^^^^^^^^
@ -28,7 +28,7 @@ LL + bar();
|
error: unnecessary qualification
--> $DIR/lint-qualification.rs:18:13
--> $DIR/lint-qualification.rs:19:13
|
LL | let _ = std::string::String::new();
| ^^^^^^^^^^^^^^^^^^^^^^^^
@ -40,7 +40,7 @@ LL + let _ = String::new();
|
error: unnecessary qualification
--> $DIR/lint-qualification.rs:20:12
--> $DIR/lint-qualification.rs:21:12
|
LL | let _: std::vec::Vec<String> = std::vec::Vec::<String>::new();
| ^^^^^^^^^^^^^^^^^^^^^
@ -52,7 +52,7 @@ LL + let _: Vec<String> = std::vec::Vec::<String>::new();
|
error: unnecessary qualification
--> $DIR/lint-qualification.rs:20:36
--> $DIR/lint-qualification.rs:21:36
|
LL | let _: std::vec::Vec<String> = std::vec::Vec::<String>::new();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -64,19 +64,19 @@ LL + let _: std::vec::Vec<String> = Vec::<String>::new();
|
error: unused import: `std::fmt`
--> $DIR/lint-qualification.rs:24:9
--> $DIR/lint-qualification.rs:25:9
|
LL | use std::fmt;
| ^^^^^^^^
|
note: the lint level is defined here
--> $DIR/lint-qualification.rs:3:9
--> $DIR/lint-qualification.rs:4:9
|
LL | #![deny(unused_imports)]
| ^^^^^^^^^^^^^^
error: unnecessary qualification
--> $DIR/lint-qualification.rs:29:13
--> $DIR/lint-qualification.rs:30:13
|
LL | let _ = <bool as std::default::Default>::default(); // issue #121999 (modified)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View file

@ -1,3 +1,4 @@
//@ edition: 2015
//@ check-pass
#![warn(redundant_imports)]

View file

@ -1,5 +1,5 @@
warning: the item `Some` is imported redundantly
--> $DIR/use-redundant-prelude-rust-2015.rs:5:5
--> $DIR/use-redundant-prelude-rust-2015.rs:6:5
|
LL | use std::option::Option::Some;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
@ -8,13 +8,13 @@ LL | use std::option::Option::Some;
= note: the item `Some` is already defined here
|
note: the lint level is defined here
--> $DIR/use-redundant-prelude-rust-2015.rs:2:9
--> $DIR/use-redundant-prelude-rust-2015.rs:3:9
|
LL | #![warn(redundant_imports)]
| ^^^^^^^^^^^^^^^^^
warning: the item `None` is imported redundantly
--> $DIR/use-redundant-prelude-rust-2015.rs:6:5
--> $DIR/use-redundant-prelude-rust-2015.rs:7:5
|
LL | use std::option::Option::None;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
@ -23,7 +23,7 @@ LL | use std::option::Option::None;
= note: the item `None` is already defined here
warning: the item `Ok` is imported redundantly
--> $DIR/use-redundant-prelude-rust-2015.rs:8:5
--> $DIR/use-redundant-prelude-rust-2015.rs:9:5
|
LL | use std::result::Result::Ok;
| ^^^^^^^^^^^^^^^^^^^^^^^
@ -32,7 +32,7 @@ LL | use std::result::Result::Ok;
= note: the item `Ok` is already defined here
warning: the item `Err` is imported redundantly
--> $DIR/use-redundant-prelude-rust-2015.rs:9:5
--> $DIR/use-redundant-prelude-rust-2015.rs:10:5
|
LL | use std::result::Result::Err;
| ^^^^^^^^^^^^^^^^^^^^^^^^

View file

@ -1,4 +1,5 @@
//@ run-pass
//@ edition: 2015
#![allow(deprecated)] // for deprecated `try!()` macro
use std::num::{ParseFloatError, ParseIntError};

View file

@ -1,3 +1,5 @@
//@ edition: 2015
type A0 = dyn;
//~^ ERROR cannot find type `dyn` in this scope
type A1 = dyn::dyn;

View file

@ -1,47 +1,47 @@
error[E0412]: cannot find type `dyn` in this scope
--> $DIR/dyn-trait-compatibility.rs:1:11
--> $DIR/dyn-trait-compatibility.rs:3:11
|
LL | type A0 = dyn;
| ^^^ not found in this scope
error[E0412]: cannot find type `dyn` in this scope
--> $DIR/dyn-trait-compatibility.rs:5:11
--> $DIR/dyn-trait-compatibility.rs:7:11
|
LL | type A2 = dyn<dyn, dyn>;
| ^^^ not found in this scope
error[E0412]: cannot find type `dyn` in this scope
--> $DIR/dyn-trait-compatibility.rs:5:15
--> $DIR/dyn-trait-compatibility.rs:7:15
|
LL | type A2 = dyn<dyn, dyn>;
| ^^^ not found in this scope
error[E0412]: cannot find type `dyn` in this scope
--> $DIR/dyn-trait-compatibility.rs:5:20
--> $DIR/dyn-trait-compatibility.rs:7:20
|
LL | type A2 = dyn<dyn, dyn>;
| ^^^ not found in this scope
error[E0412]: cannot find type `dyn` in this scope
--> $DIR/dyn-trait-compatibility.rs:9:11
--> $DIR/dyn-trait-compatibility.rs:11:11
|
LL | type A3 = dyn<<dyn as dyn>::dyn>;
| ^^^ not found in this scope
error[E0405]: cannot find trait `dyn` in this scope
--> $DIR/dyn-trait-compatibility.rs:9:23
--> $DIR/dyn-trait-compatibility.rs:11:23
|
LL | type A3 = dyn<<dyn as dyn>::dyn>;
| ^^^ not found in this scope
error[E0412]: cannot find type `dyn` in this scope
--> $DIR/dyn-trait-compatibility.rs:9:16
--> $DIR/dyn-trait-compatibility.rs:11:16
|
LL | type A3 = dyn<<dyn as dyn>::dyn>;
| ^^^ not found in this scope
error[E0433]: failed to resolve: use of unresolved module or unlinked crate `dyn`
--> $DIR/dyn-trait-compatibility.rs:3:11
--> $DIR/dyn-trait-compatibility.rs:5:11
|
LL | type A1 = dyn::dyn;
| ^^^ use of unresolved module or unlinked crate `dyn`

View file

@ -1,6 +1,7 @@
// Make sure that we don't parse `extern crate async`
// Make sure that we don't parse `extern crate async` as
// the front matter of a function leading us astray.
//@ edition: 2015
//@ check-pass
fn main() {}

View file

@ -1,4 +1,5 @@
// Regression test for #85794
//@ edition: 2015
struct Baz {
inner : dyn fn ()

View file

@ -1,11 +1,11 @@
error: expected `,`, or `}`, found keyword `fn`
--> $DIR/fn-field-parse-error-ice.rs:4:16
--> $DIR/fn-field-parse-error-ice.rs:5:16
|
LL | inner : dyn fn ()
| ^ help: try adding a comma: `,`
error: expected identifier, found keyword `fn`
--> $DIR/fn-field-parse-error-ice.rs:4:17
--> $DIR/fn-field-parse-error-ice.rs:5:17
|
LL | struct Baz {
| --- while parsing this struct
@ -18,7 +18,7 @@ LL | inner : dyn r#fn ()
| ++
error[E0412]: cannot find type `dyn` in this scope
--> $DIR/fn-field-parse-error-ice.rs:4:13
--> $DIR/fn-field-parse-error-ice.rs:5:13
|
LL | inner : dyn fn ()
| ^^^ not found in this scope

View file

@ -1,3 +1,5 @@
//@ edition: 2015
fn main() {
async move {};
//~^ ERROR `async move` blocks are only allowed in Rust 2018 or later

View file

@ -1,5 +1,5 @@
error: `async move` blocks are only allowed in Rust 2018 or later
--> $DIR/issue-114219.rs:2:5
--> $DIR/issue-114219.rs:4:5
|
LL | async move {};
| ^^^^^^^^^^

View file

@ -1,3 +1,5 @@
//@ edition: 2015
trait Trait {}
fn test(_: &for<'a> dyn Trait) {}

View file

@ -1,5 +1,5 @@
error: `for<...>` expected after `dyn`, not before
--> $DIR/recover-hrtb-before-dyn-impl-kw.rs:3:21
--> $DIR/recover-hrtb-before-dyn-impl-kw.rs:5:21
|
LL | fn test(_: &for<'a> dyn Trait) {}
| ^^^
@ -11,7 +11,7 @@ LL + fn test(_: &dyn for<'a> Trait) {}
|
error: `for<...>` expected after `impl`, not before
--> $DIR/recover-hrtb-before-dyn-impl-kw.rs:6:21
--> $DIR/recover-hrtb-before-dyn-impl-kw.rs:8:21
|
LL | fn test2(_: for<'a> impl Trait) {}
| ^^^^
@ -23,7 +23,7 @@ LL + fn test2(_: impl for<'a> Trait) {}
|
error: expected identifier, found `>`
--> $DIR/recover-hrtb-before-dyn-impl-kw.rs:10:24
--> $DIR/recover-hrtb-before-dyn-impl-kw.rs:12:24
|
LL | type A2 = dyn<for<> dyn>;
| ^ expected identifier

View file

@ -1,6 +1,7 @@
// Unnamed arguments in trait functions can be passed through proc macros on 2015 edition.
//@ check-pass
//@ edition: 2015
//@ proc-macro: test-macros.rs
#![allow(anonymous_parameters)]