parent
ce1a7e41f9
commit
f5e0b760d0
@ -166,12 +166,6 @@ metadata_conflicting_alloc_error_handler =
|
||||
metadata_global_alloc_required =
|
||||
no global memory allocator found but one is required; link to std or add `#[global_allocator]` to a static item that implements the GlobalAlloc trait
|
||||
|
||||
metadata_alloc_func_required =
|
||||
`#[alloc_error_handler]` function required, but not found
|
||||
|
||||
metadata_missing_alloc_error_handler =
|
||||
use `#![feature(default_alloc_error_handler)]` for a default error handler
|
||||
|
||||
metadata_no_transitive_needs_dep =
|
||||
the crate `{$crate_name}` cannot depend on a crate that needs {$needs_crate_name}, but it depends on `{$deps_crate_name}`
|
||||
|
||||
|
@ -126,6 +126,8 @@ macro_rules! declare_features {
|
||||
(accepted, copy_closures, "1.26.0", Some(44490), None),
|
||||
/// Allows `crate` in paths.
|
||||
(accepted, crate_in_paths, "1.30.0", Some(45477), None),
|
||||
/// Allows rustc to inject a default alloc_error_handler
|
||||
(accepted, default_alloc_error_handler, "CURRENT_RUSTC_VERSION", Some(66741), None),
|
||||
/// Allows using assigning a default type to type parameters in algebraic data type definitions.
|
||||
(accepted, default_type_params, "1.0.0", None, None),
|
||||
/// Allows `#[deprecated]` attribute.
|
||||
|
@ -366,8 +366,6 @@ pub fn set(&self, features: &mut Features, span: Span) {
|
||||
(active, debugger_visualizer, "1.62.0", Some(95939), None),
|
||||
/// Allows declarative macros 2.0 (`macro`).
|
||||
(active, decl_macro, "1.17.0", Some(39412), None),
|
||||
/// Allows rustc to inject a default alloc_error_handler
|
||||
(active, default_alloc_error_handler, "1.48.0", Some(66741), None),
|
||||
/// Allows default type parameters to influence type inference.
|
||||
(active, default_type_parameter_fallback, "1.3.0", Some(27336), None),
|
||||
/// Allows using `#[deprecated_safe]` to deprecate the safeness of a function or trait
|
||||
|
@ -1,10 +1,9 @@
|
||||
//! Validates all used crates and extern libraries and loads their metadata
|
||||
|
||||
use crate::errors::{
|
||||
AllocFuncRequired, ConflictingAllocErrorHandler, ConflictingGlobalAlloc, CrateNotPanicRuntime,
|
||||
GlobalAllocRequired, MissingAllocErrorHandler, NoMultipleAllocErrorHandler,
|
||||
NoMultipleGlobalAlloc, NoPanicStrategy, NoTransitiveNeedsDep, NotProfilerRuntime,
|
||||
ProfilerBuiltinsNeedsCore,
|
||||
ConflictingAllocErrorHandler, ConflictingGlobalAlloc, CrateNotPanicRuntime,
|
||||
GlobalAllocRequired, NoMultipleAllocErrorHandler, NoMultipleGlobalAlloc, NoPanicStrategy,
|
||||
NoTransitiveNeedsDep, NotProfilerRuntime, ProfilerBuiltinsNeedsCore,
|
||||
};
|
||||
use crate::locator::{CrateError, CrateLocator, CratePaths};
|
||||
use crate::rmeta::{CrateDep, CrateMetadata, CrateNumMap, CrateRoot, MetadataBlob};
|
||||
@ -892,10 +891,6 @@ fn inject_allocator_crate(&mut self, krate: &ast::Crate) {
|
||||
} else {
|
||||
// The alloc crate provides a default allocation error handler if
|
||||
// one isn't specified.
|
||||
if !self.sess.features_untracked().default_alloc_error_handler {
|
||||
self.sess.emit_err(AllocFuncRequired);
|
||||
self.sess.emit_note(MissingAllocErrorHandler);
|
||||
}
|
||||
self.cstore.alloc_error_handler_kind = Some(AllocatorKind::Default);
|
||||
}
|
||||
}
|
||||
|
@ -371,14 +371,6 @@ pub struct ConflictingAllocErrorHandler {
|
||||
#[diag(metadata_global_alloc_required)]
|
||||
pub struct GlobalAllocRequired;
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(metadata_alloc_func_required)]
|
||||
pub struct AllocFuncRequired;
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(metadata_missing_alloc_error_handler)]
|
||||
pub struct MissingAllocErrorHandler;
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(metadata_no_transitive_needs_dep)]
|
||||
pub struct NoTransitiveNeedsDep<'a> {
|
||||
|
@ -6,10 +6,8 @@
|
||||
// only-linux
|
||||
// compile-flags:-C panic=abort
|
||||
// aux-build:helper.rs
|
||||
// gate-test-default_alloc_error_handler
|
||||
|
||||
#![feature(start, rustc_private, new_uninit, panic_info_message, lang_items)]
|
||||
#![feature(default_alloc_error_handler)]
|
||||
#![no_std]
|
||||
|
||||
extern crate alloc;
|
||||
|
@ -1,23 +0,0 @@
|
||||
// compile-flags: -C panic=abort
|
||||
// no-prefer-dynamic
|
||||
|
||||
#![no_std]
|
||||
#![crate_type = "staticlib"]
|
||||
#![feature(alloc_error_handler)]
|
||||
|
||||
#[panic_handler]
|
||||
fn panic(_: &core::panic::PanicInfo) -> ! {
|
||||
loop {}
|
||||
}
|
||||
|
||||
extern crate alloc;
|
||||
|
||||
#[global_allocator]
|
||||
static A: MyAlloc = MyAlloc;
|
||||
|
||||
struct MyAlloc;
|
||||
|
||||
unsafe impl core::alloc::GlobalAlloc for MyAlloc {
|
||||
unsafe fn alloc(&self, _: core::alloc::Layout) -> *mut u8 { 0 as _ }
|
||||
unsafe fn dealloc(&self, _: *mut u8, _: core::alloc::Layout) {}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
error: `#[alloc_error_handler]` function required, but not found
|
||||
|
||||
note: use `#![feature(default_alloc_error_handler)]` for a default error handler
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Reference in New Issue
Block a user