about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexander Light <allight@cs.brown.edu>2015-02-05 10:51:17 -0500
committerAlexander Light <allight@cs.brown.edu>2015-02-05 11:48:28 -0500
commit8fded29586041ac8877bc35dadc60bdf873459a0 (patch)
tree83e17ee35c8fabb91dfba612bd5b91be287b5e11
parentac134f7ca435551964996ee88319241cd3c7c110 (diff)
Made external_crates feature work again.
Also added test for it.

Fixes #21928
-rw-r--r--src/liballoc/lib.rs4
-rw-r--r--src/test/run-make/alloc-extern-crates/Makefile5
-rw-r--r--src/test/run-make/alloc-extern-crates/fakealloc.rs36
3 files changed, 44 insertions, 1 deletions
diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs
index 99423349020..d99a5e2cc6d 100644
--- a/src/liballoc/lib.rs
+++ b/src/liballoc/lib.rs
@@ -73,7 +73,9 @@
 #![feature(unboxed_closures)]
 #![feature(core)]
 #![feature(hash)]
-#![feature(libc)]
+#![cfg_attr(all(not(feature = "external_funcs"), not(feature = "external_crate")),
+            feature(libc))]
+
 
 #[macro_use]
 extern crate core;
diff --git a/src/test/run-make/alloc-extern-crates/Makefile b/src/test/run-make/alloc-extern-crates/Makefile
new file mode 100644
index 00000000000..b8c52378554
--- /dev/null
+++ b/src/test/run-make/alloc-extern-crates/Makefile
@@ -0,0 +1,5 @@
+-include ../tools.mk
+
+all:
+	$(RUSTC) fakealloc.rs
+	$(RUSTC) ../../../liballoc/lib.rs --cfg feature=\"external_crate\" --extern external=$(TMPDIR)/$(shell $(RUSTC) --print file-names fakealloc.rs)
diff --git a/src/test/run-make/alloc-extern-crates/fakealloc.rs b/src/test/run-make/alloc-extern-crates/fakealloc.rs
new file mode 100644
index 00000000000..563a527b941
--- /dev/null
+++ b/src/test/run-make/alloc-extern-crates/fakealloc.rs
@@ -0,0 +1,36 @@
+// Copyright 2014 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 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![crate_type = "rlib"]
+#![no_std]
+#![feature(core)]
+extern crate core;
+
+
+#[inline]
+pub unsafe fn allocate(_size: usize, _align: usize) -> *mut u8 { 0 as *mut u8 }
+
+#[inline]
+pub unsafe fn deallocate(_ptr: *mut u8, _old_size: usize, _align: usize) { }
+
+#[inline]
+pub unsafe fn reallocate(_ptr: *mut u8, _old_size: usize, _size: usize, _align: usize) -> *mut u8 {
+    0 as *mut u8
+}
+
+#[inline]
+pub unsafe fn reallocate_inplace(_ptr: *mut u8, old_size: usize, _size: usize,
+                                    _align: usize) -> usize { old_size }
+
+#[inline]
+pub fn usable_size(size: usize, _align: usize) -> usize { size }
+
+#[inline]
+pub fn stats_print() { }