ci: add feature powerset & style: used #[cfg(all(..))]
This commit is contained in:
parent
9af5b1c78e
commit
c5002801c8
13
.github/workflows/build.yml
vendored
13
.github/workflows/build.yml
vendored
@ -88,6 +88,19 @@ jobs:
|
|||||||
command: test
|
command: test
|
||||||
args: ${{matrix.flags}}
|
args: ${{matrix.flags}}
|
||||||
|
|
||||||
|
feature_powerset:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: stable
|
||||||
|
override: true
|
||||||
|
- uses: taiki-e/install-action@v2
|
||||||
|
with:
|
||||||
|
tool: cargo-hack@0.5.25
|
||||||
|
- run: cargo hack check --feature-powerset --depth 2 --no-dev-deps --exclude-features "stdweb wasm-bindgen f32_float"
|
||||||
|
|
||||||
# no-std builds are a bit more extensive to test
|
# no-std builds are a bit more extensive to test
|
||||||
no_std_build:
|
no_std_build:
|
||||||
name: NoStdBuild
|
name: NoStdBuild
|
||||||
|
@ -28,7 +28,7 @@ impl Engine {
|
|||||||
global: &mut GlobalRuntimeState,
|
global: &mut GlobalRuntimeState,
|
||||||
caches: &mut Caches,
|
caches: &mut Caches,
|
||||||
scope: &mut Scope,
|
scope: &mut Scope,
|
||||||
this_ptr: Option<&mut Dynamic>,
|
mut this_ptr: Option<&mut Dynamic>,
|
||||||
_environ: Option<&EncapsulatedEnviron>,
|
_environ: Option<&EncapsulatedEnviron>,
|
||||||
fn_def: &ScriptFnDef,
|
fn_def: &ScriptFnDef,
|
||||||
args: &mut FnCallArgs,
|
args: &mut FnCallArgs,
|
||||||
@ -108,12 +108,19 @@ impl Engine {
|
|||||||
#[cfg(feature = "debugging")]
|
#[cfg(feature = "debugging")]
|
||||||
if self.is_debugger_registered() {
|
if self.is_debugger_registered() {
|
||||||
let node = crate::ast::Stmt::Noop(fn_def.body.position());
|
let node = crate::ast::Stmt::Noop(fn_def.body.position());
|
||||||
self.run_debugger(global, caches, scope, this_ptr, &node)?;
|
self.run_debugger(global, caches, scope, this_ptr.as_deref_mut(), &node)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Evaluate the function
|
// Evaluate the function
|
||||||
let mut _result: RhaiResult = self
|
let mut _result: RhaiResult = self
|
||||||
.eval_stmt_block(global, caches, scope, this_ptr, &fn_def.body, rewind_scope)
|
.eval_stmt_block(
|
||||||
|
global,
|
||||||
|
caches,
|
||||||
|
scope,
|
||||||
|
this_ptr.as_deref_mut(),
|
||||||
|
&fn_def.body,
|
||||||
|
rewind_scope,
|
||||||
|
)
|
||||||
.or_else(|err| match *err {
|
.or_else(|err| match *err {
|
||||||
// Convert return statement to return value
|
// Convert return statement to return value
|
||||||
ERR::Return(x, ..) => Ok(x),
|
ERR::Return(x, ..) => Ok(x),
|
||||||
|
51
src/lib.rs
51
src/lib.rs
@ -167,8 +167,7 @@ const MAX_USIZE_INT: INT = INT::MAX;
|
|||||||
const MAX_USIZE_INT: INT = usize::MAX as INT;
|
const MAX_USIZE_INT: INT = usize::MAX as INT;
|
||||||
|
|
||||||
/// The maximum integer that can fit into a [`usize`].
|
/// The maximum integer that can fit into a [`usize`].
|
||||||
#[cfg(feature = "only_i32")]
|
#[cfg(all(feature = "only_i32", target_pointer_width = "32"))]
|
||||||
#[cfg(target_pointer_width = "32")]
|
|
||||||
const MAX_USIZE_INT: INT = INT::MAX;
|
const MAX_USIZE_INT: INT = INT::MAX;
|
||||||
|
|
||||||
/// Number of bits in [`INT`].
|
/// Number of bits in [`INT`].
|
||||||
@ -187,8 +186,7 @@ const INT_BYTES: usize = std::mem::size_of::<INT>();
|
|||||||
/// Not available under `no_float`.
|
/// Not available under `no_float`.
|
||||||
///
|
///
|
||||||
/// If the `f32_float` feature is enabled, this will be [`f32`] instead.
|
/// If the `f32_float` feature is enabled, this will be [`f32`] instead.
|
||||||
#[cfg(not(feature = "no_float"))]
|
#[cfg(all(not(feature = "no_float"), not(feature = "f32_float")))]
|
||||||
#[cfg(not(feature = "f32_float"))]
|
|
||||||
pub type FLOAT = f64;
|
pub type FLOAT = f64;
|
||||||
|
|
||||||
/// The system floating-point type.
|
/// The system floating-point type.
|
||||||
@ -197,15 +195,13 @@ pub type FLOAT = f64;
|
|||||||
/// Not available under `no_float`.
|
/// Not available under `no_float`.
|
||||||
///
|
///
|
||||||
/// If the `f32_float` feature is not used, this will be `f64` instead.
|
/// If the `f32_float` feature is not used, this will be `f64` instead.
|
||||||
#[cfg(not(feature = "no_float"))]
|
#[cfg(all(not(feature = "no_float"), feature = "f32_float"))]
|
||||||
#[cfg(feature = "f32_float")]
|
|
||||||
pub type FLOAT = f32;
|
pub type FLOAT = f32;
|
||||||
|
|
||||||
/// Number of bytes that make up a [`FLOAT`].
|
/// Number of bytes that make up a [`FLOAT`].
|
||||||
///
|
///
|
||||||
/// It is 8 unless the `f32_float` feature is enabled when it will be 4.
|
/// It is 8 unless the `f32_float` feature is enabled when it will be 4.
|
||||||
#[cfg(not(feature = "no_float"))]
|
#[cfg(all(not(feature = "no_float"), not(feature = "no_index")))]
|
||||||
#[cfg(not(feature = "no_index"))]
|
|
||||||
const FLOAT_BYTES: usize = std::mem::size_of::<FLOAT>();
|
const FLOAT_BYTES: usize = std::mem::size_of::<FLOAT>();
|
||||||
|
|
||||||
/// An exclusive integer range.
|
/// An exclusive integer range.
|
||||||
@ -218,8 +214,7 @@ type InclusiveRange = std::ops::RangeInclusive<INT>;
|
|||||||
pub use api::build_type::{CustomType, TypeBuilder};
|
pub use api::build_type::{CustomType, TypeBuilder};
|
||||||
#[cfg(not(feature = "no_custom_syntax"))]
|
#[cfg(not(feature = "no_custom_syntax"))]
|
||||||
pub use api::custom_syntax::Expression;
|
pub use api::custom_syntax::Expression;
|
||||||
#[cfg(not(feature = "no_std"))]
|
#[cfg(all(not(feature = "no_std"), target_family = "wasm"))]
|
||||||
#[cfg(not(target_family = "wasm"))]
|
|
||||||
pub use api::files::{eval_file, run_file};
|
pub use api::files::{eval_file, run_file};
|
||||||
pub use api::{eval::eval, events::VarDefInfo, run::run};
|
pub use api::{eval::eval, events::VarDefInfo, run::run};
|
||||||
pub use ast::{FnAccess, AST};
|
pub use ast::{FnAccess, AST};
|
||||||
@ -317,8 +312,7 @@ pub type OptimizationLevel = ();
|
|||||||
#[cfg(feature = "internals")]
|
#[cfg(feature = "internals")]
|
||||||
pub use types::dynamic::{AccessMode, DynamicReadLock, DynamicWriteLock, Variant};
|
pub use types::dynamic::{AccessMode, DynamicReadLock, DynamicWriteLock, Variant};
|
||||||
|
|
||||||
#[cfg(feature = "internals")]
|
#[cfg(all(feature = "internals", not(feature = "no_float")))]
|
||||||
#[cfg(not(feature = "no_float"))]
|
|
||||||
pub use types::FloatWrapper;
|
pub use types::FloatWrapper;
|
||||||
|
|
||||||
#[cfg(feature = "internals")]
|
#[cfg(feature = "internals")]
|
||||||
@ -340,12 +334,10 @@ pub use ast::{
|
|||||||
Ident, OpAssignment, RangeCase, ScriptFnDef, Stmt, StmtBlock, SwitchCasesCollection,
|
Ident, OpAssignment, RangeCase, ScriptFnDef, Stmt, StmtBlock, SwitchCasesCollection,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(feature = "internals")]
|
#[cfg(all(feature = "internals", not(feature = "no_custom_syntax")))]
|
||||||
#[cfg(not(feature = "no_custom_syntax"))]
|
|
||||||
pub use ast::CustomExpr;
|
pub use ast::CustomExpr;
|
||||||
|
|
||||||
#[cfg(feature = "internals")]
|
#[cfg(all(feature = "internals", not(feature = "no_module")))]
|
||||||
#[cfg(not(feature = "no_module"))]
|
|
||||||
pub use ast::Namespace;
|
pub use ast::Namespace;
|
||||||
|
|
||||||
#[cfg(feature = "internals")]
|
#[cfg(feature = "internals")]
|
||||||
@ -358,8 +350,7 @@ pub use eval::{Caches, FnResolutionCache, FnResolutionCacheEntry, GlobalRuntimeS
|
|||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
pub use func::{locked_read, locked_write, CallableFunction, NativeCallContextStore};
|
pub use func::{locked_read, locked_write, CallableFunction, NativeCallContextStore};
|
||||||
|
|
||||||
#[cfg(feature = "internals")]
|
#[cfg(all(feature = "internals", feature = "metadata"))]
|
||||||
#[cfg(feature = "metadata")]
|
|
||||||
pub use api::definitions::Definitions;
|
pub use api::definitions::Definitions;
|
||||||
|
|
||||||
/// Number of items to keep inline for [`StaticVec`].
|
/// Number of items to keep inline for [`StaticVec`].
|
||||||
@ -462,34 +453,26 @@ type SmartString = smartstring::SmartString<smartstring::LazyCompact>;
|
|||||||
|
|
||||||
// Compiler guards against mutually-exclusive feature flags
|
// Compiler guards against mutually-exclusive feature flags
|
||||||
|
|
||||||
#[cfg(feature = "no_float")]
|
#[cfg(all(feature = "no_float", feature = "f32_float"))]
|
||||||
#[cfg(feature = "f32_float")]
|
|
||||||
compile_error!("`f32_float` cannot be used with `no_float`");
|
compile_error!("`f32_float` cannot be used with `no_float`");
|
||||||
|
|
||||||
#[cfg(feature = "only_i32")]
|
#[cfg(all(feature = "only_i32", feature = "only_i64"))]
|
||||||
#[cfg(feature = "only_i64")]
|
|
||||||
compile_error!("`only_i32` and `only_i64` cannot be used together");
|
compile_error!("`only_i32` and `only_i64` cannot be used together");
|
||||||
|
|
||||||
#[cfg(feature = "no_std")]
|
#[cfg(all(feature = "no_std", feature = "wasm-bindgen"))]
|
||||||
#[cfg(feature = "wasm-bindgen")]
|
|
||||||
compile_error!("`wasm-bindgen` cannot be used with `no-std`");
|
compile_error!("`wasm-bindgen` cannot be used with `no-std`");
|
||||||
|
|
||||||
#[cfg(feature = "no_std")]
|
#[cfg(all(feature = "no_std", feature = "stdweb"))]
|
||||||
#[cfg(feature = "stdweb")]
|
|
||||||
compile_error!("`stdweb` cannot be used with `no-std`");
|
compile_error!("`stdweb` cannot be used with `no-std`");
|
||||||
|
|
||||||
#[cfg(target_family = "wasm")]
|
#[cfg(all(target_family = "wasm", feature = "no_std"))]
|
||||||
#[cfg(feature = "no_std")]
|
|
||||||
compile_error!("`no_std` cannot be used for WASM target");
|
compile_error!("`no_std` cannot be used for WASM target");
|
||||||
|
|
||||||
#[cfg(not(target_family = "wasm"))]
|
#[cfg(all(not(target_family = "wasm"), feature = "wasm-bindgen"))]
|
||||||
#[cfg(feature = "wasm-bindgen")]
|
|
||||||
compile_error!("`wasm-bindgen` cannot be used for non-WASM target");
|
compile_error!("`wasm-bindgen` cannot be used for non-WASM target");
|
||||||
|
|
||||||
#[cfg(not(target_family = "wasm"))]
|
#[cfg(all(not(target_family = "wasm"), feature = "stdweb"))]
|
||||||
#[cfg(feature = "stdweb")]
|
|
||||||
compile_error!("`stdweb` cannot be used non-WASM target");
|
compile_error!("`stdweb` cannot be used non-WASM target");
|
||||||
|
|
||||||
#[cfg(feature = "wasm-bindgen")]
|
#[cfg(all(feature = "wasm-bindgen", feature = "stdweb"))]
|
||||||
#[cfg(feature = "stdweb")]
|
|
||||||
compile_error!("`wasm-bindgen` and `stdweb` cannot be used together");
|
compile_error!("`wasm-bindgen` and `stdweb` cannot be used together");
|
||||||
|
Loading…
Reference in New Issue
Block a user