1--TEST--
2Parse errors during token_get_all()
3--EXTENSIONS--
4tokenizer
5--FILE--
6<?php
7
8function test_parse_error($code) {
9    try {
10        var_dump(token_get_all($code, TOKEN_PARSE));
11    } catch (ParseError $e) {
12        echo $e->getMessage(), "\n";
13    }
14
15    foreach (token_get_all($code) as $token) {
16        if (is_array($token)) {
17            echo token_name($token[0]), " ($token[1])\n";
18        } else {
19            echo "$token\n";
20        }
21    }
22    echo "\n";
23}
24
25test_parse_error('<?php var_dump(078);');
26test_parse_error('<?php var_dump("\u{xyz}");');
27test_parse_error('<?php var_dump("\u{ffffff}");');
28test_parse_error('<?php var_dump(078 + 078);');
29
30?>
31--EXPECT--
32Invalid numeric literal
33T_OPEN_TAG (<?php )
34T_STRING (var_dump)
35(
36T_LNUMBER (078)
37)
38;
39
40Invalid UTF-8 codepoint escape sequence
41T_OPEN_TAG (<?php )
42T_STRING (var_dump)
43(
44T_CONSTANT_ENCAPSED_STRING ("\u{xyz}")
45)
46;
47
48Invalid UTF-8 codepoint escape sequence: Codepoint too large
49T_OPEN_TAG (<?php )
50T_STRING (var_dump)
51(
52T_CONSTANT_ENCAPSED_STRING ("\u{ffffff}")
53)
54;
55
56Invalid numeric literal
57T_OPEN_TAG (<?php )
58T_STRING (var_dump)
59(
60T_LNUMBER (078)
61T_WHITESPACE ( )
62+
63T_WHITESPACE ( )
64T_LNUMBER (078)
65)
66;
67