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
require __DIR__ . '/bootstrap.php';
$r = \TypePhp\Reflection::getFunctionParameter('array_push', 0);
$r = \TypePhp\Resolver\Reflection::getFunctionParameter('array_push', 0);
var_dump($r->isPassedByReference());

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

@ -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
{

@ -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
{

@ -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

@ -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
{

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

@ -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_;

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

@ -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

@ -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
{

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -26,7 +26,7 @@ namespace TypePhp\Optimizer;
use TypePhp\Analysis\SsaBuilder;
use TypePhp\Analysis\SsaFlags;
use TypePhp\Reflection;
use TypePhp\Resolver\Reflection;
use PhpParser\Node;
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');
}
} 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');
}

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

@ -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;

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

@ -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
{

@ -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
{

@ -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

@ -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
{

@ -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
{

@ -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;

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

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

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

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

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

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

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

@ -4468,7 +4468,7 @@ class FileInfo {
public static function parseStubFile(string $code, string $phpVersion = '8.5'): FileInfo {
$parser = (new PhpParser\ParserFactory())->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 {

Loading…
Cancel
Save