blob: 7c1f88d79fe342117d700abd53354ba47c85a51d [file] [log] [blame]
Brian Silverman70325d62015-09-20 17:00:43 -04001<html>
2<body>
3
4
5<script>
6
7// General regular expression literal synching tests.
8
9var regexp = /x'/;
10<?state state=text, in_js=true, js_quoted=false?>
11
12var string = '<?state state=text, in_js=true, js_quoted=true?>';
13<?state state=text, in_js=true, js_quoted=false?>
14
15var op = 1 / 2;
16var string2 = '<?state state=text, in_js=true, js_quoted=true?>';
17<?state state=text, in_js=true, js_quoted=false?>
18
19return /x'/;
20<?state state=text, in_js=true, js_quoted=false?>
21
22
23// General regular expression state tests
24
25var regexp = / <?state js_state=regexp?> /; <?state js_state=text?>
26
27var a = /"hello/.exec("<?state state=text, in_js=true, js_quoted=true ?>");
28var a = /"hello"/.exec("<?state state=text, in_js=true, js_quoted=true ?>");
29
30var expression = 10 / <?state js_state=text?> / <?state js_state=regexp?> /;
31
32<?state js_state=text?>
33
34var expression2 = / <?state js_state=regexp?> /;
35
36if (window.frames.length < /\d+<?state js_state=regexp?>/.exec(<?state js_state=text?>)[0]) {
37 alert(/ '" <?state js_state=regexp?>/.exec(<?state js_state=text?>)/);
38 var quoted_string = "<?state js_state=dq?>" <?state js_state=text?>;
39}
40
41switch(/ <?state js_state=regexp?> /) { <?state js_state=text?>
42 case / <?state js_state=regexp?> /: <?state js_state=text?>
43 break;
44 case / \/<?state js_state=regexp?> /: <?state js_state=text?>
45 break;
46}
47
48delete / <?state js_state=regexp?> x / <?state js_state=text?>;
49id / <?state js_state=text?> x / <?state js_state=text?>;
50
51function test(/ <?state js_state=regexp?> /) {
52 return / <?state js_state=regexp?> /.exec(<?state js_state=text?>);
53}
54
55function test2(/ <?state js_state=regexp?> /, <?state js_state=text?>) {
56 return / '"<?state js_state=regexp?> /.exec(<?state js_state=text?>);
57}
58
59var a = "/<?state js_state=dq?>"/<?state js_state=text?>;
60
61test in / <?state js_state=regexp?>/;
62min / <?state js_state=text?>;
63IN / <?state js_state=text?>;
64
653.. /<?state js_state=text?>/;
660x3./<?state js_state=text?>/;
67
68// Escaping in regular expressions
69
70var a = / blah\/<?state js_state=regexp?>/<?state js_state=text?>,
71/\//<?state js_state=text?>,
72/\/*/<?state js_state=text?> /**/ <?state js_state=text?>,
73
74// Bracket expressions
75var a = [/[/] <?state js_state=regexp?> / <?state js_state=text?>,
76var a = /[/\]/ <?state js_state=regexp?> ]/ <?state js_state=text?>,
77var a = /[/\\]/ <?state js_state=text?>];
78
79/* Unary incremented/decremented variable, followed by a division. */
80
81var w = w++ / 1 <?state js_state=text?>;
82var w = w-- / 1 <?state js_state=text?>;
83
84/* Division after array acessor. */
85var test = xpto[2] / <?state js_state=text?>;
86
87/* Division after parenthesis expression. */
88var test = (2 + 2) / <?state js_state=text?>;
89
90/* Division with comments before the the previous token. */
91var test = x/* test *// <?state js_state=text?>;
92var test = x /* test *// <?state js_state=text?>;
93var test = x/* test */ / <?state js_state=text?>;
94var test = x /* test */ / <?state js_state=text?>;
95var test = x /* test */
96/ <?state js_state=text?>;
97
98var test = x // test
99/ <?state js_state=text?>;
100
101var test = x // test
102 / <?state js_state=text?>;
103
104var test = x // test
105
106/ <?state js_state=text?>;
107
108/* Regexp with multi line comment before the the previous token. */
109var test =/* test *// <?state js_state=regexp?> /;
110var test = /* test *// <?state js_state=regexp?> /;
111var test = /* test *// <?state js_state=regexp?> /;
112var test = /* test */ / <?state js_state=regexp?> /;
113var test = /* test */
114/ <?state js_state=regexp?> /;
115
116var test = // test
117/ <?state js_state=regexp?> /;
118
119var test = // test
120 / <?state js_state=regexp?> /;
121
122var test = // test
123
124/ <?state js_state=regexp?> /;
125
126
127/* Semicolon insertion after a code block */
128function() {} / <?state js_state=regexp?>/
129
130/****************************************************************************
131 Tests that won't pass right now due to design or implementation choices.
132*/
133
134/* Division after a regular expression.
135
136var test = <?nopstate js_state=text?>
137/ <?nopstate js_state=regexp?>
138/ <?nopstate js_state=text?>
139/ <?nopstate js_state=text?>
140/ <?nopstate js_state=regexp?>
141/ <?nopstate js_state=text?>;
142
143*/
144
145/* Division of an object literal
146
147{
148 a: 1,
149 b : 2
150} / <?nopstate js_state=text?>/
151
152*/
153
154/* Unary increment and decrement of regular expressions.
155
156var w = ++/ <?nopstate js_state=regexp?>/i;
157var x = --/ <?nopstate js_state=regexp?>/i
158
159*/
160
161
162</script>
163
164<script>
165
166/ <?state js_state=regexp?> /;
167
168</script>
169
170</body>
171</html>