20
20
use Twig \Node \Expression \ConstantExpression ;
21
21
use Twig \Node \Expression \FilterExpression ;
22
22
use Twig \Node \Expression \NameExpression ;
23
- use Twig \Node \Expression \Variable \AssignContextVariable ;
24
23
use Twig \Node \Expression \Variable \ContextVariable ;
24
+ use Twig \Node \Expression \Variable \LocalVariable ;
25
25
use Twig \Node \ModuleNode ;
26
26
use Twig \Node \Node ;
27
27
use Twig \Node \Nodes ;
33
33
*/
34
34
final class TranslationDefaultDomainNodeVisitor implements NodeVisitorInterface
35
35
{
36
- private const INTERNAL_VAR_NAME = '__internal_trans_default_domain ' ;
37
-
38
36
private Scope $ scope ;
39
37
40
38
public function __construct ()
@@ -55,13 +53,22 @@ public function enterNode(Node $node, Environment $env): Node
55
53
return $ node ;
56
54
}
57
55
58
- $ name = class_exists (AssignContextVariable::class) ? new AssignContextVariable (self ::INTERNAL_VAR_NAME , $ node ->getTemplateLine ()) : new AssignNameExpression (self ::INTERNAL_VAR_NAME , $ node ->getTemplateLine ());
59
- $ this ->scope ->set ('domain ' , class_exists (ContextVariable::class) ? new ContextVariable (self ::INTERNAL_VAR_NAME , $ node ->getTemplateLine ()) : new NameExpression (self ::INTERNAL_VAR_NAME , $ node ->getTemplateLine ()));
60
-
61
56
if (class_exists (Nodes::class)) {
57
+ $ name = new LocalVariable (null , $ node ->getTemplateLine ());
58
+ $ this ->scope ->set ('domain ' , $ name );
59
+
62
60
return new SetNode (false , new Nodes ([$ name ]), new Nodes ([$ node ->getNode ('expr ' )]), $ node ->getTemplateLine ());
63
61
}
64
62
63
+ $ var = '__internal_trans_default_domain ' ;
64
+
65
+ if (null !== $ templateName = $ node ->getTemplateName ()) {
66
+ $ var .= hash ('xxh128 ' , $ templateName );
67
+ }
68
+
69
+ $ name = new AssignNameExpression ($ var , $ node ->getTemplateLine ());
70
+ $ this ->scope ->set ('domain ' , new NameExpression ($ var , $ node ->getTemplateLine ()));
71
+
65
72
return new SetNode (false , new Node ([$ name ]), new Node ([$ node ->getNode ('expr ' )]), $ node ->getTemplateLine ());
66
73
}
67
74
0 commit comments