TypePHP 编译器
https://swoole.com/aot/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
61 lines
1.4 KiB
--TEST--
|
|
Trait property defaults retain the original imports through nested composition
|
|
--FILE--
|
|
<?php
|
|
namespace TraitPropertyDefaults\Support {
|
|
enum Level: int {
|
|
case Debug = 100;
|
|
}
|
|
|
|
enum OtherLevel: int {
|
|
case Debug = 200;
|
|
}
|
|
}
|
|
|
|
namespace TraitPropertyDefaults\Template {
|
|
use TraitPropertyDefaults\Support\Level;
|
|
|
|
trait HasLevels {
|
|
public array $levels = ['debug' => Level::Debug];
|
|
}
|
|
}
|
|
|
|
namespace TraitPropertyDefaults\Wrapper {
|
|
use TraitPropertyDefaults\Support\OtherLevel as Level;
|
|
use TraitPropertyDefaults\Template\HasLevels;
|
|
|
|
trait NestedLevels {
|
|
use HasLevels;
|
|
}
|
|
}
|
|
|
|
namespace TraitPropertyDefaults\Consumer {
|
|
use TraitPropertyDefaults\Support\OtherLevel as Level;
|
|
use TraitPropertyDefaults\Template\HasLevels;
|
|
use TraitPropertyDefaults\Wrapper\NestedLevels;
|
|
|
|
class DirectConsumer {
|
|
use HasLevels;
|
|
|
|
public array $ownLevels = ['debug' => Level::Debug];
|
|
}
|
|
|
|
class NestedConsumer {
|
|
use NestedLevels;
|
|
}
|
|
}
|
|
|
|
namespace {
|
|
function main(): void {
|
|
$direct = new TraitPropertyDefaults\Consumer\DirectConsumer();
|
|
$nested = new TraitPropertyDefaults\Consumer\NestedConsumer();
|
|
var_dump($direct->levels['debug']->value);
|
|
var_dump($nested->levels['debug']->value);
|
|
var_dump($direct->ownLevels['debug']->value);
|
|
}
|
|
}
|
|
?>
|
|
--EXPECT--
|
|
int(100)
|
|
int(100)
|
|
int(200)
|
|
|