@@ -45,37 +45,43 @@ public function validate(mixed $value, Constraint $constraint): void
45
45
46
46
$ value = (string ) $ value ;
47
47
48
- if (!$ constraint ->skipDeprecations ) {
49
- $ prevErrorHandler = set_error_handler (static function ($ level , $ message , $ file , $ line ) use (&$ prevErrorHandler ) {
50
- if (\E_USER_DEPRECATED !== $ level ) {
51
- return $ prevErrorHandler ? $ prevErrorHandler ($ level , $ message , $ file , $ line ) : false ;
52
- }
53
-
54
- $ templateLine = 0 ;
55
- if (preg_match ('/ at line (\d+)[ .]/ ' , $ message , $ matches )) {
56
- $ templateLine = $ matches [1 ];
57
- }
58
-
59
- throw new Error ($ message , $ templateLine );
60
- });
61
- }
62
-
63
48
$ realLoader = $ this ->twig ->getLoader ();
64
49
try {
65
50
$ temporaryLoader = new ArrayLoader ([$ value ]);
66
51
$ this ->twig ->setLoader ($ temporaryLoader );
52
+
53
+ if (!$ constraint ->skipDeprecations ) {
54
+ $ prevErrorHandler = set_error_handler (static function ($ level , $ message , $ file , $ line ) use (&$ prevErrorHandler ) {
55
+ if (\E_USER_DEPRECATED !== $ level ) {
56
+ return $ prevErrorHandler ? $ prevErrorHandler ($ level , $ message , $ file , $ line ) : false ;
57
+ }
58
+
59
+ $ templateLine = 0 ;
60
+ if (preg_match ('/ at line (\d+)[ .]/ ' , $ message , $ matches )) {
61
+ $ templateLine = $ matches [1 ];
62
+ }
63
+
64
+ throw new Error ($ message , $ templateLine );
65
+ });
66
+ }
67
+
67
68
$ this ->twig ->parse ($ this ->twig ->tokenize (new Source ($ value , '' )));
69
+
70
+ if (!$ constraint ->skipDeprecations ) {
71
+ restore_error_handler ();
72
+ }
68
73
} catch (Error $ e ) {
74
+ if (!$ constraint ->skipDeprecations ) {
75
+ restore_error_handler ();
76
+ }
77
+
69
78
$ this ->context ->buildViolation ($ constraint ->message )
70
79
->setParameter ('{{ error }} ' , $ e ->getMessage ())
71
80
->setParameter ('{{ line }} ' , $ e ->getTemplateLine ())
72
81
->setCode (Twig::INVALID_TWIG_ERROR )
73
82
->addViolation ();
74
83
} finally {
75
84
$ this ->twig ->setLoader ($ realLoader );
76
- if (!$ constraint ->skipDeprecations ) {
77
- restore_error_handler ();
78
- }
79
85
}
80
86
}
81
87
}
0 commit comments