diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 4ff13f1c3..499110aca 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -50,4 +50,4 @@ jobs:
run: docker compose -f docker-compose.yml run test_runner vendor/bin/phpunit --no-progress --testsuite Structure
- name: run cs fixer
- run: docker run --rm -v .:/opt/project -w /opt/project php:8.3-cli sh -c 'curl -sS https://getcomposer.org/installer | php && php composer.phar run cs'
+ run: docker run --rm -e PHP_CS_FIXER_IGNORE_ENV=1 -v .:/opt/project -w /opt/project php:8.4-cli sh -c 'curl -sS https://getcomposer.org/installer | php && php composer.phar run cs'
diff --git a/Core/Core.php b/Core/Core.php
index 82adc9244..2ed51d827 100755
--- a/Core/Core.php
+++ b/Core/Core.php
@@ -445,7 +445,6 @@ function property_exists($object_or_class, string $property): bool {}
* @link https://secure.php.net/manual/en/function.trait-exists.php
* @since 5.4
*/
-#[Pure(true)]
function trait_exists(string $trait, bool $autoload = true): bool {}
/**
@@ -460,7 +459,6 @@ function trait_exists(string $trait, bool $autoload = true): bool {}
* @return bool true if class_name is a defined class,
* false otherwise.
*/
-#[Pure(true)]
function class_exists(string $class, bool $autoload = true): bool {}
/**
@@ -476,7 +474,6 @@ function class_exists(string $class, bool $autoload = true): bool {}
* interface_name has been defined, false otherwise.
* @since 5.0.2
*/
-#[Pure(true)]
function interface_exists(string $interface, bool $autoload = true): bool {}
/**
@@ -508,7 +505,6 @@ function function_exists(string $function): bool {}
* false otherwise.
* @since 8.1
*/
-#[Pure(true)]
function enum_exists(string $enum, bool $autoload = true): bool {}
/**
@@ -609,7 +605,7 @@ function get_class_vars(string $class): array {}
* for the specified object in scope. If a property have
* not been assigned a value, it will be returned with a null value.
*/
-#[Pure(true)]
+#[Pure]
function get_object_vars(object $object): array {}
/**
@@ -817,7 +813,7 @@ function create_function(string $args, string $code): false|string {}
* by this function, the return value will be the string
* Unknown.
*/
-#[Pure(true)]
+#[Pure]
function get_resource_type($resource): string {}
/**
diff --git a/meta/attributes/Pure.php b/meta/attributes/Pure.php
index c4e95b6c8..26cb1a009 100644
--- a/meta/attributes/Pure.php
+++ b/meta/attributes/Pure.php
@@ -7,6 +7,7 @@
/**
* The attribute marks the function that has no impact on the program state or passed parameters used after the function execution.
* This means that a function call that resolves to such a function can be safely removed if the execution result is not used in code afterwards.
+ * Functions that take a callable which is called should not have this attribute applied.
*
* @since 8.0
*/
diff --git a/standard/standard_8.php b/standard/standard_8.php
index a0fee6fd5..c868f2b47 100644
--- a/standard/standard_8.php
+++ b/standard/standard_8.php
@@ -244,7 +244,6 @@ function ob_end_clean(): bool {}
* @link https://php.net/manual/en/function.ob-get-flush.php
* @return string|false the output buffer or false if no buffering is active.
*/
-#[Pure(true)]
function ob_get_flush(): string|false {}
/**
@@ -253,7 +252,6 @@ function ob_get_flush(): string|false {}
* @return string|false the contents of the output buffer and end output buffering.
* If output buffering isn't active then false is returned.
*/
-#[Pure(true)]
function ob_get_clean(): string|false {}
/**
diff --git a/standard/standard_9.php b/standard/standard_9.php
index 10307c1ec..a2a4112f9 100644
--- a/standard/standard_9.php
+++ b/standard/standard_9.php
@@ -445,7 +445,6 @@ function array_intersect_uassoc(
* array1 that are present in all the arguments.
* @meta
*/
-#[Pure]
function array_uintersect_uassoc(
array $array,
#[PhpStormStubsElementAvailable(from: '5.3', to: '7.4')] array $array2,