@@ -23,20 +23,23 @@ class NameScope
2323 /** @var array<string, true> */
2424 private array $ typeAliasesMap ;
2525
26+ private bool $ bypassTypeAliases ;
27+
2628 /**
2729 * @param string|null $namespace
2830 * @param array<string, string> $uses alias(string) => fullName(string)
2931 * @param string|null $className
3032 * @param array<string, true> $typeAliasesMap
3133 */
32- public function __construct (?string $ namespace , array $ uses , ?string $ className = null , ?string $ functionName = null , ?TemplateTypeMap $ templateTypeMap = null , array $ typeAliasesMap = [])
34+ public function __construct (?string $ namespace , array $ uses , ?string $ className = null , ?string $ functionName = null , ?TemplateTypeMap $ templateTypeMap = null , array $ typeAliasesMap = [], bool $ bypassTypeAliases = false )
3335 {
3436 $ this ->namespace = $ namespace ;
3537 $ this ->uses = $ uses ;
3638 $ this ->className = $ className ;
3739 $ this ->functionName = $ functionName ;
3840 $ this ->templateTypeMap = $ templateTypeMap ?? TemplateTypeMap::createEmpty ();
3941 $ this ->typeAliasesMap = $ typeAliasesMap ;
42+ $ this ->bypassTypeAliases = $ bypassTypeAliases ;
4043 }
4144
4245 public function getNamespace (): ?string
@@ -148,6 +151,16 @@ public function unsetTemplateType(string $name): self
148151 );
149152 }
150153
154+ public function bypassTypeAliases (): self
155+ {
156+ return new self ($ this ->namespace , $ this ->uses , $ this ->className , $ this ->functionName , $ this ->templateTypeMap , $ this ->typeAliasesMap , true );
157+ }
158+
159+ public function shouldBypassTypeAliases (): bool
160+ {
161+ return $ this ->bypassTypeAliases ;
162+ }
163+
151164 public function hasTypeAlias (string $ alias ): bool
152165 {
153166 return array_key_exists ($ alias , $ this ->typeAliasesMap );
0 commit comments