From 3372e4c59c118620dbb2f061ce43e49b0bac52a7 Mon Sep 17 00:00:00 2001 From: tianfenghan Date: Sat, 11 Jul 2026 16:39:18 +0800 Subject: [PATCH] refactor(core): restructure namespace and file organization - Move Reflection class from TypePhp to TypePhp\Resolver namespace - Rename ArgInfo.php to TypePhp\Entity\ArgInfo and update all references - Move AstNodeType.php to TypePhp\Parser\AstNodeType with namespace update - Update Symbol.php import paths to use TypePhp\Generator\Symbol - Move Constants.php to TypePhp\Metadata\Constants with namespace change - Rename FileScanner.php to TypePhp\Build\FileScanner with namespace update - Move MagicMethodDetector.php to TypePhp\Resolver\MagicMethodDetector - Rename PropertyHookLowering.php to TypePhp\Transform\PropertyHookLowering - Move Visitor.php to TypePhp\Transform\Visitor with namespace update - Update all test files to reflect new class --- bin/arg_info.php | 2 +- phpunit/src/ArgInfoTest.php | 2 +- phpunit/src/Entity/FunctionDefExtendedTest.php | 2 +- phpunit/src/Entity/FunctionDefTest.php | 2 +- phpunit/src/Entity/MethodDefExtendedTest.php | 2 +- phpunit/src/ExceptionTest.php | 2 +- phpunit/src/FileScannerTest.php | 2 +- phpunit/src/PreprocessorTest.php | 2 +- phpunit/src/ReflectionTest.php | 2 +- phpunit/src/SymbolTest.php | 2 +- phpunit/src/TraitsTest.php | 2 +- phpunit/src/TypeCheckGeneratorTest.php | 2 +- src/Analysis/SsaBuilder.php | 2 +- src/{ => Build}/FileScanner.php | 2 +- src/{ => Entity}/ArgInfo.php | 2 +- src/Entity/FunctionDef.php | 2 +- src/Generator/AnonClassGenerator.php | 2 +- src/Generator/CallArgumentGenerator.php | 6 +++--- src/Generator/ClosureGenerator.php | 2 +- src/Generator/DefaultArgumentGenerator.php | 2 +- src/Generator/PropertyPromotion.php | 2 +- src/{ => Generator}/Symbol.php | 2 +- src/Generator/TypeCheckGenerator.php | 2 +- src/Generator/Utils.php | 2 +- src/{ => Metadata}/Constants.php | 2 +- src/Optimizer/FuncCallOptimizer.php | 2 +- src/Optimizer/SsaPropOptimizer.php | 2 +- src/Parser/AssignOpTrait.php | 2 +- src/{ => Parser}/AstNodeType.php | 2 +- src/Parser/BinaryOpTrait.php | 2 +- src/Parser/ClassConstantFetchTrait.php | 2 +- src/Parser/ConstantExpressionTrait.php | 2 +- src/Parser/ExceptionControlFlowTrait.php | 2 +- src/Parser/FunctionCallTrait.php | 2 +- src/Parser/MethodCallTrait.php | 2 +- src/Parser/PropertyAccessTrait.php | 4 ++-- src/Parser/StdContainerTrait.php | 2 +- src/Parser/TypeDetectionTrait.php | 2 +- src/{ => Parser}/UniversalMethodCall.php | 4 +++- src/{ => Resolver}/MagicMethodDetector.php | 2 +- src/{ => Resolver}/Reflection.php | 2 +- src/{ => Transform}/PropertyHookLowering.php | 2 +- src/{ => Transform}/Visitor.php | 2 +- src/TypeSystem/NativeTypeCompatibilityTrait.php | 2 +- src/gen_stub.php | 2 +- 45 files changed, 50 insertions(+), 48 deletions(-) rename src/{ => Build}/FileScanner.php (99%) rename src/{ => Entity}/ArgInfo.php (98%) rename src/{ => Generator}/Symbol.php (97%) rename src/{ => Metadata}/Constants.php (99%) rename src/{ => Parser}/AstNodeType.php (99%) rename src/{ => Parser}/UniversalMethodCall.php (99%) rename src/{ => Resolver}/MagicMethodDetector.php (99%) rename src/{ => Resolver}/Reflection.php (99%) rename src/{ => Transform}/PropertyHookLowering.php (99%) rename src/{ => Transform}/Visitor.php (97%) diff --git a/bin/arg_info.php b/bin/arg_info.php index c7ea4482..268a024b 100644 --- a/bin/arg_info.php +++ b/bin/arg_info.php @@ -1,4 +1,4 @@ isPassedByReference()); \ No newline at end of file diff --git a/phpunit/src/ArgInfoTest.php b/phpunit/src/ArgInfoTest.php index 1d6bb5ed..fd6ac187 100644 --- a/phpunit/src/ArgInfoTest.php +++ b/phpunit/src/ArgInfoTest.php @@ -3,7 +3,7 @@ namespace TypePhp\Tests; use PHPUnit\Framework\TestCase; -use TypePhp\ArgInfo; +use TypePhp\Entity\ArgInfo; class ArgInfoTest extends TestCase { diff --git a/phpunit/src/Entity/FunctionDefExtendedTest.php b/phpunit/src/Entity/FunctionDefExtendedTest.php index 2b609f98..bc8a53ef 100644 --- a/phpunit/src/Entity/FunctionDefExtendedTest.php +++ b/phpunit/src/Entity/FunctionDefExtendedTest.php @@ -4,7 +4,7 @@ namespace TypePhp\Tests\Entity; use PHPUnit\Framework\TestCase; use TypePhp\Entity\FunctionDef; -use TypePhp\ArgInfo; +use TypePhp\Entity\ArgInfo; class FunctionDefExtendedTest extends TestCase { diff --git a/phpunit/src/Entity/FunctionDefTest.php b/phpunit/src/Entity/FunctionDefTest.php index 92d92397..f4aebc1f 100644 --- a/phpunit/src/Entity/FunctionDefTest.php +++ b/phpunit/src/Entity/FunctionDefTest.php @@ -4,7 +4,7 @@ namespace TypePhp\Tests\Entity; use PHPUnit\Framework\TestCase; use TypePhp\Entity\FunctionDef; -use TypePhp\ArgInfo; +use TypePhp\Entity\ArgInfo; class FunctionDefTest extends TestCase { diff --git a/phpunit/src/Entity/MethodDefExtendedTest.php b/phpunit/src/Entity/MethodDefExtendedTest.php index 325a77f0..705dff7a 100644 --- a/phpunit/src/Entity/MethodDefExtendedTest.php +++ b/phpunit/src/Entity/MethodDefExtendedTest.php @@ -5,7 +5,7 @@ namespace TypePhp\Tests\Entity; use PHPUnit\Framework\TestCase; use TypePhp\Entity\MethodDef; use TypePhp\Entity\FunctionDef; -use TypePhp\ArgInfo; +use TypePhp\Entity\ArgInfo; use PhpParser\Modifiers; class MethodDefExtendedTest extends TestCase diff --git a/phpunit/src/ExceptionTest.php b/phpunit/src/ExceptionTest.php index ae73a3e6..4e71733f 100644 --- a/phpunit/src/ExceptionTest.php +++ b/phpunit/src/ExceptionTest.php @@ -10,7 +10,7 @@ use TypePhp\Exception\Skip; use TypePhp\Exception\SyntaxError; use TypePhp\Exception\TestError; use TypePhp\Exception\Unsupported; -use TypePhp\Constants; +use TypePhp\Metadata\Constants; class ExceptionTest extends TestCase { diff --git a/phpunit/src/FileScannerTest.php b/phpunit/src/FileScannerTest.php index 04225b7b..8a3c1e26 100644 --- a/phpunit/src/FileScannerTest.php +++ b/phpunit/src/FileScannerTest.php @@ -3,7 +3,7 @@ namespace TypePhp\Tests; use PHPUnit\Framework\TestCase; -use TypePhp\FileScanner; +use TypePhp\Build\FileScanner; class FileScannerTest extends TestCase { diff --git a/phpunit/src/PreprocessorTest.php b/phpunit/src/PreprocessorTest.php index 67282fc8..68b5c8fe 100644 --- a/phpunit/src/PreprocessorTest.php +++ b/phpunit/src/PreprocessorTest.php @@ -4,7 +4,7 @@ namespace TypePhp\Tests; use PHPUnit\Framework\TestCase; use TypePhp\CompilerTest; -use TypePhp\ArgInfo; +use TypePhp\Entity\ArgInfo; use TypePhp\Exception\TestError; use PhpParser\Node; use PhpParser\Node\Stmt\Function_; diff --git a/phpunit/src/ReflectionTest.php b/phpunit/src/ReflectionTest.php index f9eba261..55222fd0 100644 --- a/phpunit/src/ReflectionTest.php +++ b/phpunit/src/ReflectionTest.php @@ -3,7 +3,7 @@ namespace TypePhp\Tests; use PHPUnit\Framework\TestCase; -use TypePhp\Reflection; +use TypePhp\Resolver\Reflection; class ReflectionTest extends TestCase { diff --git a/phpunit/src/SymbolTest.php b/phpunit/src/SymbolTest.php index b9883668..47b3e89c 100644 --- a/phpunit/src/SymbolTest.php +++ b/phpunit/src/SymbolTest.php @@ -3,7 +3,7 @@ namespace TypePhp\Tests; use PHPUnit\Framework\TestCase; -use TypePhp\Symbol; +use TypePhp\Generator\Symbol; use TypePhp\CompilerBase; class SymbolTest extends TestCase diff --git a/phpunit/src/TraitsTest.php b/phpunit/src/TraitsTest.php index f84559b2..17d36541 100644 --- a/phpunit/src/TraitsTest.php +++ b/phpunit/src/TraitsTest.php @@ -5,7 +5,7 @@ namespace TypePhp\Tests; use PHPUnit\Framework\TestCase; use TypePhp\CompilerTest; use TypePhp\CompilerBase; -use TypePhp\ArgInfo; +use TypePhp\Entity\ArgInfo; class TraitsTest extends TestCase { diff --git a/phpunit/src/TypeCheckGeneratorTest.php b/phpunit/src/TypeCheckGeneratorTest.php index e3ed48e2..7c5d4bb4 100644 --- a/phpunit/src/TypeCheckGeneratorTest.php +++ b/phpunit/src/TypeCheckGeneratorTest.php @@ -1,6 +1,6 @@ fatalError($expr, 'Cannot assign reference to a function that does not return by reference'); } } else { - $reflection = \TypePhp\Reflection::getFunction(ltrim($this->getNamespacedFuncName($name), '\\')); + $reflection = \TypePhp\Resolver\Reflection::getFunction(ltrim($this->getNamespacedFuncName($name), '\\')); if ($reflection === null || !$reflection->isInternal() || !$reflection->returnsReference()) { $this->fatalError($expr, 'Cannot assign reference to a function that does not return by reference'); } diff --git a/src/AstNodeType.php b/src/Parser/AstNodeType.php similarity index 99% rename from src/AstNodeType.php rename to src/Parser/AstNodeType.php index c138ef51..f01d5047 100644 --- a/src/AstNodeType.php +++ b/src/Parser/AstNodeType.php @@ -6,7 +6,7 @@ * @contact service@swoole.com */ -namespace TypePhp; +namespace TypePhp\Parser; use PhpParser\Node; use PhpParser\Node\Expr; diff --git a/src/Parser/BinaryOpTrait.php b/src/Parser/BinaryOpTrait.php index d1a7f7ba..bbbed7ef 100644 --- a/src/Parser/BinaryOpTrait.php +++ b/src/Parser/BinaryOpTrait.php @@ -8,7 +8,7 @@ namespace TypePhp\Parser; -use TypePhp\Symbol; +use TypePhp\Generator\Symbol; use PhpParser\Node; use PhpParser\Node\Expr; use PhpParser\Node\Expr\BinaryOp; diff --git a/src/Parser/ClassConstantFetchTrait.php b/src/Parser/ClassConstantFetchTrait.php index d33efb2d..4e37c0ef 100644 --- a/src/Parser/ClassConstantFetchTrait.php +++ b/src/Parser/ClassConstantFetchTrait.php @@ -9,7 +9,7 @@ namespace TypePhp\Parser; use PhpParser\Node\Expr; use PhpParser\NodeAbstract; -use TypePhp\Symbol; +use TypePhp\Generator\Symbol; trait ClassConstantFetchTrait { diff --git a/src/Parser/ConstantExpressionTrait.php b/src/Parser/ConstantExpressionTrait.php index 1e1e1c98..f9881e46 100644 --- a/src/Parser/ConstantExpressionTrait.php +++ b/src/Parser/ConstantExpressionTrait.php @@ -11,7 +11,7 @@ namespace TypePhp\Parser; use PhpParser\Node; use PhpParser\Node\Expr; use PhpParser\Node\Scalar\MagicConst; -use TypePhp\Symbol; +use TypePhp\Generator\Symbol; trait ConstantExpressionTrait { diff --git a/src/Parser/ExceptionControlFlowTrait.php b/src/Parser/ExceptionControlFlowTrait.php index 76224229..3ccb1f16 100644 --- a/src/Parser/ExceptionControlFlowTrait.php +++ b/src/Parser/ExceptionControlFlowTrait.php @@ -11,7 +11,7 @@ use PhpParser\Node; use PhpParser\Node\Expr; use PhpParser\Node\Expr\Variable; use PhpParser\NodeFinder; -use TypePhp\Symbol; +use TypePhp\Generator\Symbol; trait ExceptionControlFlowTrait { diff --git a/src/Parser/FunctionCallTrait.php b/src/Parser/FunctionCallTrait.php index c2a1d178..041710f4 100644 --- a/src/Parser/FunctionCallTrait.php +++ b/src/Parser/FunctionCallTrait.php @@ -12,7 +12,7 @@ use PhpParser\Node\Expr; use PhpParser\Node\Expr\CallLike; use PhpParser\Node\Expr\Variable; use PhpParser\NodeAbstract; -use TypePhp\Constants; +use TypePhp\Metadata\Constants; use TypePhp\Exception\PlaceHolder; trait FunctionCallTrait diff --git a/src/Parser/MethodCallTrait.php b/src/Parser/MethodCallTrait.php index f5b08f08..b84f73fc 100644 --- a/src/Parser/MethodCallTrait.php +++ b/src/Parser/MethodCallTrait.php @@ -13,7 +13,7 @@ use PhpParser\Node\Expr; use PhpParser\Node\Expr\CallLike; use TypePhp\Exception\DynamicCall; use TypePhp\Exception\PlaceHolder; -use TypePhp\Symbol; +use TypePhp\Generator\Symbol; trait MethodCallTrait { diff --git a/src/Parser/PropertyAccessTrait.php b/src/Parser/PropertyAccessTrait.php index be2c2950..eabce74f 100644 --- a/src/Parser/PropertyAccessTrait.php +++ b/src/Parser/PropertyAccessTrait.php @@ -11,13 +11,13 @@ use PhpParser\Node; use PhpParser\Node\Expr; use PhpParser\NodeAbstract; use TypePhp\Entity\PropertyDef; -use TypePhp\PropertyHookLowering; +use TypePhp\Transform\PropertyHookLowering; use TypePhp\Resolver\InstancePropertyFetchTarget; use TypePhp\Resolver\PropertyAssignTypeInfo; use TypePhp\Resolver\PropertyWriteTarget; use TypePhp\Resolver\StaticPropertyFetchResolution; use TypePhp\Resolver\StaticPropertyFetchTarget; -use TypePhp\Symbol; +use TypePhp\Generator\Symbol; trait PropertyAccessTrait { diff --git a/src/Parser/StdContainerTrait.php b/src/Parser/StdContainerTrait.php index 94bb9d2b..522ab04a 100644 --- a/src/Parser/StdContainerTrait.php +++ b/src/Parser/StdContainerTrait.php @@ -8,7 +8,7 @@ namespace TypePhp\Parser; -use TypePhp\Symbol; +use TypePhp\Generator\Symbol; use PhpParser\Node\Expr; use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Name; diff --git a/src/Parser/TypeDetectionTrait.php b/src/Parser/TypeDetectionTrait.php index dc496a6d..2bc7d5ce 100644 --- a/src/Parser/TypeDetectionTrait.php +++ b/src/Parser/TypeDetectionTrait.php @@ -8,7 +8,7 @@ namespace TypePhp\Parser; -use TypePhp\Reflection; +use TypePhp\Resolver\Reflection; use PhpParser\Node; use PhpParser\Node\Expr; use PhpParser\NodeAbstract; diff --git a/src/UniversalMethodCall.php b/src/Parser/UniversalMethodCall.php similarity index 99% rename from src/UniversalMethodCall.php rename to src/Parser/UniversalMethodCall.php index 2f629edc..f5f89408 100644 --- a/src/UniversalMethodCall.php +++ b/src/Parser/UniversalMethodCall.php @@ -1,6 +1,8 @@ createForVersion(PhpParser\PhpVersion::fromString($phpVersion)); $nodeTraverser = new PhpParser\NodeTraverser; - $nodeTraverser->addVisitor(new TypePhp\Visitor()); + $nodeTraverser->addVisitor(new TypePhp\Transform\Visitor()); $nodeTraverser->addVisitor(new PhpParser\NodeVisitor\NameResolver); $prettyPrinter = new class extends Standard { protected function pName_FullyQualified(PhpParser\Node\Name\FullyQualified $node): string {