Merge pull request #1017 from doctrine/3.4.x-merge-up-into-3.5.x_ERxP2qhI

Merge release 3.4.5 into 3.5.x
This commit is contained in:
Grégoire Paris
2024-10-14 14:41:45 +02:00
committed by GitHub
8 changed files with 31 additions and 11 deletions

8
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,8 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
labels:
- "CI"

View File

@@ -12,6 +12,6 @@ on:
jobs:
coding-standards:
name: "Coding Standards"
uses: "doctrine/.github/.github/workflows/coding-standards.yml@1.4.0"
uses: "doctrine/.github/.github/workflows/coding-standards.yml@5.1.0"
with:
php-version: "7.4"

View File

@@ -15,6 +15,8 @@ env:
jobs:
phpunit:
name: "PHPUnit"
uses: "doctrine/.github/.github/workflows/continuous-integration.yml@1.1.1"
uses: "doctrine/.github/.github/workflows/continuous-integration.yml@5.1.0"
with:
php-versions: '["7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2"]'
php-versions: '["7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2", "8.3", "8.4"]'
secrets:
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}"

View File

@@ -8,7 +8,7 @@ on:
jobs:
release:
name: "Git tag, release & create merge-up PR"
uses: "doctrine/.github/.github/workflows/release-on-milestone-closed.yml@1.4.1"
uses: "doctrine/.github/.github/workflows/release-on-milestone-closed.yml@5.1.0"
secrets:
GIT_AUTHOR_EMAIL: ${{ secrets.GIT_AUTHOR_EMAIL }}
GIT_AUTHOR_NAME: ${{ secrets.GIT_AUTHOR_NAME }}

View File

@@ -12,6 +12,6 @@ on:
jobs:
static-analysis:
name: "Static Analysis"
uses: "doctrine/.github/.github/workflows/static-analysis.yml@1.4.0"
uses: "doctrine/.github/.github/workflows/static-analysis.yml@5.1.0"
with:
php-version: "8.1"

View File

@@ -1284,7 +1284,6 @@ EOT;
if (
$type->allowsNull()
&& ! in_array($name, ['mixed', 'null'], true)
&& ($parameter === null || ! $parameter->isDefaultValueAvailable() || $parameter->getDefaultValue() !== null)
) {
$name = '?' . $name;
}

View File

@@ -12,10 +12,16 @@ class Php8UnionTypes
public function setValue(stdClass|array $value) : bool|float
{
return true;
}
public function setNullableValue(stdClass|array|null $value) : bool|float|null
{
return true;
}
public function setNullableValueDefaultNull(stdClass|array|null $value = null) : bool|float|null
{
return true;
}
}

View File

@@ -180,7 +180,7 @@ class ProxyGeneratorTest extends TestCase
self::assertEquals(1, substr_count($classCode, 'function combinationOfTypeHintsAndNormal(\stdClass $a, \Countable $b, $c, int $d)'));
self::assertEquals(1, substr_count($classCode, 'function typeHintsWithVariadic(int ...$foo)'));
self::assertEquals(1, substr_count($classCode, 'function withDefaultValue(int $foo = 123)'));
self::assertEquals(1, substr_count($classCode, 'function withDefaultValueNull(int $foo = NULL)'));
self::assertEquals(1, substr_count($classCode, 'function withDefaultValueNull(?int $foo = NULL)'));
}
public function testClassWithReturnTypesOnProxiedMethods()
@@ -220,8 +220,8 @@ class ProxyGeneratorTest extends TestCase
self::assertEquals(1, substr_count($classCode, 'function nullableTypeHintObject(?\stdClass $param)'));
self::assertEquals(1, substr_count($classCode, 'function nullableTypeHintSelf(?\\' . $className . ' $param)'));
self::assertEquals(1, substr_count($classCode, 'function nullableTypeHintWithDefault(?int $param = 123)'));
self::assertEquals(1, substr_count($classCode, 'function nullableTypeHintWithDefaultNull(int $param = NULL)'));
self::assertEquals(1, substr_count($classCode, 'function notNullableTypeHintWithDefaultNull(int $param = NULL)'));
self::assertEquals(1, substr_count($classCode, 'function nullableTypeHintWithDefaultNull(?int $param = NULL)'));
self::assertEquals(1, substr_count($classCode, 'function notNullableTypeHintWithDefaultNull(?int $param = NULL)'));
}
public function testClassWithNullableReturnTypesOnProxiedMethods()
@@ -259,7 +259,7 @@ class ProxyGeneratorTest extends TestCase
}
self::assertStringContainsString(
'public function midSignatureNullableParameter(\stdClass $param = NULL, $secondParam)',
'public function midSignatureNullableParameter(?\stdClass $param = NULL, $secondParam)',
file_get_contents(__DIR__ . '/generated/__CG__DoctrineTestsCommonProxyNullableNonOptionalHintClass.php')
);
@@ -287,7 +287,7 @@ class ProxyGeneratorTest extends TestCase
}
self::assertStringContainsString(
'public function midSignatureNullableParameter(string $param = NULL, $secondParam)',
'public function midSignatureNullableParameter(?string $param = NULL, $secondParam)',
file_get_contents(__DIR__ . '/generated/__CG__DoctrineTestsCommonProxyPhp71NullableDefaultedNonOptionalHintClass.php'),
'Signature allows nullable type, although explicit "?" marker isn\'t used in the proxy'
);
@@ -460,6 +460,11 @@ class ProxyGeneratorTest extends TestCase
'setNullableValue(\stdClass|array|null $value): float|bool|null',
file_get_contents(__DIR__ . '/generated/__CG__DoctrineTestsCommonProxyPhp8UnionTypes.php')
);
self::assertStringContainsString(
'setNullableValueDefaultNull(\stdClass|array|null $value = NULL): float|bool|null',
file_get_contents(__DIR__ . '/generated/__CG__DoctrineTestsCommonProxyPhp8UnionTypes.php')
);
}
/**