From d788588dce5525b2bf5674b0c90c791a70582330 Mon Sep 17 00:00:00 2001 From: Keegan McAllister Date: Thu, 5 Feb 2015 16:14:42 -0800 Subject: [PATCH] Feature-gate #![no_std] Fixes #21833. [breaking-change] --- src/doc/reference.md | 6 ++++++ src/doc/trpl/unsafe.md | 8 +++++--- src/liballoc/lib.rs | 1 + src/libcollections/lib.rs | 1 + src/libcore/lib.rs | 1 + src/liblibc/lib.rs | 1 + src/librand/lib.rs | 1 + src/librustc_bitflags/lib.rs | 1 + src/librustc_driver/test.rs | 2 +- src/libstd/lib.rs | 1 + src/libsyntax/feature_gate.rs | 10 +++++++++- src/libunicode/lib.rs | 1 + src/test/auxiliary/lang-item-public.rs | 1 + src/test/auxiliary/no_std_crate.rs | 1 + src/test/auxiliary/weak-lang-items.rs | 1 + ...sociated-types-ICE-when-projecting-out-of-err.rs | 1 + src/test/compile-fail/bad-mid-path-type-params.rs | 1 + .../compile-fail/derive-no-std-not-supported.rs | 1 + src/test/compile-fail/gated-no-std.rs | 13 +++++++++++++ src/test/compile-fail/issue-19660.rs | 2 +- src/test/compile-fail/lang-item-missing.rs | 2 +- src/test/compile-fail/lint-dead-code-1.rs | 1 + src/test/compile-fail/privacy1.rs | 2 +- src/test/compile-fail/privacy2.rs | 2 +- src/test/compile-fail/privacy3.rs | 2 +- src/test/compile-fail/privacy4.rs | 2 +- ...ns-bounded-method-type-parameters-trait-bound.rs | 2 +- src/test/compile-fail/regions-struct-not-wf.rs | 1 + src/test/compile-fail/required-lang-item.rs | 2 +- src/test/compile-fail/weak-lang-item.rs | 1 + src/test/pretty/issue-4264.pp | 1 + src/test/run-make/mismatching-target-triples/bar.rs | 1 + src/test/run-make/mismatching-target-triples/foo.rs | 1 + src/test/run-make/no-duplicate-libs/bar.rs | 2 +- src/test/run-make/no-duplicate-libs/foo.rs | 2 +- .../run-make/pretty-expanded-hygiene/input.pp.rs | 1 + src/test/run-make/pretty-expanded-hygiene/input.rs | 1 + src/test/run-make/simd-ffi/simd.rs | 1 + src/test/run-make/target-specs/foo.rs | 2 +- src/test/run-pass/derive-no-std.rs | 1 + src/test/run-pass/for-loop-no-std.rs | 2 +- src/test/run-pass/format-no-std.rs | 2 +- src/test/run-pass/lang-item-public.rs | 2 +- src/test/run-pass/no-std-xcrate2.rs | 1 + src/test/run-pass/smallest-hello-world.rs | 2 +- src/test/run-pass/use.rs | 2 +- src/test/run-pass/vec-macro-no-std.rs | 2 +- 47 files changed, 76 insertions(+), 22 deletions(-) create mode 100644 src/test/compile-fail/gated-no-std.rs diff --git a/src/doc/reference.md b/src/doc/reference.md index 9851e1c28fb..15ae686d965 100644 --- a/src/doc/reference.md +++ b/src/doc/reference.md @@ -2467,6 +2467,12 @@ The currently implemented features of the reference compiler are: * `associated_types` - Allows type aliases in traits. Experimental. +* `no_std` - Allows the `#![no_std]` crate attribute, which disables the implicit + `extern crate std`. This typically requires use of the unstable APIs + behind the libstd "facade", such as libcore and libcollections. It + may also cause problems when using syntax extensions, including + `#[derive]`. + If a feature is promoted to a language feature, then all existing programs will start to receive compilation warnings about #[feature] directives which enabled the new feature (because the directive is no longer necessary). However, if a diff --git a/src/doc/trpl/unsafe.md b/src/doc/trpl/unsafe.md index 3acd1eefe89..b364d00f95c 100644 --- a/src/doc/trpl/unsafe.md +++ b/src/doc/trpl/unsafe.md @@ -433,6 +433,7 @@ attribute attached to the crate. ```ignore // a minimal library #![crate_type="lib"] +#![feature(no_std)] #![no_std] # // fn main() {} tricked you, rustdoc! ``` @@ -446,8 +447,8 @@ The function marked `#[start]` is passed the command line parameters in the same format as C: ``` +#![feature(lang_items, start, no_std)] #![no_std] -#![feature(lang_items, start)] // Pull in the system libc library for what crt0.o likely requires extern crate libc; @@ -473,6 +474,7 @@ correct ABI and the correct name, which requires overriding the compiler's name mangling too: ```ignore +#![feature(no_std)] #![no_std] #![no_main] #![feature(lang_items, start)] @@ -528,8 +530,8 @@ As an example, here is a program that will calculate the dot product of two vectors provided from C, using idiomatic Rust practices. ``` +#![feature(lang_items, start, no_std)] #![no_std] -#![feature(lang_items, start)] # extern crate libc; extern crate core; @@ -652,8 +654,8 @@ and one for deallocation. A freestanding program that uses the `Box` sugar for dynamic allocations via `malloc` and `free`: ``` +#![feature(lang_items, box_syntax, start, no_std)] #![no_std] -#![feature(lang_items, box_syntax, start)] extern crate libc; diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs index b3a7e3dbdeb..81391fd63eb 100644 --- a/src/liballoc/lib.rs +++ b/src/liballoc/lib.rs @@ -65,6 +65,7 @@ html_favicon_url = "http://www.rust-lang.org/favicon.ico", html_root_url = "http://doc.rust-lang.org/nightly/")] +#![feature(no_std)] #![no_std] #![feature(lang_items, unsafe_destructor)] #![feature(box_syntax)] diff --git a/src/libcollections/lib.rs b/src/libcollections/lib.rs index 05d84eda13d..f220724c42e 100644 --- a/src/libcollections/lib.rs +++ b/src/libcollections/lib.rs @@ -33,6 +33,7 @@ #![cfg_attr(test, feature(test))] #![cfg_attr(test, allow(deprecated))] // rand +#![feature(no_std)] #![no_std] #[macro_use] diff --git a/src/libcore/lib.rs b/src/libcore/lib.rs index 4c031b3e7cc..df4942b509b 100644 --- a/src/libcore/lib.rs +++ b/src/libcore/lib.rs @@ -56,6 +56,7 @@ html_root_url = "http://doc.rust-lang.org/nightly/", html_playground_url = "http://play.rust-lang.org/")] +#![feature(no_std)] #![no_std] #![allow(raw_pointer_derive)] #![deny(missing_docs)] diff --git a/src/liblibc/lib.rs b/src/liblibc/lib.rs index 060e7ef4033..38d5c5eb27a 100644 --- a/src/liblibc/lib.rs +++ b/src/liblibc/lib.rs @@ -16,6 +16,7 @@ #![cfg_attr(not(feature = "cargo-build"), staged_api)] #![cfg_attr(not(feature = "cargo-build"), feature(core))] #![feature(int_uint)] +#![feature(no_std)] #![no_std] #![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png", html_favicon_url = "http://www.rust-lang.org/favicon.ico", diff --git a/src/librand/lib.rs b/src/librand/lib.rs index 777b1ed8ceb..4113718cfd1 100644 --- a/src/librand/lib.rs +++ b/src/librand/lib.rs @@ -23,6 +23,7 @@ html_root_url = "http://doc.rust-lang.org/nightly/", html_playground_url = "http://play.rust-lang.org/")] #![feature(int_uint)] +#![feature(no_std)] #![no_std] #![unstable(feature = "rand")] #![feature(staged_api)] diff --git a/src/librustc_bitflags/lib.rs b/src/librustc_bitflags/lib.rs index 0139dfbd50b..370a5d48dec 100644 --- a/src/librustc_bitflags/lib.rs +++ b/src/librustc_bitflags/lib.rs @@ -12,6 +12,7 @@ #![feature(staged_api)] #![staged_api] #![crate_type = "rlib"] +#![feature(no_std)] #![no_std] #![unstable(feature = "rustc_private")] diff --git a/src/librustc_driver/test.rs b/src/librustc_driver/test.rs index 8761b5f72ec..9df90258462 100644 --- a/src/librustc_driver/test.rs +++ b/src/librustc_driver/test.rs @@ -43,7 +43,7 @@ struct RH<'a> { sub: &'a [RH<'a>] } -static EMPTY_SOURCE_STR: &'static str = "#![no_std]"; +static EMPTY_SOURCE_STR: &'static str = "#![feature(no_std)] #![no_std]"; struct ExpectErrorEmitter { messages: Vec diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index e5408615900..2a523356f62 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -124,6 +124,7 @@ #![cfg_attr(test, feature(test))] // Don't link to std. We are std. +#![feature(no_std)] #![no_std] #![deny(missing_docs)] diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 12efd959918..c8ab46ff8fd 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -122,7 +122,10 @@ static KNOWN_FEATURES: &'static [(&'static str, &'static str, Status)] = &[ ("staged_api", "1.0.0", Active), // Allows using items which are missing stability attributes - ("unmarked_api", "1.0.0", Active) + ("unmarked_api", "1.0.0", Active), + + // Allows using #![no_std] + ("no_std", "1.0.0", Active), ]; enum Status { @@ -466,6 +469,11 @@ impl<'a, 'v> Visitor<'v> for PostExpansionVisitor<'a> { attr.span, "language items are subject to change"); } + + if attr.check_name("no_std") { + self.gate_feature("no_std", attr.span, + "no_std is experimental"); + } } fn visit_pat(&mut self, pattern: &ast::Pat) { diff --git a/src/libunicode/lib.rs b/src/libunicode/lib.rs index 60fa8f0db11..54c8fcd205b 100644 --- a/src/libunicode/lib.rs +++ b/src/libunicode/lib.rs @@ -29,6 +29,7 @@ html_favicon_url = "http://www.rust-lang.org/favicon.ico", html_root_url = "http://doc.rust-lang.org/nightly/", html_playground_url = "http://play.rust-lang.org/")] +#![feature(no_std)] #![no_std] #![feature(slicing_syntax)] #![feature(int_uint)] diff --git a/src/test/auxiliary/lang-item-public.rs b/src/test/auxiliary/lang-item-public.rs index e99a8f0b877..834667968c8 100644 --- a/src/test/auxiliary/lang-item-public.rs +++ b/src/test/auxiliary/lang-item-public.rs @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(no_std)] #![no_std] #![feature(lang_items)] diff --git a/src/test/auxiliary/no_std_crate.rs b/src/test/auxiliary/no_std_crate.rs index 7cfae6d121d..d830aef54f5 100644 --- a/src/test/auxiliary/no_std_crate.rs +++ b/src/test/auxiliary/no_std_crate.rs @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(no_std)] #![no_std] pub fn foo() {} diff --git a/src/test/auxiliary/weak-lang-items.rs b/src/test/auxiliary/weak-lang-items.rs index 39462fdc1e5..fa254cb91ad 100644 --- a/src/test/auxiliary/weak-lang-items.rs +++ b/src/test/auxiliary/weak-lang-items.rs @@ -13,6 +13,7 @@ // This aux-file will require the eh_personality function to be codegen'd, but // it hasn't been defined just yet. Make sure we don't explode. +#![feature(no_std)] #![no_std] #![crate_type = "rlib"] diff --git a/src/test/compile-fail/associated-types-ICE-when-projecting-out-of-err.rs b/src/test/compile-fail/associated-types-ICE-when-projecting-out-of-err.rs index b35d5131c78..621f5ec9660 100644 --- a/src/test/compile-fail/associated-types-ICE-when-projecting-out-of-err.rs +++ b/src/test/compile-fail/associated-types-ICE-when-projecting-out-of-err.rs @@ -13,6 +13,7 @@ #![crate_type = "lib"] #![feature(lang_items)] +#![feature(no_std)] #![no_std] #[lang="sized"] diff --git a/src/test/compile-fail/bad-mid-path-type-params.rs b/src/test/compile-fail/bad-mid-path-type-params.rs index 79fe4e7165e..c91849ca53e 100644 --- a/src/test/compile-fail/bad-mid-path-type-params.rs +++ b/src/test/compile-fail/bad-mid-path-type-params.rs @@ -10,6 +10,7 @@ // ignore-tidy-linelength +#![feature(no_std)] #![no_std] #![feature(lang_items)] diff --git a/src/test/compile-fail/derive-no-std-not-supported.rs b/src/test/compile-fail/derive-no-std-not-supported.rs index 7dee78e2672..f82e7f3e36a 100644 --- a/src/test/compile-fail/derive-no-std-not-supported.rs +++ b/src/test/compile-fail/derive-no-std-not-supported.rs @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(no_std)] #![no_std] extern crate core; diff --git a/src/test/compile-fail/gated-no-std.rs b/src/test/compile-fail/gated-no-std.rs new file mode 100644 index 00000000000..893ba8a8a86 --- /dev/null +++ b/src/test/compile-fail/gated-no-std.rs @@ -0,0 +1,13 @@ +// Copyright 2105 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![no_std] //~ ERROR no_std is experimental + +fn main() {} diff --git a/src/test/compile-fail/issue-19660.rs b/src/test/compile-fail/issue-19660.rs index f83037d47bb..14601e67a77 100644 --- a/src/test/compile-fail/issue-19660.rs +++ b/src/test/compile-fail/issue-19660.rs @@ -10,7 +10,7 @@ // error-pattern: requires `copy` lang_item -#![feature(lang_items, start)] +#![feature(lang_items, start, no_std)] #![no_std] #[lang = "sized"] diff --git a/src/test/compile-fail/lang-item-missing.rs b/src/test/compile-fail/lang-item-missing.rs index 61d55fd0964..c7426fc6fc1 100644 --- a/src/test/compile-fail/lang-item-missing.rs +++ b/src/test/compile-fail/lang-item-missing.rs @@ -13,8 +13,8 @@ // error-pattern: requires `sized` lang_item +#![feature(start, no_std)] #![no_std] -#![feature(start)] #[start] fn start(argc: isize, argv: *const *const u8) -> isize { diff --git a/src/test/compile-fail/lint-dead-code-1.rs b/src/test/compile-fail/lint-dead-code-1.rs index b1bb28f7ce7..e91e6efd1cb 100644 --- a/src/test/compile-fail/lint-dead-code-1.rs +++ b/src/test/compile-fail/lint-dead-code-1.rs @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(no_std)] #![no_std] #![allow(unused_variables)] #![allow(non_camel_case_types)] diff --git a/src/test/compile-fail/privacy1.rs b/src/test/compile-fail/privacy1.rs index b2ee62ddabe..7ebbcc2809a 100644 --- a/src/test/compile-fail/privacy1.rs +++ b/src/test/compile-fail/privacy1.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(lang_items, start)] +#![feature(lang_items, start, no_std)] #![no_std] // makes debugging this test *a lot* easier (during resolve) #[lang="sized"] diff --git a/src/test/compile-fail/privacy2.rs b/src/test/compile-fail/privacy2.rs index b3d7321edab..7b4a2a3595b 100644 --- a/src/test/compile-fail/privacy2.rs +++ b/src/test/compile-fail/privacy2.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(start)] +#![feature(start, no_std)] #![no_std] // makes debugging this test *a lot* easier (during resolve) // Test to make sure that globs don't leak in regular `use` statements. diff --git a/src/test/compile-fail/privacy3.rs b/src/test/compile-fail/privacy3.rs index 245a9c21a6b..8c9de1fa25c 100644 --- a/src/test/compile-fail/privacy3.rs +++ b/src/test/compile-fail/privacy3.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(start)] +#![feature(start, no_std)] #![no_std] // makes debugging this test *a lot* easier (during resolve) // Test to make sure that private items imported through globs remain private diff --git a/src/test/compile-fail/privacy4.rs b/src/test/compile-fail/privacy4.rs index e35089b8606..bcb46663aa8 100644 --- a/src/test/compile-fail/privacy4.rs +++ b/src/test/compile-fail/privacy4.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(lang_items, start)] +#![feature(lang_items, start, no_std)] #![no_std] // makes debugging this test *a lot* easier (during resolve) #[lang = "sized"] pub trait Sized {} diff --git a/src/test/compile-fail/regions-bounded-method-type-parameters-trait-bound.rs b/src/test/compile-fail/regions-bounded-method-type-parameters-trait-bound.rs index acc721f26b3..74c2c6e584b 100644 --- a/src/test/compile-fail/regions-bounded-method-type-parameters-trait-bound.rs +++ b/src/test/compile-fail/regions-bounded-method-type-parameters-trait-bound.rs @@ -8,8 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(lang_items, no_std)] #![no_std] -#![feature(lang_items)] // Check that explicit region bounds are allowed on the various // nominal types (but not on other types) and that they are type diff --git a/src/test/compile-fail/regions-struct-not-wf.rs b/src/test/compile-fail/regions-struct-not-wf.rs index 3de137a9efb..3b8312a3019 100644 --- a/src/test/compile-fail/regions-struct-not-wf.rs +++ b/src/test/compile-fail/regions-struct-not-wf.rs @@ -10,6 +10,7 @@ // Various examples of structs whose fields are not well-formed. +#![feature(no_std)] #![no_std] #![allow(dead_code)] diff --git a/src/test/compile-fail/required-lang-item.rs b/src/test/compile-fail/required-lang-item.rs index ae561878e9b..7d252604883 100644 --- a/src/test/compile-fail/required-lang-item.rs +++ b/src/test/compile-fail/required-lang-item.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(lang_items)] +#![feature(lang_items, no_std)] #![no_std] #[lang="sized"] pub trait Sized {} diff --git a/src/test/compile-fail/weak-lang-item.rs b/src/test/compile-fail/weak-lang-item.rs index baac192cbf0..42df43934a8 100644 --- a/src/test/compile-fail/weak-lang-item.rs +++ b/src/test/compile-fail/weak-lang-item.rs @@ -13,6 +13,7 @@ // error-pattern: language item required, but not found: `stack_exhausted` // error-pattern: language item required, but not found: `eh_personality` +#![feature(no_std)] #![no_std] extern crate core; diff --git a/src/test/pretty/issue-4264.pp b/src/test/pretty/issue-4264.pp index a10e3449039..60660d48274 100644 --- a/src/test/pretty/issue-4264.pp +++ b/src/test/pretty/issue-4264.pp @@ -1,3 +1,4 @@ +#![feature(no_std)] #![no_std] #[prelude_import] use std::prelude::v1::*; diff --git a/src/test/run-make/mismatching-target-triples/bar.rs b/src/test/run-make/mismatching-target-triples/bar.rs index ed15e5d880a..8695ab58e5f 100755 --- a/src/test/run-make/mismatching-target-triples/bar.rs +++ b/src/test/run-make/mismatching-target-triples/bar.rs @@ -7,5 +7,6 @@ // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(no_std)] #![no_std] extern crate foo; diff --git a/src/test/run-make/mismatching-target-triples/foo.rs b/src/test/run-make/mismatching-target-triples/foo.rs index 8afa43710dd..afd4f298a97 100755 --- a/src/test/run-make/mismatching-target-triples/foo.rs +++ b/src/test/run-make/mismatching-target-triples/foo.rs @@ -7,5 +7,6 @@ // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(no_std)] #![no_std] #![crate_type = "lib"] diff --git a/src/test/run-make/no-duplicate-libs/bar.rs b/src/test/run-make/no-duplicate-libs/bar.rs index 11834756105..0bec6148189 100644 --- a/src/test/run-make/no-duplicate-libs/bar.rs +++ b/src/test/run-make/no-duplicate-libs/bar.rs @@ -8,8 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(lang_items, no_std)] #![no_std] -#![feature(lang_items)] #![crate_type = "dylib"] extern crate libc; diff --git a/src/test/run-make/no-duplicate-libs/foo.rs b/src/test/run-make/no-duplicate-libs/foo.rs index 61a2a51da08..9e8afdc5696 100644 --- a/src/test/run-make/no-duplicate-libs/foo.rs +++ b/src/test/run-make/no-duplicate-libs/foo.rs @@ -8,8 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(lang_items, no_std)] #![no_std] -#![feature(lang_items)] #![crate_type = "dylib"] extern crate libc; diff --git a/src/test/run-make/pretty-expanded-hygiene/input.pp.rs b/src/test/run-make/pretty-expanded-hygiene/input.pp.rs index 6febe2ff7c1..6aff4c9b3d5 100755 --- a/src/test/run-make/pretty-expanded-hygiene/input.pp.rs +++ b/src/test/run-make/pretty-expanded-hygiene/input.pp.rs @@ -9,6 +9,7 @@ // except according to those terms. // minimal junk +#![feature(no_std)] #![no_std] diff --git a/src/test/run-make/pretty-expanded-hygiene/input.rs b/src/test/run-make/pretty-expanded-hygiene/input.rs index c31b67b8043..a46fa12ac05 100755 --- a/src/test/run-make/pretty-expanded-hygiene/input.rs +++ b/src/test/run-make/pretty-expanded-hygiene/input.rs @@ -9,6 +9,7 @@ // except according to those terms. // minimal junk +#![feature(no_std)] #![no_std] macro_rules! foo { diff --git a/src/test/run-make/simd-ffi/simd.rs b/src/test/run-make/simd-ffi/simd.rs index 0195076fde4..834a2adf01f 100755 --- a/src/test/run-make/simd-ffi/simd.rs +++ b/src/test/run-make/simd-ffi/simd.rs @@ -12,6 +12,7 @@ #![crate_type = "lib"] // we can compile to a variety of platforms, because we don't need // cross-compiled standard libraries. +#![feature(no_std)] #![no_std] #![feature(simd, simd_ffi, link_llvm_intrinsics, lang_items)] diff --git a/src/test/run-make/target-specs/foo.rs b/src/test/run-make/target-specs/foo.rs index fd112034f40..365fc039a4e 100644 --- a/src/test/run-make/target-specs/foo.rs +++ b/src/test/run-make/target-specs/foo.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(lang_items)] +#![feature(lang_items, no_std)] #![no_std] #[lang="copy"] diff --git a/src/test/run-pass/derive-no-std.rs b/src/test/run-pass/derive-no-std.rs index c9bbb204ab7..d3034c2d485 100644 --- a/src/test/run-pass/derive-no-std.rs +++ b/src/test/run-pass/derive-no-std.rs @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(no_std)] #![no_std] extern crate core; diff --git a/src/test/run-pass/for-loop-no-std.rs b/src/test/run-pass/for-loop-no-std.rs index 5911e95349f..30c2aec33ad 100644 --- a/src/test/run-pass/for-loop-no-std.rs +++ b/src/test/run-pass/for-loop-no-std.rs @@ -8,8 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(lang_items, start, no_std)] #![no_std] -#![feature(lang_items, start)] extern crate "std" as other; diff --git a/src/test/run-pass/format-no-std.rs b/src/test/run-pass/format-no-std.rs index 43f7b6f4033..44d80490e69 100644 --- a/src/test/run-pass/format-no-std.rs +++ b/src/test/run-pass/format-no-std.rs @@ -8,8 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![feature(lang_items, start, no_std)] #![no_std] -#![feature(lang_items, start)] extern crate "std" as other; diff --git a/src/test/run-pass/lang-item-public.rs b/src/test/run-pass/lang-item-public.rs index 2d70fa0c819..350ec68a7d1 100644 --- a/src/test/run-pass/lang-item-public.rs +++ b/src/test/run-pass/lang-item-public.rs @@ -12,8 +12,8 @@ // ignore-android // ignore-windows #13361 +#![feature(lang_items, start, no_std)] #![no_std] -#![feature(lang_items, start)] extern crate "lang-item-public" as lang_lib; diff --git a/src/test/run-pass/no-std-xcrate2.rs b/src/test/run-pass/no-std-xcrate2.rs index dcafb5f451f..f5f34607aff 100644 --- a/src/test/run-pass/no-std-xcrate2.rs +++ b/src/test/run-pass/no-std-xcrate2.rs @@ -16,6 +16,7 @@ // This tests that libraries built with #[no_std] can be linked to crates with // #[no_std] and actually run. +#![feature(no_std)] #![no_std] extern crate no_std_crate; diff --git a/src/test/run-pass/smallest-hello-world.rs b/src/test/run-pass/smallest-hello-world.rs index 4913b34c4b3..197890c1277 100644 --- a/src/test/run-pass/smallest-hello-world.rs +++ b/src/test/run-pass/smallest-hello-world.rs @@ -12,8 +12,8 @@ // Smallest "hello world" with a libc runtime +#![feature(intrinsics, lang_items, start, no_std)] #![no_std] -#![feature(intrinsics, lang_items, start)] extern crate libc; diff --git a/src/test/run-pass/use.rs b/src/test/run-pass/use.rs index a2e1d8a5671..65a392e63c5 100644 --- a/src/test/run-pass/use.rs +++ b/src/test/run-pass/use.rs @@ -10,7 +10,7 @@ // except according to those terms. #![allow(unused_imports)] -#![feature(start)] +#![feature(start, no_std)] #![no_std] extern crate std; diff --git a/src/test/run-pass/vec-macro-no-std.rs b/src/test/run-pass/vec-macro-no-std.rs index c6c37017349..47b87fce2ab 100644 --- a/src/test/run-pass/vec-macro-no-std.rs +++ b/src/test/run-pass/vec-macro-no-std.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(lang_items, start)] +#![feature(lang_items, start, no_std)] #![no_std] extern crate "std" as other;