Skip to content

Commit 88e2c39

Browse files
committed
Auto merge of #43168 - pnkfelix:check-attr-gating, r=aturon
Slew of builtin-attribute gating tests Slew of builtin-attribute "gating" tests for issue #43106. Some stray observations: * I don't know if its a good thing that so many attributes allow inputs which are silently discarded. (I made heavy use of that in writing my tests, but that was more out of curiosity than necessity.) * The difference between crate-level and non-crate-level behavior is quite significant in some cases. Definitely worth making sure one has tests for both cases. (Not as clear whether it was worthwhile trying the various other AST forms like `fn f()` vs `struct S;`) * `#[no_builtins]` and `#[no_mangle]` occur twice on the `BUILTIN_ATTRIBUTES` list. Thats almost certainly a bug. (Filed as #43148) * We are maximally liberal in what we allow for `#[test]` and `#[bench]` when one compiles without `--test`. * We allow `#[no_mangle]` on arbitrary AST nodes, but only warn about potential misuse on `fn` * We allow `#[cold]`, `#[must_use]`, `#[windows_subsystem]`, and `#[no_builtins]` on arbitrary AST nodes. I don't know off-hand what the semantics are for e.g. a `#[cold] type T = ...;` * We allow crate-level `#![inline]`. That's probably a bug since its otherwise restricted to `fn` items
2 parents 83c3621 + 39b8aaf commit 88e2c39

13 files changed

+1291
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// error-pattern: main function not found
12+
13+
// At time of authorship, a crate-level #![bench] with no `--test`
14+
// will cause compilation to error unconditionally with "main function
15+
// not found" (despite having one), similar to #[bench].
16+
//
17+
// (The non-crate level cases are in
18+
// issue-43106-gating-of-builtin-attrs.rs.)
19+
20+
// See issue-12997-1.rs and issue-12997-2.rs to see how `#[bench]` is
21+
// handled in "weird places" when `--test` is passed.
22+
23+
#![bench = "4100"]
24+
25+
fn main() { }

0 commit comments

Comments
 (0)