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
pull/17/head
韩天峰 2 months ago
parent 50e1ea6129
commit 3372e4c59c
  1. 2
      bin/arg_info.php
  2. 2
      phpunit/src/ArgInfoTest.php
  3. 2
      phpunit/src/Entity/FunctionDefExtendedTest.php
  4. 2
      phpunit/src/Entity/FunctionDefTest.php
  5. 2
      phpunit/src/Entity/MethodDefExtendedTest.php
  6. 2
      phpunit/src/ExceptionTest.php
  7. 2
      phpunit/src/FileScannerTest.php
  8. 2
      phpunit/src/PreprocessorTest.php
  9. 2
      phpunit/src/ReflectionTest.php
  10. 2
      phpunit/src/SymbolTest.php
  11. 2
      phpunit/src/TraitsTest.php
  12. 2
      phpunit/src/TypeCheckGeneratorTest.php
  13. 2
      src/Analysis/SsaBuilder.php
  14. 2
      src/Build/FileScanner.php
  15. 2
      src/Entity/ArgInfo.php
  16. 2
      src/Entity/FunctionDef.php
  17. 2
      src/Generator/AnonClassGenerator.php
  18. 6
      src/Generator/CallArgumentGenerator.php
  19. 2
      src/Generator/ClosureGenerator.php
  20. 2
      src/Generator/DefaultArgumentGenerator.php
  21. 2
      src/Generator/PropertyPromotion.php
  22. 2
      src/Generator/Symbol.php
  23. 2
      src/Generator/TypeCheckGenerator.php
  24. 2
      src/Generator/Utils.php
  25. 2
      src/Metadata/Constants.php
  26. 2
      src/Optimizer/FuncCallOptimizer.php
  27. 2
      src/Optimizer/SsaPropOptimizer.php
  28. 2
      src/Parser/AssignOpTrait.php
  29. 2
      src/Parser/AstNodeType.php
  30. 2
      src/Parser/BinaryOpTrait.php
  31. 2
      src/Parser/ClassConstantFetchTrait.php
  32. 2
      src/Parser/ConstantExpressionTrait.php
  33. 2
      src/Parser/ExceptionControlFlowTrait.php
  34. 2
      src/Parser/FunctionCallTrait.php
  35. 2
      src/Parser/MethodCallTrait.php
  36. 4
      src/Parser/PropertyAccessTrait.php
  37. 2
      src/Parser/StdContainerTrait.php
  38. 2
      src/Parser/TypeDetectionTrait.php
  39. 4
      src/Parser/UniversalMethodCall.php
  40. 2
      src/Resolver/MagicMethodDetector.php
  41. 2
      src/Resolver/Reflection.php
  42. 2
      src/Transform/PropertyHookLowering.php
  43. 2
      src/Transform/Visitor.php
  44. 2
      src/TypeSystem/NativeTypeCompatibilityTrait.php
  45. 2
      src/gen_stub.php

@ -1,4 +1,4 @@
<?php <?php
require __DIR__ . '/bootstrap.php'; require __DIR__ . '/bootstrap.php';
$r = \TypePhp\Reflection::getFunctionParameter('array_push', 0); $r = \TypePhp\Resolver\Reflection::getFunctionParameter('array_push', 0);
var_dump($r->isPassedByReference()); var_dump($r->isPassedByReference());

@ -3,7 +3,7 @@
namespace TypePhp\Tests; namespace TypePhp\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
class ArgInfoTest extends TestCase class ArgInfoTest extends TestCase
{ {

@ -4,7 +4,7 @@ namespace TypePhp\Tests\Entity;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use TypePhp\Entity\FunctionDef; use TypePhp\Entity\FunctionDef;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
class FunctionDefExtendedTest extends TestCase class FunctionDefExtendedTest extends TestCase
{ {

@ -4,7 +4,7 @@ namespace TypePhp\Tests\Entity;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use TypePhp\Entity\FunctionDef; use TypePhp\Entity\FunctionDef;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
class FunctionDefTest extends TestCase class FunctionDefTest extends TestCase
{ {

@ -5,7 +5,7 @@ namespace TypePhp\Tests\Entity;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use TypePhp\Entity\MethodDef; use TypePhp\Entity\MethodDef;
use TypePhp\Entity\FunctionDef; use TypePhp\Entity\FunctionDef;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
use PhpParser\Modifiers; use PhpParser\Modifiers;
class MethodDefExtendedTest extends TestCase class MethodDefExtendedTest extends TestCase

@ -10,7 +10,7 @@ use TypePhp\Exception\Skip;
use TypePhp\Exception\SyntaxError; use TypePhp\Exception\SyntaxError;
use TypePhp\Exception\TestError; use TypePhp\Exception\TestError;
use TypePhp\Exception\Unsupported; use TypePhp\Exception\Unsupported;
use TypePhp\Constants; use TypePhp\Metadata\Constants;
class ExceptionTest extends TestCase class ExceptionTest extends TestCase
{ {

@ -3,7 +3,7 @@
namespace TypePhp\Tests; namespace TypePhp\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use TypePhp\FileScanner; use TypePhp\Build\FileScanner;
class FileScannerTest extends TestCase class FileScannerTest extends TestCase
{ {

@ -4,7 +4,7 @@ namespace TypePhp\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use TypePhp\CompilerTest; use TypePhp\CompilerTest;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
use TypePhp\Exception\TestError; use TypePhp\Exception\TestError;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Stmt\Function_; use PhpParser\Node\Stmt\Function_;

@ -3,7 +3,7 @@
namespace TypePhp\Tests; namespace TypePhp\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use TypePhp\Reflection; use TypePhp\Resolver\Reflection;
class ReflectionTest extends TestCase class ReflectionTest extends TestCase
{ {

@ -3,7 +3,7 @@
namespace TypePhp\Tests; namespace TypePhp\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use TypePhp\Symbol; use TypePhp\Generator\Symbol;
use TypePhp\CompilerBase; use TypePhp\CompilerBase;
class SymbolTest extends TestCase class SymbolTest extends TestCase

@ -5,7 +5,7 @@ namespace TypePhp\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use TypePhp\CompilerTest; use TypePhp\CompilerTest;
use TypePhp\CompilerBase; use TypePhp\CompilerBase;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
class TraitsTest extends TestCase class TraitsTest extends TestCase
{ {

@ -1,6 +1,6 @@
<?php <?php
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
use TypePhp\CompilerTest; use TypePhp\CompilerTest;
use TypePhp\Entity\ClassDef; use TypePhp\Entity\ClassDef;
use TypePhp\Entity\FunctionDef; use TypePhp\Entity\FunctionDef;

@ -25,7 +25,7 @@
namespace TypePhp\Analysis; namespace TypePhp\Analysis;
use TypePhp\AstNodeType; use TypePhp\Parser\AstNodeType;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;
use PhpParser\Node\Stmt; use PhpParser\Node\Stmt;

@ -6,7 +6,7 @@
* @contact service@swoole.com * @contact service@swoole.com
*/ */
namespace TypePhp; namespace TypePhp\Build;
class FileScanner class FileScanner
{ {

@ -6,7 +6,7 @@
* @contact service@swoole.com * @contact service@swoole.com
*/ */
namespace TypePhp; namespace TypePhp\Entity;
use TypePhp\Entity\ArrayInitPlan; use TypePhp\Entity\ArrayInitPlan;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;

@ -8,7 +8,7 @@
namespace TypePhp\Entity; namespace TypePhp\Entity;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
use PhpParser\NodeAbstract; use PhpParser\NodeAbstract;
class FunctionDef class FunctionDef

@ -21,7 +21,7 @@ use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Property; use PhpParser\Node\Stmt\Property;
use PhpParser\NodeTraverser; use PhpParser\NodeTraverser;
use PhpParser\NodeVisitorAbstract; use PhpParser\NodeVisitorAbstract;
use TypePhp\Reflection; use TypePhp\Resolver\Reflection;
trait AnonClassGenerator trait AnonClassGenerator
{ {

@ -12,11 +12,11 @@ use PhpParser\Node;
use PhpParser\Node\ArrayItem; use PhpParser\Node\ArrayItem;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;
use PhpParser\NodeAbstract; use PhpParser\NodeAbstract;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
use TypePhp\Entity\FunctionDef; use TypePhp\Entity\FunctionDef;
use TypePhp\Exception\PlaceHolder; use TypePhp\Exception\PlaceHolder;
use TypePhp\Reflection; use TypePhp\Resolver\Reflection;
use TypePhp\Symbol; use TypePhp\Generator\Symbol;
trait CallArgumentGenerator trait CallArgumentGenerator
{ {

@ -8,7 +8,7 @@
namespace TypePhp\Generator; namespace TypePhp\Generator;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
use TypePhp\Context\FunctionContext; use TypePhp\Context\FunctionContext;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;

@ -7,7 +7,7 @@
namespace TypePhp\Generator; namespace TypePhp\Generator;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
use TypePhp\Entity\ArrayInitPlan; use TypePhp\Entity\ArrayInitPlan;
use TypePhp\Entity\FunctionDef; use TypePhp\Entity\FunctionDef;

@ -8,7 +8,7 @@
namespace TypePhp\Generator; namespace TypePhp\Generator;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
trait PropertyPromotion trait PropertyPromotion
{ {

@ -6,7 +6,7 @@
* @contact service@swoole.com * @contact service@swoole.com
*/ */
namespace TypePhp; namespace TypePhp\Generator;
class Symbol class Symbol
{ {

@ -8,7 +8,7 @@
namespace TypePhp\Generator; namespace TypePhp\Generator;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\IntersectionType; use PhpParser\Node\IntersectionType;
use PhpParser\Node\NullableType; use PhpParser\Node\NullableType;

@ -9,7 +9,7 @@
namespace TypePhp\Generator; namespace TypePhp\Generator;
use TypePhp\CompilerBase; use TypePhp\CompilerBase;
use TypePhp\Constants; use TypePhp\Metadata\Constants;
trait Utils trait Utils
{ {

@ -6,7 +6,7 @@
* @contact service@swoole.com * @contact service@swoole.com
*/ */
namespace TypePhp; namespace TypePhp\Metadata;
class Constants class Constants
{ {

@ -8,7 +8,7 @@
namespace TypePhp\Optimizer; namespace TypePhp\Optimizer;
use TypePhp\Reflection; use TypePhp\Resolver\Reflection;
use PhpParser\Node; use PhpParser\Node;
/** /**

@ -26,7 +26,7 @@ namespace TypePhp\Optimizer;
use TypePhp\Analysis\SsaBuilder; use TypePhp\Analysis\SsaBuilder;
use TypePhp\Analysis\SsaFlags; use TypePhp\Analysis\SsaFlags;
use TypePhp\Reflection; use TypePhp\Resolver\Reflection;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;

@ -703,7 +703,7 @@ trait AssignOpTrait
$this->fatalError($expr, 'Cannot assign reference to a function that does not return by reference'); $this->fatalError($expr, 'Cannot assign reference to a function that does not return by reference');
} }
} else { } 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()) { if ($reflection === null || !$reflection->isInternal() || !$reflection->returnsReference()) {
$this->fatalError($expr, 'Cannot assign reference to a function that does not return by reference'); $this->fatalError($expr, 'Cannot assign reference to a function that does not return by reference');
} }

@ -6,7 +6,7 @@
* @contact service@swoole.com * @contact service@swoole.com
*/ */
namespace TypePhp; namespace TypePhp\Parser;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;

@ -8,7 +8,7 @@
namespace TypePhp\Parser; namespace TypePhp\Parser;
use TypePhp\Symbol; use TypePhp\Generator\Symbol;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;
use PhpParser\Node\Expr\BinaryOp; use PhpParser\Node\Expr\BinaryOp;

@ -9,7 +9,7 @@ namespace TypePhp\Parser;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;
use PhpParser\NodeAbstract; use PhpParser\NodeAbstract;
use TypePhp\Symbol; use TypePhp\Generator\Symbol;
trait ClassConstantFetchTrait trait ClassConstantFetchTrait
{ {

@ -11,7 +11,7 @@ namespace TypePhp\Parser;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;
use PhpParser\Node\Scalar\MagicConst; use PhpParser\Node\Scalar\MagicConst;
use TypePhp\Symbol; use TypePhp\Generator\Symbol;
trait ConstantExpressionTrait trait ConstantExpressionTrait
{ {

@ -11,7 +11,7 @@ use PhpParser\Node;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Variable; use PhpParser\Node\Expr\Variable;
use PhpParser\NodeFinder; use PhpParser\NodeFinder;
use TypePhp\Symbol; use TypePhp\Generator\Symbol;
trait ExceptionControlFlowTrait trait ExceptionControlFlowTrait
{ {

@ -12,7 +12,7 @@ use PhpParser\Node\Expr;
use PhpParser\Node\Expr\CallLike; use PhpParser\Node\Expr\CallLike;
use PhpParser\Node\Expr\Variable; use PhpParser\Node\Expr\Variable;
use PhpParser\NodeAbstract; use PhpParser\NodeAbstract;
use TypePhp\Constants; use TypePhp\Metadata\Constants;
use TypePhp\Exception\PlaceHolder; use TypePhp\Exception\PlaceHolder;
trait FunctionCallTrait trait FunctionCallTrait

@ -13,7 +13,7 @@ use PhpParser\Node\Expr;
use PhpParser\Node\Expr\CallLike; use PhpParser\Node\Expr\CallLike;
use TypePhp\Exception\DynamicCall; use TypePhp\Exception\DynamicCall;
use TypePhp\Exception\PlaceHolder; use TypePhp\Exception\PlaceHolder;
use TypePhp\Symbol; use TypePhp\Generator\Symbol;
trait MethodCallTrait trait MethodCallTrait
{ {

@ -11,13 +11,13 @@ use PhpParser\Node;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;
use PhpParser\NodeAbstract; use PhpParser\NodeAbstract;
use TypePhp\Entity\PropertyDef; use TypePhp\Entity\PropertyDef;
use TypePhp\PropertyHookLowering; use TypePhp\Transform\PropertyHookLowering;
use TypePhp\Resolver\InstancePropertyFetchTarget; use TypePhp\Resolver\InstancePropertyFetchTarget;
use TypePhp\Resolver\PropertyAssignTypeInfo; use TypePhp\Resolver\PropertyAssignTypeInfo;
use TypePhp\Resolver\PropertyWriteTarget; use TypePhp\Resolver\PropertyWriteTarget;
use TypePhp\Resolver\StaticPropertyFetchResolution; use TypePhp\Resolver\StaticPropertyFetchResolution;
use TypePhp\Resolver\StaticPropertyFetchTarget; use TypePhp\Resolver\StaticPropertyFetchTarget;
use TypePhp\Symbol; use TypePhp\Generator\Symbol;
trait PropertyAccessTrait trait PropertyAccessTrait
{ {

@ -8,7 +8,7 @@
namespace TypePhp\Parser; namespace TypePhp\Parser;
use TypePhp\Symbol; use TypePhp\Generator\Symbol;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;
use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Name; use PhpParser\Node\Name;

@ -8,7 +8,7 @@
namespace TypePhp\Parser; namespace TypePhp\Parser;
use TypePhp\Reflection; use TypePhp\Resolver\Reflection;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;
use PhpParser\NodeAbstract; use PhpParser\NodeAbstract;

@ -1,6 +1,8 @@
<?php <?php
namespace TypePhp; namespace TypePhp\Parser;
use TypePhp\Resolver\Reflection;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Expr; use PhpParser\Node\Expr;

@ -6,7 +6,7 @@
* @contact service@swoole.com * @contact service@swoole.com
*/ */
namespace TypePhp; namespace TypePhp\Resolver;
use TypePhp\Entity\MethodDef; use TypePhp\Entity\MethodDef;
use PhpParser\NodeAbstract; use PhpParser\NodeAbstract;

@ -6,7 +6,7 @@
* @contact service@swoole.com * @contact service@swoole.com
*/ */
namespace TypePhp; namespace TypePhp\Resolver;
class Reflection class Reflection
{ {

@ -6,7 +6,7 @@
* @contact service@swoole.com * @contact service@swoole.com
*/ */
namespace TypePhp; namespace TypePhp\Transform;
use PhpParser\Modifiers; use PhpParser\Modifiers;
use PhpParser\Node; use PhpParser\Node;

@ -6,7 +6,7 @@
* @contact service@swoole.com * @contact service@swoole.com
*/ */
namespace TypePhp; namespace TypePhp\Transform;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Stmt; use PhpParser\Node\Stmt;

@ -8,7 +8,7 @@
namespace TypePhp\TypeSystem; namespace TypePhp\TypeSystem;
use PhpParser\Node; use PhpParser\Node;
use TypePhp\ArgInfo; use TypePhp\Entity\ArgInfo;
trait NativeTypeCompatibilityTrait trait NativeTypeCompatibilityTrait
{ {

@ -4468,7 +4468,7 @@ class FileInfo {
public static function parseStubFile(string $code, string $phpVersion = '8.5'): FileInfo { public static function parseStubFile(string $code, string $phpVersion = '8.5'): FileInfo {
$parser = (new PhpParser\ParserFactory())->createForVersion(PhpParser\PhpVersion::fromString($phpVersion)); $parser = (new PhpParser\ParserFactory())->createForVersion(PhpParser\PhpVersion::fromString($phpVersion));
$nodeTraverser = new PhpParser\NodeTraverser; $nodeTraverser = new PhpParser\NodeTraverser;
$nodeTraverser->addVisitor(new TypePhp\Visitor()); $nodeTraverser->addVisitor(new TypePhp\Transform\Visitor());
$nodeTraverser->addVisitor(new PhpParser\NodeVisitor\NameResolver); $nodeTraverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
$prettyPrinter = new class extends Standard { $prettyPrinter = new class extends Standard {
protected function pName_FullyQualified(PhpParser\Node\Name\FullyQualified $node): string { protected function pName_FullyQualified(PhpParser\Node\Name\FullyQualified $node): string {

Loading…
Cancel
Save