Skip to content

Commit fa953c8

Browse files
committed
ci(enum): exclude enum feature on PHP 8.0
Refs: #178
1 parent f8f98db commit fa953c8

File tree

6 files changed

+23
-15
lines changed

6 files changed

+23
-15
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ jobs:
8080
env:
8181
DOCS_RS: ""
8282
run: cargo clean && cargo build
83+
8384
build:
8485
name: Build and Test
8586
runs-on: ${{ matrix.os }}
@@ -155,12 +156,12 @@ jobs:
155156
- name: Build
156157
env:
157158
EXT_PHP_RS_TEST: ""
158-
run: cargo build --release --features closure,anyhow --all
159+
run: cargo build --release --features closure,anyhow --workspace ${{ matrix.php == '8.0' && '--no-default-features' || '' }}
159160
# Test
160161
- name: Test inline examples
161162
# Macos fails on unstable rust. We skip the inline examples test for now.
162163
if: "!(contains(matrix.os, 'macos') && matrix.rust == 'nightly')"
163-
run: cargo test --release --all --features closure,anyhow --no-fail-fast
164+
run: cargo test --release --workspace --features closure,anyhow --no-fail-fast ${{ matrix.php == '8.0' && '--no-default-features' || '' }}
164165
build-zts:
165166
name: Build with ZTS
166167
runs-on: ubuntu-latest

crates/cli/Cargo.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ edition = "2018"
1111
categories = ["api-bindings", "command-line-interface"]
1212

1313
[dependencies]
14-
ext-php-rs = { version = "0.14", path = "../../" }
14+
ext-php-rs = { version = "0.14", default-features = false, path = "../../" }
1515

1616
clap = { version = "4.0", features = ["derive"] }
1717
anyhow = "1"
@@ -22,3 +22,7 @@ semver = "1.0"
2222

2323
[lints.rust]
2424
missing_docs = "warn"
25+
26+
[features]
27+
default = ["enum"]
28+
enum = ["ext-php-rs/enum"]

src/builders/enum_builder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ impl EnumBuilder {
7070
};
7171

7272
for case in self.cases {
73-
let name = ZendStr::new(case.name, true);
73+
let name = ZendStr::new_interned(case.name, true);
7474
let value = match &case.discriminant {
7575
Some(value) => {
7676
let value: Zval = value.try_into()?;

src/flags.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
33
use bitflags::bitflags;
44

5+
#[cfg(php81)]
6+
use crate::ffi::ZEND_ACC_ENUM;
57
#[cfg(not(php82))]
68
use crate::ffi::ZEND_ACC_REUSE_GET_ITERATOR;
79
use crate::ffi::{
@@ -14,16 +16,16 @@ use crate::ffi::{
1416
PHP_INI_PERDIR, PHP_INI_SYSTEM, PHP_INI_USER, ZEND_ACC_ABSTRACT, ZEND_ACC_ANON_CLASS,
1517
ZEND_ACC_CALL_VIA_TRAMPOLINE, ZEND_ACC_CHANGED, ZEND_ACC_CLOSURE, ZEND_ACC_CONSTANTS_UPDATED,
1618
ZEND_ACC_CTOR, ZEND_ACC_DEPRECATED, ZEND_ACC_DONE_PASS_TWO, ZEND_ACC_EARLY_BINDING,
17-
ZEND_ACC_ENUM, ZEND_ACC_FAKE_CLOSURE, ZEND_ACC_FINAL, ZEND_ACC_GENERATOR,
18-
ZEND_ACC_HAS_FINALLY_BLOCK, ZEND_ACC_HAS_RETURN_TYPE, ZEND_ACC_HAS_TYPE_HINTS,
19-
ZEND_ACC_HEAP_RT_CACHE, ZEND_ACC_IMMUTABLE, ZEND_ACC_IMPLICIT_ABSTRACT_CLASS,
20-
ZEND_ACC_INTERFACE, ZEND_ACC_LINKED, ZEND_ACC_NEARLY_LINKED, ZEND_ACC_NEVER_CACHE,
21-
ZEND_ACC_NO_DYNAMIC_PROPERTIES, ZEND_ACC_PRELOADED, ZEND_ACC_PRIVATE, ZEND_ACC_PROMOTED,
22-
ZEND_ACC_PROTECTED, ZEND_ACC_PUBLIC, ZEND_ACC_RESOLVED_INTERFACES, ZEND_ACC_RESOLVED_PARENT,
23-
ZEND_ACC_RETURN_REFERENCE, ZEND_ACC_STATIC, ZEND_ACC_STRICT_TYPES, ZEND_ACC_TOP_LEVEL,
24-
ZEND_ACC_TRAIT, ZEND_ACC_TRAIT_CLONE, ZEND_ACC_UNRESOLVED_VARIANCE, ZEND_ACC_USES_THIS,
25-
ZEND_ACC_USE_GUARDS, ZEND_ACC_VARIADIC, ZEND_EVAL_CODE, ZEND_HAS_STATIC_IN_METHODS,
26-
ZEND_INTERNAL_FUNCTION, ZEND_USER_FUNCTION, Z_TYPE_FLAGS_SHIFT, _IS_BOOL,
19+
ZEND_ACC_FAKE_CLOSURE, ZEND_ACC_FINAL, ZEND_ACC_GENERATOR, ZEND_ACC_HAS_FINALLY_BLOCK,
20+
ZEND_ACC_HAS_RETURN_TYPE, ZEND_ACC_HAS_TYPE_HINTS, ZEND_ACC_HEAP_RT_CACHE, ZEND_ACC_IMMUTABLE,
21+
ZEND_ACC_IMPLICIT_ABSTRACT_CLASS, ZEND_ACC_INTERFACE, ZEND_ACC_LINKED, ZEND_ACC_NEARLY_LINKED,
22+
ZEND_ACC_NEVER_CACHE, ZEND_ACC_NO_DYNAMIC_PROPERTIES, ZEND_ACC_PRELOADED, ZEND_ACC_PRIVATE,
23+
ZEND_ACC_PROMOTED, ZEND_ACC_PROTECTED, ZEND_ACC_PUBLIC, ZEND_ACC_RESOLVED_INTERFACES,
24+
ZEND_ACC_RESOLVED_PARENT, ZEND_ACC_RETURN_REFERENCE, ZEND_ACC_STATIC, ZEND_ACC_STRICT_TYPES,
25+
ZEND_ACC_TOP_LEVEL, ZEND_ACC_TRAIT, ZEND_ACC_TRAIT_CLONE, ZEND_ACC_UNRESOLVED_VARIANCE,
26+
ZEND_ACC_USES_THIS, ZEND_ACC_USE_GUARDS, ZEND_ACC_VARIADIC, ZEND_EVAL_CODE,
27+
ZEND_HAS_STATIC_IN_METHODS, ZEND_INTERNAL_FUNCTION, ZEND_USER_FUNCTION, Z_TYPE_FLAGS_SHIFT,
28+
_IS_BOOL,
2729
};
2830

2931
use std::{convert::TryFrom, fmt::Display};

tests/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ cfg-if = "1.0.1"
1010
ext-php-rs = { path = "../", default-features = false, features = ["closure"] }
1111

1212
[features]
13+
default = ["enum"]
1314
enum = ["ext-php-rs/enum"]
1415

1516
[lib]

tests/src/integration/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ mod test {
3131
fn setup() {
3232
BUILD.call_once(|| {
3333
let mut command = Command::new("cargo");
34-
command.arg("build");
34+
command.arg("build").arg("--no-default-features");
3535
#[cfg(feature = "enum")]
3636
{
3737
command.arg("--features=enum");

0 commit comments

Comments
 (0)