Skip to content

Commit

Permalink
Additional tests for QuantifiableAssertion
Browse files Browse the repository at this point in the history
- Tests that lookahead and lookbehind are not extended to
  QuantifiableAssertion, as in tc39/ecma262#1102
- Additional tests verifying some more combinations of cases for
  QuantifiableAssertion being invalid in Unicode mode.

Based on the tests in https://chromium-review.googlesource.com/c/v8/v8/+/926102

These tests pass on V8 (if the throw for early errors is removed to
work around a V8 issue where RegExps don't have early errors).
  • Loading branch information
littledan committed Feb 26, 2018
1 parent b59d956 commit f9a0f05
Show file tree
Hide file tree
Showing 12 changed files with 220 additions and 0 deletions.
20 changes: 20 additions & 0 deletions test/language/literals/regexp/invalid-optional-lookbehind.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (C) 2018 Igalia S. L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-regular-expressions-patterns
description: Lookbehinds are not treated as a QuantifiableAssertion
info: |
Term[U] ::
[~U] QuantifiableAssertion Quantifier
QuantifiableAssertion[N]::
( ? = Disjunction[~U, ?N] )
( ? ! Disjunction[~U, ?N] )
negative:
phase: parse
type: SyntaxError
---*/

throw "Test262: This statement should not be evaluated.";

/.(?<=.)?/;
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (C) 2018 Igalia S. L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-regular-expressions-patterns
description: Lookbehinds are not treated as a QuantifiableAssertion
info: |
Term[U] ::
[~U] QuantifiableAssertion Quantifier
QuantifiableAssertion[N]::
( ? = Disjunction[~U, ?N] )
( ? ! Disjunction[~U, ?N] )
negative:
phase: parse
type: SyntaxError
---*/

throw "Test262: This statement should not be evaluated.";

/.(?<!.)?/;
20 changes: 20 additions & 0 deletions test/language/literals/regexp/invalid-range-lookbehind.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (C) 2018 Igalia S. L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-regular-expressions-patterns
description: Lookbehinds are not treated as a QuantifiableAssertion
info: |
Term[U] ::
[~U] QuantifiableAssertion Quantifier
QuantifiableAssertion[N]::
( ? = Disjunction[~U, ?N] )
( ? ! Disjunction[~U, ?N] )
negative:
phase: parse
type: SyntaxError
---*/

throw "Test262: This statement should not be evaluated.";

/.(?<=.){2,3}/;
20 changes: 20 additions & 0 deletions test/language/literals/regexp/invalid-range-negative-lookbehind.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (C) 2018 Igalia S. L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-regular-expressions-patterns
description: Lookbehinds are not treated as a QuantifiableAssertion
info: |
Term[U] ::
[~U] QuantifiableAssertion Quantifier
QuantifiableAssertion[N]::
( ? = Disjunction[~U, ?N] )
( ? ! Disjunction[~U, ?N] )
negative:
phase: parse
type: SyntaxError
---*/

throw "Test262: This statement should not be evaluated.";

/.(?<!.){2,3}/;
20 changes: 20 additions & 0 deletions test/language/literals/regexp/u-invalid-optional-lookbehind.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (C) 2018 Igalia S. L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-regular-expressions-patterns
description: Lookbehinds are not treated as a QuantifiableAssertion
info: |
Term[U] ::
[~U] QuantifiableAssertion Quantifier
QuantifiableAssertion[N]::
( ? = Disjunction[~U, ?N] )
( ? ! Disjunction[~U, ?N] )
negative:
phase: parse
type: SyntaxError
---*/

throw "Test262: This statement should not be evaluated.";

/.(?<=.)?/u;
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-regular-expressions-patterns
es6id: B.1.4
description: Quantifiable assertions disallowed with `u` flag
info: |
The `u` flag precludes quantifiable assertions (even when Annex B is
honored)
Term[U] ::
[~U] QuantifiableAssertion Quantifier
negative:
phase: parse
type: SyntaxError
---*/

throw "Test262: This statement should not be evaluated.";

/.(?!.)?/u;
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (C) 2018 Igalia S. L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-regular-expressions-patterns
description: Lookbehinds are not treated as a QuantifiableAssertion
info: |
Term[U] ::
[~U] QuantifiableAssertion Quantifier
QuantifiableAssertion[N]::
( ? = Disjunction[~U, ?N] )
( ? ! Disjunction[~U, ?N] )
negative:
phase: parse
type: SyntaxError
---*/

throw "Test262: This statement should not be evaluated.";

/.(?<!.)?/u;
20 changes: 20 additions & 0 deletions test/language/literals/regexp/u-invalid-range-lookahead.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-regular-expressions-patterns
es6id: B.1.4
description: Quantifiable assertions disallowed with `u` flag
info: |
The `u` flag precludes quantifiable assertions (even when Annex B is
honored)
Term[U] ::
[~U] QuantifiableAssertion Quantifier
negative:
phase: parse
type: SyntaxError
---*/

throw "Test262: This statement should not be evaluated.";

/.(?=.){2,3}/u;
20 changes: 20 additions & 0 deletions test/language/literals/regexp/u-invalid-range-lookbehind.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (C) 2018 Igalia S. L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-regular-expressions-patterns
description: Lookbehinds are not treated as a QuantifiableAssertion
info: |
Term[U] ::
[~U] QuantifiableAssertion Quantifier
QuantifiableAssertion[N]::
( ? = Disjunction[~U, ?N] )
( ? ! Disjunction[~U, ?N] )
negative:
phase: parse
type: SyntaxError
---*/

throw "Test262: This statement should not be evaluated.";

/.(?<=.){2,3}/u;
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-regular-expressions-patterns
es6id: B.1.4
description: Quantifiable assertions disallowed with `u` flag
info: |
The `u` flag precludes quantifiable assertions (even when Annex B is
honored)
Term[U] ::
[~U] QuantifiableAssertion Quantifier
negative:
phase: parse
type: SyntaxError
---*/

throw "Test262: This statement should not be evaluated.";

/.(?!.){2,3}/u;
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (C) 2018 Igalia S. L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-regular-expressions-patterns
description: Lookbehinds are not treated as a QuantifiableAssertion
info: |
Term[U] ::
[~U] QuantifiableAssertion Quantifier
QuantifiableAssertion[N]::
( ? = Disjunction[~U, ?N] )
( ? ! Disjunction[~U, ?N] )
negative:
phase: parse
type: SyntaxError
---*/

throw "Test262: This statement should not be evaluated.";

/.(?<!.){2,3}/u;

0 comments on commit f9a0f05

Please sign in to comment.