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