This change starts denying `*T` in the parser. All code using `*T` should ensure
that the FFI call does indeed take `const T*` on the other side before renaming
the type to `*const T`.
Otherwise, all code can rename `*T` to `*const T`.
[breaking-change]
#![no_std]
#![feature(lang_items, phase, unsafe_destructor)]
-#![allow(unknown_features)] // NOTE: remove after a stage0 snap
#[phase(plugin, link)]
extern crate core;
#![feature(globs, intrinsics, lang_items, macro_rules, managed_boxes, phase)]
#![feature(simd, unsafe_destructor)]
#![deny(missing_doc)]
-#![allow(unknown_features)] // NOTE: remove after stage0 snapshot
#[cfg(test)] extern crate realcore = "core";
#[cfg(test)] extern crate libc;
macro_rules! shl_impl(
($($t:ty)*) => ($(
- #[cfg(stage0)]
- impl Shl<$t, $t> for $t {
- #[inline]
- fn shl(&self, other: &$t) -> $t { (*self) << (*other) }
- }
- #[cfg(not(stage0), not(test))]
impl Shl<$t, $t> for $t {
#[inline]
fn shl(&self, other: &$t) -> $t {
macro_rules! shr_impl(
($($t:ty)*) => ($(
- #[cfg(stage0, not(test))]
- impl Shr<$t, $t> for $t {
- #[inline]
- fn shr(&self, other: &$t) -> $t { (*self) >> (*other) }
- }
- #[cfg(not(stage0), not(test))]
impl Shr<$t, $t> for $t {
#[inline]
fn shr(&self, other: &$t) -> $t { (*self) >> (*other as uint) }
#![deny(unused_result, unused_must_use)]
#![allow(non_camel_case_types, deprecated)]
-#![allow(unknown_features)] // NOTE: remove after a stage0 snap
#![feature(default_type_params, lang_items)]
// NB this crate explicitly does *not* allow glob imports, please seriously
html_favicon_url = "http://www.rust-lang.org/favicon.ico",
html_root_url = "http://doc.rust-lang.org/")]
#![feature(intrinsics)]
-#![allow(unknown_features)] // NOTE: remove after stage0 snapshot
#![no_std]
#![experimental]
#![feature(macro_rules, phase, globs, thread_local, managed_boxes, asm)]
#![feature(linkage, lang_items, unsafe_destructor)]
-#![allow(unknown_features)] // NOTE: remove after stage0 snapshot
#![no_std]
#![experimental]
#![no_std]
#![allow(deprecated)]
-#![allow(unknown_features)] // NOTE: remove after stage0 snapshot
#![deny(missing_doc)]
// When testing libstd, bring in libuv as the I/O backend so tests can print
} else if self.eat_keyword(keywords::Const) {
MutImmutable
} else {
- // NOTE: after a stage0 snap this should turn into a span_err.
+ let span = self.last_span;
+ self.span_err(span,
+ "bare raw pointers are no longer allowed, you should \
+ likely use `*mut T`, but otherwise `*T` is now \
+ known as `*const T`");
MutImmutable
};
let t = self.parse_ty(true);
+S 2014-06-25 bab614f
+ freebsd-x86_64 14cb361c8fdefa2534bb6776a04815c08680ecd6
+ linux-i386 8fec4845626c557431a4aa7bfb2b5cfc65ad9eda
+ linux-x86_64 2304534c8e2431a5da2086164dd3a3e019b87ecd
+ macos-i386 d9e348cc1f9021f0f8e8907880fded80afb5db5b
+ macos-x86_64 aa790195d1f8191dce2f990ec4323bcc69566288
+ winnt-i386 19b67f8a583516553a4fe62e453eecc5c17aff8e
+
S 2014-06-21 db9af1d
freebsd-x86_64 ef2bd0fc0b0efa2bd6f5c1eaa60a2ec8df533254
linux-i386 84339ea0f796ae468ef86797ef4587274bec19ea