summaryrefslogtreecommitdiffstats
path: root/src/test/ui/lint/issue-70819-dont-override-forbid-in-same-scope.rs
blob: c66037e9a73ae6d01acbe5e466208575ff956df7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// This test is checking that you cannot override a `forbid` by adding in other
// attributes later in the same scope. (We already ensure that you cannot
// override it in nested scopes).

// If you turn off deduplicate diagnostics (which rustc turns on by default but
// compiletest turns off when it runs ui tests), then the errors are
// (unfortunately) repeated here because the checking is done as we read in the
// errors, and curretly that happens two or three different times, depending on
// compiler flags.
//
// I decided avoiding the redundant output was not worth the time in engineering
// effort for bug like this, which 1. end users are unlikely to run into in the
// first place, and 2. they won't see the redundant output anyway.

// compile-flags: -Z deduplicate-diagnostics=yes

#![forbid(forbidden_lint_groups)]

fn forbid_first(num: i32) -> i32 {
    #![forbid(unused)]
    #![deny(unused)]
    //~^ ERROR: deny(unused) incompatible with previous forbid
    //~| WARNING being phased out
    #![warn(unused)]
    #![allow(unused)]

    num * num
}

fn forbid_last(num: i32) -> i32 {
    #![deny(unused)]
    #![warn(unused)]
    #![allow(unused)]
    #![forbid(unused)]

    num * num
}

fn forbid_multiple(num: i32) -> i32 {
    #![forbid(unused)]
    #![forbid(unused)]

    num * num
}

fn main() {
    forbid_first(10);
    forbid_last(10);
    forbid_multiple(10);
}