| // The purpose of this feature gate is to make something into a hard error in a |
| // future edition. Consequently, this test differs from most other feature gate |
| // tests. Instead of verifying that an error occurs when the feature gate is |
| // missing, it ensures that the hard error is only produced with the feature |
| // gate is present in the `future` edition -- and otherwise that only a warning |
| // is emitted. |
| |
| //@ revisions: current current_feature future future_feature |
| |
| //@ [current] run-rustfix |
| //@ [current] check-pass |
| |
| //@ [current_feature] run-rustfix |
| //@ [current_feature] check-pass |
| |
| //@ [future] edition: future |
| //@ [future] compile-flags: -Z unstable-options |
| //@ [future] run-rustfix |
| //@ [future] check-pass |
| |
| //@ [future_feature] edition: future |
| //@ [future_feature] compile-flags: -Z unstable-options |
| |
| #![cfg_attr(future_feature, feature(explicit_extern_abis))] |
| #![cfg_attr(current_feature, feature(explicit_extern_abis))] |
| |
| extern "C" fn _foo() {} |
| //[current]~^ WARN `extern` declarations without an explicit ABI are deprecated |
| //[current_feature]~^^ WARN `extern` declarations without an explicit ABI are deprecated |
| //[future]~^^^ WARN `extern` declarations without an explicit ABI are deprecated |
| //[future_feature]~^^^^ ERROR `extern` declarations without an explicit ABI are disallowed |
| |
| unsafe extern "C" fn _bar() {} |
| //[current]~^ WARN `extern` declarations without an explicit ABI are deprecated |
| //[current_feature]~^^ WARN `extern` declarations without an explicit ABI are deprecated |
| //[future]~^^^ WARN `extern` declarations without an explicit ABI are deprecated |
| //[future_feature]~^^^^ ERROR `extern` declarations without an explicit ABI are disallowed |
| |
| unsafe extern "C" {} |
| //[current]~^ WARN `extern` declarations without an explicit ABI are deprecated |
| //[current_feature]~^^ WARN `extern` declarations without an explicit ABI are deprecated |
| //[future]~^^^ WARN `extern` declarations without an explicit ABI are deprecated |
| //[future_feature]~^^^^ ERROR `extern` declarations without an explicit ABI are disallowed |
| |
| fn main() {} |