1425bb815Sopenharmony_ci// Copyright JS Foundation and other contributors, http://js.foundation 2425bb815Sopenharmony_ci// 3425bb815Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 4425bb815Sopenharmony_ci// you may not use this file except in compliance with the License. 5425bb815Sopenharmony_ci// You may obtain a copy of the License at 6425bb815Sopenharmony_ci// 7425bb815Sopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 8425bb815Sopenharmony_ci// 9425bb815Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software 10425bb815Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS 11425bb815Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12425bb815Sopenharmony_ci// See the License for the specific language governing permissions and 13425bb815Sopenharmony_ci// limitations under the License. 14425bb815Sopenharmony_ci 15425bb815Sopenharmony_civar t; 16425bb815Sopenharmony_ci 17425bb815Sopenharmony_cit = /\//.exec("/"); 18425bb815Sopenharmony_ciassert (t == "/"); 19425bb815Sopenharmony_ci 20425bb815Sopenharmony_cit = /[/]/.exec("/"); 21425bb815Sopenharmony_ciassert ("a"+/x/+"b" == "a/x/b"); 22425bb815Sopenharmony_ci 23425bb815Sopenharmony_cit = /\/\[[\]/]/.exec("/[/"); 24425bb815Sopenharmony_ciassert (t == "/[/"); 25425bb815Sopenharmony_ci 26425bb815Sopenharmony_cit = /\u0000/.exec("\u0000"); 27425bb815Sopenharmony_ciassert (t == "\u0000"); 28425bb815Sopenharmony_ci 29425bb815Sopenharmony_citry { 30425bb815Sopenharmony_ci eval("/" + String.fromCharCode("0x0000") + "/"); 31425bb815Sopenharmony_ci} catch (e) { 32425bb815Sopenharmony_ci assert (false); 33425bb815Sopenharmony_ci} 34425bb815Sopenharmony_ci 35425bb815Sopenharmony_citry { 36425bb815Sopenharmony_ci eval("var x = 5\n\n/foo/"); 37425bb815Sopenharmony_ci assert(false); 38425bb815Sopenharmony_ci} catch (e) { 39425bb815Sopenharmony_ci assert(e instanceof SyntaxError); 40425bb815Sopenharmony_ci} 41425bb815Sopenharmony_ci 42425bb815Sopenharmony_citry { 43425bb815Sopenharmony_ci eval("var x = 5;\n\n/foo/"); 44425bb815Sopenharmony_ci} catch (e) { 45425bb815Sopenharmony_ci assert(false); 46425bb815Sopenharmony_ci} 47425bb815Sopenharmony_ci 48425bb815Sopenharmony_citry { 49425bb815Sopenharmony_ci eval("for (;false;/abc/.exec(\"abc\")) {5}"); 50425bb815Sopenharmony_ci} catch (e) { 51425bb815Sopenharmony_ci assert(false); 52425bb815Sopenharmony_ci} 53425bb815Sopenharmony_ci 54425bb815Sopenharmony_citry { 55425bb815Sopenharmony_ci eval("var a = [] /foo/"); 56425bb815Sopenharmony_ci assert(false); 57425bb815Sopenharmony_ci} catch (e) { 58425bb815Sopenharmony_ci assert(e instanceof SyntaxError); 59425bb815Sopenharmony_ci} 60425bb815Sopenharmony_ci 61425bb815Sopenharmony_citry { 62425bb815Sopenharmony_ci eval("/"); 63425bb815Sopenharmony_ci assert(false); 64425bb815Sopenharmony_ci} catch (e) { 65425bb815Sopenharmony_ci assert(e instanceof SyntaxError); 66425bb815Sopenharmony_ci} 67425bb815Sopenharmony_ci 68425bb815Sopenharmony_citry { 69425bb815Sopenharmony_ci eval("var x = /aaa/"); 70425bb815Sopenharmony_ci} catch (e) { 71425bb815Sopenharmony_ci assert (false); 72425bb815Sopenharmony_ci} 73425bb815Sopenharmony_ci 74425bb815Sopenharmony_citry { 75425bb815Sopenharmony_ci eval("{}/a/g"); 76425bb815Sopenharmony_ci} catch (e) { 77425bb815Sopenharmony_ci assert (false); 78425bb815Sopenharmony_ci} 79425bb815Sopenharmony_ci 80425bb815Sopenharmony_citry { 81425bb815Sopenharmony_ci eval("var a, g; +{}/a/g"); 82425bb815Sopenharmony_ci} catch (e) { 83425bb815Sopenharmony_ci assert (false); 84425bb815Sopenharmony_ci} 85