// Copyright 2017 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // This tests that RegExp dotall features are not enabled when // --harmony-regexp-dotall is not passed. // Flags: --no-harmony-regexp-dotall // Construction does not throw. { assertThrows("/./s", SyntaxError); assertThrows(() => RegExp(".", "s"), SyntaxError); assertThrows(() => new RegExp(".", "s"), SyntaxError); assertThrows(() => new RegExp(".", "wtf"), SyntaxError); } // The flags accessors. { let re = /./gimyu; assertEquals("gimuy", re.flags); assertTrue(re.global); assertTrue(re.ignoreCase); assertTrue(re.multiline); assertTrue(re.sticky); assertTrue(re.unicode); assertEquals(re.dotAll, undefined); assertFalse("dotAll" in re); let callCount = 0; re.__defineGetter__("dotAll", () => { callCount++; return undefined; }); assertEquals("gimuy", re.flags); assertEquals(callCount, 0); } // Default '.' behavior. { let re = /^.$/; assertTrue(re.test("a")); assertTrue(re.test("3")); assertTrue(re.test("π")); assertTrue(re.test("\u2027")); assertTrue(re.test("\u0085")); assertTrue(re.test("\v")); assertTrue(re.test("\f")); assertTrue(re.test("\u180E")); assertFalse(re.test("\u{10300}")); // Supplementary plane. assertFalse(re.test("\n")); assertFalse(re.test("\r")); assertFalse(re.test("\u2028")); assertFalse(re.test("\u2029")); } // Default '.' behavior (unicode). { let re = /^.$/u; assertTrue(re.test("a")); assertTrue(re.test("3")); assertTrue(re.test("π")); assertTrue(re.test("\u2027")); assertTrue(re.test("\u0085")); assertTrue(re.test("\v")); assertTrue(re.test("\f")); assertTrue(re.test("\u180E")); assertTrue(re.test("\u{10300}")); // Supplementary plane. assertFalse(re.test("\n")); assertFalse(re.test("\r")); assertFalse(re.test("\u2028")); assertFalse(re.test("\u2029")); }