EscapeImplicitBackslashesFixerTest.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4. * This file is part of PHP CS Fixer.
  5. *
  6. * (c) Fabien Potencier <fabien@symfony.com>
  7. * Dariusz Rumiński <dariusz.ruminski@gmail.com>
  8. *
  9. * This source file is subject to the MIT license that is bundled
  10. * with this source code in the file LICENSE.
  11. */
  12. namespace PhpCsFixer\Tests\Fixer\StringNotation;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @author Filippo Tessarotto <zoeslam@gmail.com>
  16. *
  17. * @internal
  18. *
  19. * @covers \PhpCsFixer\Fixer\StringNotation\EscapeImplicitBackslashesFixer
  20. */
  21. final class EscapeImplicitBackslashesFixerTest extends AbstractFixerTestCase
  22. {
  23. /**
  24. * @param array<string, mixed> $configuration
  25. *
  26. * @dataProvider provideFixCases
  27. */
  28. public function testFix(string $expected, ?string $input = null, array $configuration = []): void
  29. {
  30. $this->fixer->configure($configuration);
  31. $this->doTest($expected, $input);
  32. }
  33. public static function provideFixCases(): iterable
  34. {
  35. yield [
  36. <<<'EOF'
  37. <?php $var = 'String (\\\'\r\n\x0) for My\Prefix\\';
  38. EOF
  39. ,
  40. ];
  41. yield [
  42. <<<'EOF'
  43. <?php $var = 'String (\\\'\\r\\n\\x0) for My\\Prefix\\';
  44. EOF
  45. ,
  46. <<<'EOF'
  47. <?php $var = 'String (\\\'\r\n\x0) for My\Prefix\\';
  48. EOF
  49. ,
  50. ['single_quoted' => true],
  51. ];
  52. yield [
  53. <<<'EOF'
  54. <?php
  55. $var = "\\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z";
  56. $var = "\\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z \\' \\8\\9 \\xZ \\u";
  57. $var = "$foo \\A \\a \\' \\8\\9 \\xZ \\u ${bar}";
  58. $var = <<<HEREDOC_SYNTAX
  59. \\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z
  60. \\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z
  61. \\"
  62. \\'
  63. \\8\\9
  64. \\xZ
  65. \\u
  66. HEREDOC_SYNTAX;
  67. $var = <<<HEREDOC_SYNTAX
  68. $foo \\A \\a \\" \\' \\8\\9 \\xZ \\u ${bar}
  69. HEREDOC_SYNTAX;
  70. $var = <<<'NOWDOC_SYNTAX'
  71. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  72. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  73. \'
  74. \8\9
  75. \xZ
  76. \u
  77. NOWDOC_SYNTAX;
  78. EOF
  79. ,
  80. <<<'EOF'
  81. <?php
  82. $var = "\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z";
  83. $var = "\a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z \' \8\9 \xZ \u";
  84. $var = "$foo \A \a \' \8\9 \xZ \u ${bar}";
  85. $var = <<<HEREDOC_SYNTAX
  86. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  87. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  88. \"
  89. \'
  90. \8\9
  91. \xZ
  92. \u
  93. HEREDOC_SYNTAX;
  94. $var = <<<HEREDOC_SYNTAX
  95. $foo \A \a \" \' \8\9 \xZ \u ${bar}
  96. HEREDOC_SYNTAX;
  97. $var = <<<'NOWDOC_SYNTAX'
  98. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  99. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  100. \'
  101. \8\9
  102. \xZ
  103. \u
  104. NOWDOC_SYNTAX;
  105. EOF
  106. ,
  107. ];
  108. yield [
  109. <<<'EOF'
  110. <?php
  111. $var = "\e\f\n\r\t\v \\ \$ \"";
  112. $var = "$foo \e\f\n\r\t\v \\ \$ \" ${bar}";
  113. $var = <<<HEREDOC_SYNTAX
  114. \e\f\n\r\t\v \\ \$
  115. HEREDOC_SYNTAX;
  116. $var = <<<HEREDOC_SYNTAX
  117. $foo \e\f\n\r\t\v \\ \$ ${bar}
  118. HEREDOC_SYNTAX;
  119. EOF
  120. ,
  121. ];
  122. yield [
  123. <<<'EOF'
  124. <?php
  125. $var = "\0 \00 \000 \0000 \00000";
  126. $var = "$foo \0 \00 \000 \0000 \00000 ${bar}";
  127. $var = <<<HEREDOC_SYNTAX
  128. \0 \00 \000 \0000 \00000
  129. HEREDOC_SYNTAX;
  130. $var = <<<HEREDOC_SYNTAX
  131. $foo \0 \00 \000 \0000 \00000 ${bar}
  132. HEREDOC_SYNTAX;
  133. EOF
  134. ,
  135. ];
  136. yield [
  137. <<<'EOF'
  138. <?php
  139. $var = "\xA \x99 \u{0}";
  140. $var = "$foo \xA \x99 \u{0} ${bar}";
  141. $var = <<<HEREDOC_SYNTAX
  142. \xA \x99 \u{0}
  143. HEREDOC_SYNTAX;
  144. $var = <<<HEREDOC_SYNTAX
  145. $foo \xA \x99 \u{0} ${bar}
  146. HEREDOC_SYNTAX;
  147. EOF
  148. ,
  149. ];
  150. yield [
  151. <<<'EOF'
  152. <?php
  153. $var = 'backslash \\ already escaped';
  154. $var = 'code coverage';
  155. $var = "backslash \\ already escaped";
  156. $var = "code coverage";
  157. $var = <<<HEREDOC_SYNTAX
  158. backslash \\ already escaped
  159. HEREDOC_SYNTAX;
  160. $var = <<<HEREDOC_SYNTAX
  161. code coverage
  162. HEREDOC_SYNTAX;
  163. $var = <<<'NOWDOC_SYNTAX'
  164. backslash \\ already escaped
  165. NOWDOC_SYNTAX;
  166. $var = <<<'NOWDOC_SYNTAX'
  167. code coverage
  168. NOWDOC_SYNTAX;
  169. EOF
  170. ,
  171. ];
  172. yield [
  173. <<<'EOF'
  174. <?php
  175. $var = "\A\a \' \8\9 \xZ \u";
  176. $var = "$foo \A\a \' \8\9 \xZ \u ${bar}";
  177. EOF
  178. ,
  179. null,
  180. ['double_quoted' => false],
  181. ];
  182. yield [
  183. <<<'EOF'
  184. <?php
  185. $var = <<<HEREDOC_SYNTAX
  186. \A\Z
  187. \a\z
  188. \'
  189. \8\9
  190. \xZ
  191. \u
  192. HEREDOC_SYNTAX;
  193. $var = <<<HEREDOC_SYNTAX
  194. $foo
  195. \A\Z
  196. \a\z
  197. \'
  198. \8\9
  199. \xZ
  200. \u
  201. ${bar}
  202. HEREDOC_SYNTAX;
  203. EOF
  204. ,
  205. null,
  206. ['heredoc_syntax' => false],
  207. ];
  208. yield [
  209. <<<'EOF'
  210. <?php $var = b'String (\\\'\r\n\x0) for My\Prefix\\';
  211. EOF
  212. ,
  213. ];
  214. yield [
  215. <<<'EOF'
  216. <?php $var = b'String (\\\'\\r\\n\\x0) for My\\Prefix\\';
  217. EOF
  218. ,
  219. <<<'EOF'
  220. <?php $var = b'String (\\\'\r\n\x0) for My\Prefix\\';
  221. EOF
  222. ,
  223. ['single_quoted' => true],
  224. ];
  225. yield [
  226. <<<'EOF'
  227. <?php
  228. $var = b"\\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z";
  229. $var = b"\\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z \\' \\8\\9 \\xZ \\u";
  230. $var = b"$foo \\A \\a \\' \\8\\9 \\xZ \\u ${bar}";
  231. $var = b<<<HEREDOC_SYNTAX
  232. \\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z
  233. \\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z
  234. \\"
  235. \\'
  236. \\8\\9
  237. \\xZ
  238. \\u
  239. HEREDOC_SYNTAX;
  240. $var = b<<<HEREDOC_SYNTAX
  241. $foo \\A \\a \\" \\' \\8\\9 \\xZ \\u ${bar}
  242. HEREDOC_SYNTAX;
  243. $var = b<<<'NOWDOC_SYNTAX'
  244. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  245. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  246. \'
  247. \8\9
  248. \xZ
  249. \u
  250. NOWDOC_SYNTAX;
  251. EOF
  252. ,
  253. <<<'EOF'
  254. <?php
  255. $var = b"\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z";
  256. $var = b"\a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z \' \8\9 \xZ \u";
  257. $var = b"$foo \A \a \' \8\9 \xZ \u ${bar}";
  258. $var = b<<<HEREDOC_SYNTAX
  259. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  260. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  261. \"
  262. \'
  263. \8\9
  264. \xZ
  265. \u
  266. HEREDOC_SYNTAX;
  267. $var = b<<<HEREDOC_SYNTAX
  268. $foo \A \a \" \' \8\9 \xZ \u ${bar}
  269. HEREDOC_SYNTAX;
  270. $var = b<<<'NOWDOC_SYNTAX'
  271. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  272. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  273. \'
  274. \8\9
  275. \xZ
  276. \u
  277. NOWDOC_SYNTAX;
  278. EOF
  279. ,
  280. ];
  281. yield [
  282. <<<'EOF'
  283. <?php
  284. $var = b"\e\f\n\r\t\v \\ \$ \"";
  285. $var = b"$foo \e\f\n\r\t\v \\ \$ \" ${bar}";
  286. $var = b<<<HEREDOC_SYNTAX
  287. \e\f\n\r\t\v \\ \$
  288. HEREDOC_SYNTAX;
  289. $var = b<<<HEREDOC_SYNTAX
  290. $foo \e\f\n\r\t\v \\ \$ ${bar}
  291. HEREDOC_SYNTAX;
  292. EOF
  293. ,
  294. ];
  295. yield [
  296. <<<'EOF'
  297. <?php
  298. $var = b"\0 \00 \000 \0000 \00000";
  299. $var = b"$foo \0 \00 \000 \0000 \00000 ${bar}";
  300. $var = b<<<HEREDOC_SYNTAX
  301. \0 \00 \000 \0000 \00000
  302. HEREDOC_SYNTAX;
  303. $var = b<<<HEREDOC_SYNTAX
  304. $foo \0 \00 \000 \0000 \00000 ${bar}
  305. HEREDOC_SYNTAX;
  306. EOF
  307. ,
  308. ];
  309. yield [
  310. <<<'EOF'
  311. <?php
  312. $var = b"\xA \x99 \u{0}";
  313. $var = b"$foo \xA \x99 \u{0} ${bar}";
  314. $var = b<<<HEREDOC_SYNTAX
  315. \xA \x99 \u{0}
  316. HEREDOC_SYNTAX;
  317. $var = b<<<HEREDOC_SYNTAX
  318. $foo \xA \x99 \u{0} ${bar}
  319. HEREDOC_SYNTAX;
  320. EOF
  321. ,
  322. ];
  323. yield [
  324. <<<'EOF'
  325. <?php
  326. $var = b'backslash \\ already escaped';
  327. $var = b'code coverage';
  328. $var = b"backslash \\ already escaped";
  329. $var = b"code coverage";
  330. $var = b<<<HEREDOC_SYNTAX
  331. backslash \\ already escaped
  332. HEREDOC_SYNTAX;
  333. $var = b<<<HEREDOC_SYNTAX
  334. code coverage
  335. HEREDOC_SYNTAX;
  336. $var = b<<<'NOWDOC_SYNTAX'
  337. backslash \\ already escaped
  338. NOWDOC_SYNTAX;
  339. $var = b<<<'NOWDOC_SYNTAX'
  340. code coverage
  341. NOWDOC_SYNTAX;
  342. EOF
  343. ,
  344. ];
  345. yield [
  346. <<<'EOF'
  347. <?php
  348. $var = b"\A\a \' \8\9 \xZ \u";
  349. $var = b"$foo \A\a \' \8\9 \xZ \u ${bar}";
  350. EOF
  351. ,
  352. null,
  353. ['double_quoted' => false],
  354. ];
  355. yield [
  356. <<<'EOF'
  357. <?php
  358. $var = b<<<HEREDOC_SYNTAX
  359. \A\Z
  360. \a\z
  361. \'
  362. \8\9
  363. \xZ
  364. \u
  365. HEREDOC_SYNTAX;
  366. $var = b<<<HEREDOC_SYNTAX
  367. $foo
  368. \A\Z
  369. \a\z
  370. \'
  371. \8\9
  372. \xZ
  373. \u
  374. ${bar}
  375. HEREDOC_SYNTAX;
  376. EOF
  377. ,
  378. null,
  379. ['heredoc_syntax' => false],
  380. ];
  381. yield [
  382. <<<'EOF'
  383. <?php $var = B'String (\\\'\r\n\x0) for My\Prefix\\';
  384. EOF
  385. ,
  386. ];
  387. yield [
  388. <<<'EOF'
  389. <?php $var = B'String (\\\'\\r\\n\\x0) for My\\Prefix\\';
  390. EOF
  391. ,
  392. <<<'EOF'
  393. <?php $var = B'String (\\\'\r\n\x0) for My\Prefix\\';
  394. EOF
  395. ,
  396. ['single_quoted' => true],
  397. ];
  398. yield [
  399. <<<'EOF'
  400. <?php
  401. $var = B"\\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z";
  402. $var = B"\\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z \\' \\8\\9 \\xZ \\u";
  403. $var = B"$foo \\A \\a \\' \\8\\9 \\xZ \\u ${bar}";
  404. $var = B<<<HEREDOC_SYNTAX
  405. \\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z
  406. \\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z
  407. \\"
  408. \\'
  409. \\8\\9
  410. \\xZ
  411. \\u
  412. HEREDOC_SYNTAX;
  413. $var = B<<<HEREDOC_SYNTAX
  414. $foo \\A \\a \\" \\' \\8\\9 \\xZ \\u ${bar}
  415. HEREDOC_SYNTAX;
  416. $var = B<<<'NOWDOC_SYNTAX'
  417. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  418. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  419. \'
  420. \8\9
  421. \xZ
  422. \u
  423. NOWDOC_SYNTAX;
  424. EOF
  425. ,
  426. <<<'EOF'
  427. <?php
  428. $var = B"\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z";
  429. $var = B"\a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z \' \8\9 \xZ \u";
  430. $var = B"$foo \A \a \' \8\9 \xZ \u ${bar}";
  431. $var = B<<<HEREDOC_SYNTAX
  432. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  433. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  434. \"
  435. \'
  436. \8\9
  437. \xZ
  438. \u
  439. HEREDOC_SYNTAX;
  440. $var = B<<<HEREDOC_SYNTAX
  441. $foo \A \a \" \' \8\9 \xZ \u ${bar}
  442. HEREDOC_SYNTAX;
  443. $var = B<<<'NOWDOC_SYNTAX'
  444. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  445. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  446. \'
  447. \8\9
  448. \xZ
  449. \u
  450. NOWDOC_SYNTAX;
  451. EOF
  452. ,
  453. ];
  454. yield [
  455. <<<'EOF'
  456. <?php
  457. $var = B"\e\f\n\r\t\v \\ \$ \"";
  458. $var = B"$foo \e\f\n\r\t\v \\ \$ \" ${bar}";
  459. $var = B<<<HEREDOC_SYNTAX
  460. \e\f\n\r\t\v \\ \$
  461. HEREDOC_SYNTAX;
  462. $var = B<<<HEREDOC_SYNTAX
  463. $foo \e\f\n\r\t\v \\ \$ ${bar}
  464. HEREDOC_SYNTAX;
  465. EOF
  466. ,
  467. ];
  468. yield [
  469. <<<'EOF'
  470. <?php
  471. $var = B"\0 \00 \000 \0000 \00000";
  472. $var = B"$foo \0 \00 \000 \0000 \00000 ${bar}";
  473. $var = B<<<HEREDOC_SYNTAX
  474. \0 \00 \000 \0000 \00000
  475. HEREDOC_SYNTAX;
  476. $var = B<<<HEREDOC_SYNTAX
  477. $foo \0 \00 \000 \0000 \00000 ${bar}
  478. HEREDOC_SYNTAX;
  479. EOF
  480. ,
  481. ];
  482. yield [
  483. <<<'EOF'
  484. <?php
  485. $var = B"\xA \x99 \u{0}";
  486. $var = B"$foo \xA \x99 \u{0} ${bar}";
  487. $var = B<<<HEREDOC_SYNTAX
  488. \xA \x99 \u{0}
  489. HEREDOC_SYNTAX;
  490. $var = B<<<HEREDOC_SYNTAX
  491. $foo \xA \x99 \u{0} ${bar}
  492. HEREDOC_SYNTAX;
  493. EOF
  494. ,
  495. ];
  496. yield [
  497. <<<'EOF'
  498. <?php
  499. $var = B'backslash \\ already escaped';
  500. $var = B'code coverage';
  501. $var = B"backslash \\ already escaped";
  502. $var = B"code coverage";
  503. $var = B<<<HEREDOC_SYNTAX
  504. backslash \\ already escaped
  505. HEREDOC_SYNTAX;
  506. $var = B<<<HEREDOC_SYNTAX
  507. code coverage
  508. HEREDOC_SYNTAX;
  509. $var = B<<<'NOWDOC_SYNTAX'
  510. backslash \\ already escaped
  511. NOWDOC_SYNTAX;
  512. $var = B<<<'NOWDOC_SYNTAX'
  513. code coverage
  514. NOWDOC_SYNTAX;
  515. EOF
  516. ,
  517. ];
  518. yield [
  519. <<<'EOF'
  520. <?php
  521. $var = B"\A\a \' \8\9 \xZ \u";
  522. $var = B"$foo \A\a \' \8\9 \xZ \u ${bar}";
  523. EOF
  524. ,
  525. null,
  526. ['double_quoted' => false],
  527. ];
  528. yield [
  529. <<<'EOF'
  530. <?php
  531. $var = B<<<HEREDOC_SYNTAX
  532. \A\Z
  533. \a\z
  534. \'
  535. \8\9
  536. \xZ
  537. \u
  538. HEREDOC_SYNTAX;
  539. $var = B<<<HEREDOC_SYNTAX
  540. $foo
  541. \A\Z
  542. \a\z
  543. \'
  544. \8\9
  545. \xZ
  546. \u
  547. ${bar}
  548. HEREDOC_SYNTAX;
  549. EOF
  550. ,
  551. null,
  552. ['heredoc_syntax' => false],
  553. ];
  554. yield [
  555. <<<'EOF'
  556. <?php
  557. $var = "\\bar";
  558. $var = "\\bar";
  559. $var = "\\\\bar";
  560. $var = "\\\\bar";
  561. $var = "\\\\\\bar";
  562. $var = "\\\\\\bar";
  563. EOF
  564. ,
  565. <<<'EOF'
  566. <?php
  567. $var = "\bar";
  568. $var = "\\bar";
  569. $var = "\\\bar";
  570. $var = "\\\\bar";
  571. $var = "\\\\\bar";
  572. $var = "\\\\\\bar";
  573. EOF
  574. ,
  575. ];
  576. yield [
  577. <<<'EOF'
  578. <?php
  579. $var = '\\bar';
  580. $var = '\\bar';
  581. $var = '\\\\bar';
  582. $var = '\\\\bar';
  583. $var = '\\\\\\bar';
  584. $var = '\\\\\\bar';
  585. EOF
  586. ,
  587. <<<'EOF'
  588. <?php
  589. $var = '\bar';
  590. $var = '\\bar';
  591. $var = '\\\bar';
  592. $var = '\\\\bar';
  593. $var = '\\\\\bar';
  594. $var = '\\\\\\bar';
  595. EOF
  596. ,
  597. ['single_quoted' => true],
  598. ];
  599. yield [
  600. <<<'EOF'
  601. <?php
  602. $var = <<<TXT
  603. \\bar
  604. \\bar
  605. \\\\bar
  606. \\\\bar
  607. \\\\\\bar
  608. \\\\\\bar
  609. TXT;
  610. EOF
  611. ,
  612. <<<'EOF'
  613. <?php
  614. $var = <<<TXT
  615. \bar
  616. \\bar
  617. \\\bar
  618. \\\\bar
  619. \\\\\bar
  620. \\\\\\bar
  621. TXT;
  622. EOF
  623. ,
  624. ];
  625. yield [
  626. <<<'EOF'
  627. <?php
  628. $var = <<<'TXT'
  629. \bar
  630. \\bar
  631. \\\bar
  632. \\\\bar
  633. \\\\\bar
  634. \\\\\\bar
  635. TXT;
  636. EOF
  637. ,
  638. ];
  639. }
  640. }