summaryrefslogtreecommitdiff
path: root/src/codegen/mod.rs
diff options
context:
space:
mode:
authorColin Wallace <colin@mooooo.ooo>2019-06-04 16:35:56 -0700
committerEmilio Cobos Álvarez <emilio@crisal.io>2019-06-06 09:50:47 -0400
commitd55cce5078bf3b38cf69acbb5dd7f9c842af0356 (patch)
treeb27f9bb88101e5b7528110b919cc9df329325262 /src/codegen/mod.rs
parent4857d77a879d5b8330b3d6c2716e4f449d494bc5 (diff)
For rust-target >= 1.30, make __IncompleteArrayField::new a const fn
Diffstat (limited to 'src/codegen/mod.rs')
-rw-r--r--src/codegen/mod.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index 693215a5..ceb2f5b8 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -3770,6 +3770,14 @@ mod utils {
) {
let prefix = ctx.trait_prefix();
+ // If the target supports `const fn`, declare eligible functions
+ // as `const fn` else just `fn`.
+ let const_fn = if ctx.options().rust_features().min_const_fn {
+ quote!{ const fn }
+ } else {
+ quote!{ fn }
+ };
+
let incomplete_array_decl = quote! {
#[repr(C)]
#[derive(Default)]
@@ -3780,7 +3788,7 @@ mod utils {
let incomplete_array_impl = quote! {
impl<T> __IncompleteArrayField<T> {
#[inline]
- pub fn new() -> Self {
+ pub #const_fn new() -> Self {
__IncompleteArrayField(::#prefix::marker::PhantomData, [])
}