| <?php
var_dump(1 << -1);
var_dump(1 >> -1);
var_dump(
1
<<
-1
);
$string =
<<<EOD
This is a heredoc.
EOD;
/**
 * This is not a merge conflict, but a comment showing what
 * a merge conflict boundary looks:
 * <<<<<<< HEAD
 */
function test()
    {
        $arr = array(
            'a' => 'a'
<<<<<<< HEAD
            'b' => 'b'
=======
            'c' => 'c'
>>>>>>> master
        );
    }
/*
 * The above tests are based on "normal" tokens.
 * The below test checks that once the tokenizer breaks down because of
 * unexpected merge conflict boundaries - i.e. after the first merge conflict
 * opener in non-comment, non-heredoc/nowdoc, non-inline HTML code -, subsequent
 * merge conflict boundaries will still be detected correctly.
 */
/*
 * Testing detecting subsequent merge conflicts.
 *
<<<<<<< HEAD
 * @var string $bar
 */
public function foo($bar){ }
/**
============
The above is not the boundary, the below is.
=======
 * @var string $bar
>>>>>>> f19f8a5... Commit message
*/
// Test that stray boundaries, i.e. an opener without closer and such, are detected.
<<<<<<< HEAD
$a = 1;
=======
 |