From a66fe4125943a99f159f4c921aea3feeb654a18f Mon Sep 17 00:00:00 2001
From: Alexey Shvayka <shvaikalesh@gmail.com>
Date: Fri, 8 May 2020 18:33:04 +0300
Subject: [PATCH] Add String.prototype.matchAll test

---
 .../custom-matcher-emulates-undefined.js      | 30 +++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 test/annexB/built-ins/String/prototype/matchAll/custom-matcher-emulates-undefined.js

diff --git a/test/annexB/built-ins/String/prototype/matchAll/custom-matcher-emulates-undefined.js b/test/annexB/built-ins/String/prototype/matchAll/custom-matcher-emulates-undefined.js
new file mode 100644
index 0000000000..747b5d3a47
--- /dev/null
+++ b/test/annexB/built-ins/String/prototype/matchAll/custom-matcher-emulates-undefined.js
@@ -0,0 +1,30 @@
+// Copyright (C) 2020 Alexey Shvayka. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-string.prototype.matchall
+description: >
+  [[IsHTMLDDA]] object as @@matchAll method gets called.
+info: |
+  String.prototype.matchAll ( regexp )
+
+  [...]
+  2. If regexp is neither undefined nor null, then
+    [...]
+    c. Let matcher be ? GetMethod(regexp, @@matchAll).
+    d. If matcher is not undefined, then
+      i. Return ? Call(matcher, regexp, « O »).
+features: [Symbol.matchAll, String.prototype.matchAll, IsHTMLDDA]
+---*/
+
+var regexp = $262.IsHTMLDDA;
+var matcherGets = 0;
+Object.defineProperty(regexp, Symbol.matchAll, {
+  get: function() {
+    matcherGets += 1;
+    return regexp;
+  },
+  configurable: true,
+});
+
+assert.sameValue("".matchAll(regexp), null);
+assert.sameValue(matcherGets, 1);