diff --git a/implementation-contributed/v8/intl/segmenter/constructor.js b/implementation-contributed/v8/intl/segmenter/constructor.js
deleted file mode 100644
index 655bb100df8166069241e35d676aac583046a0df..0000000000000000000000000000000000000000
--- a/implementation-contributed/v8/intl/segmenter/constructor.js
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright 2018 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.
-
-// Flags: --harmony-intl-segmenter
-
-// Segmenter constructor can't be called as function.
-assertThrows(() => Intl.Segmenter(["sr"]), TypeError);
-
-// Invalid locale string.
-assertThrows(() => new Intl.Segmenter(["abcdefghi"]), RangeError);
-
-assertDoesNotThrow(() => new Intl.Segmenter(["sr"], {}), TypeError);
-
-assertDoesNotThrow(() => new Intl.Segmenter([], {}));
-
-assertDoesNotThrow(() => new Intl.Segmenter(["fr", "ar"], {}));
-
-assertDoesNotThrow(() => new Intl.Segmenter({ 0: "ja", 1: "fr" }, {}));
-
-assertDoesNotThrow(() => new Intl.Segmenter({ 1: "ja", 2: "fr" }, {}));
-
-assertDoesNotThrow(() => new Intl.Segmenter(["sr"]));
-
-assertDoesNotThrow(() => new Intl.Segmenter());
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            lineBreakStyle: "strict",
-            granularity: "grapheme"
-        })
-);
-
-assertDoesNotThrow(
-    () => new Intl.Segmenter(["sr"], { granularity: "sentence" })
-);
-
-assertDoesNotThrow(() => new Intl.Segmenter(["sr"], { granularity: "word" }));
-
-assertDoesNotThrow(
-    () => new Intl.Segmenter(["sr"], { granularity: "grapheme" })
-);
-
-assertDoesNotThrow(() => new Intl.Segmenter(["sr"], { granularity: "line" }));
-
-assertThrows(
-    () => new Intl.Segmenter(["sr"], { granularity: "standard" }),
-    RangeError
-);
-
-assertDoesNotThrow(
-    () => new Intl.Segmenter(["sr"], { lineBreakStyle: "normal" })
-);
-
-assertDoesNotThrow(
-    () => new Intl.Segmenter(["sr"], { lineBreakStyle: "strict" })
-);
-
-assertDoesNotThrow(
-    () => new Intl.Segmenter(["sr"], { lineBreakStyle: "loose" })
-);
-
-assertThrows(
-    () => new Intl.Segmenter(["sr"], { lineBreakStyle: "giant" }),
-    RangeError
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "sentence",
-            lineBreakStyle: "normal"
-        })
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "sentence",
-            lineBreakStyle: "strict"
-        })
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "sentence",
-            lineBreakStyle: "loose"
-        })
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "word",
-            lineBreakStyle: "normal"
-        })
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "word",
-            lineBreakStyle: "strict"
-        })
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "word",
-            lineBreakStyle: "loose"
-        })
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "grapheme",
-            lineBreakStyle: "normal"
-        })
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "grapheme",
-            lineBreakStyle: "strict"
-        })
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "grapheme",
-            lineBreakStyle: "loose"
-        })
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "line",
-            lineBreakStyle: "loose"
-        })
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "line",
-            lineBreakStyle: "normal"
-        })
-);
-
-assertDoesNotThrow(
-    () =>
-        new Intl.Segmenter(["sr"], {
-            granularity: "line",
-            lineBreakStyle: "strict"
-        })
-);
-
-// propagate exception from getter
-assertThrows(
-    () =>
-        new Intl.Segmenter(undefined, {
-            get localeMatcher() {
-                throw new TypeError("");
-            }
-        }),
-    TypeError
-);
-assertThrows(
-    () =>
-        new Intl.Segmenter(undefined, {
-            get lineBreakStyle() {
-                throw new TypeError("");
-            }
-        }),
-    TypeError
-);
-assertThrows(
-    () =>
-        new Intl.Segmenter(undefined, {
-            get granularity() {
-                throw new TypeError("");
-            }
-        }),
-    TypeError
-);
-
-// Throws only once during construction.
-// Check for all getters to prevent regression.
-// Preserve the order of getter initialization.
-let getCount = 0;
-let localeMatcher = -1;
-let lineBreakStyle = -1;
-let granularity = -1;
-
-new Intl.Segmenter(["en-US"], {
-    get localeMatcher() {
-        localeMatcher = ++getCount;
-    },
-    get lineBreakStyle() {
-        lineBreakStyle = ++getCount;
-    },
-    get granularity() {
-        granularity = ++getCount;
-    }
-});
-
-assertEquals(1, localeMatcher);
-assertEquals(2, lineBreakStyle);
-assertEquals(3, granularity);
diff --git a/implementation-contributed/v8/intl/segmenter/resolved-options.js b/implementation-contributed/v8/intl/segmenter/resolved-options.js
deleted file mode 100644
index 2e2a910ddb3b8a8b2bcaa1f3e2930cdfd51d8318..0000000000000000000000000000000000000000
--- a/implementation-contributed/v8/intl/segmenter/resolved-options.js
+++ /dev/null
@@ -1,299 +0,0 @@
-// Copyright 2018 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.
-
-// Flags: --harmony-intl-segmenter
-
-let segmenter = new Intl.Segmenter([], { granularity: "line" });
-// The default lineBreakStyle is 'normal'
-assertEquals("normal", segmenter.resolvedOptions().lineBreakStyle);
-
-segmenter = new Intl.Segmenter();
-assertEquals(undefined, segmenter.resolvedOptions().lineBreakStyle);
-
-// The default granularity is 'grapheme'
-assertEquals("grapheme", segmenter.resolvedOptions().granularity);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], { lineBreakStyle: "strict" }).resolvedOptions()
-        .lineBreakStyle
-);
-
-assertEquals(
-    "grapheme",
-    new Intl.Segmenter(["sr"], { lineBreakStyle: "strict" }).resolvedOptions()
-        .granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], { lineBreakStyle: "normal" }).resolvedOptions()
-        .lineBreakStyle
-);
-
-assertEquals(
-    "grapheme",
-    new Intl.Segmenter(["sr"], { lineBreakStyle: "normal" }).resolvedOptions()
-        .granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], { lineBreakStyle: "loose" }).resolvedOptions()
-        .lineBreakStyle
-);
-
-assertEquals(
-    "grapheme",
-    new Intl.Segmenter(["sr"], { lineBreakStyle: "loose" }).resolvedOptions()
-        .granularity
-);
-
-assertEquals(
-    "word",
-    new Intl.Segmenter(["sr"], { granularity: "word" }).resolvedOptions()
-        .granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], { granularity: "word" }).resolvedOptions()
-        .lineBreakStyle
-);
-
-assertEquals(
-    "grapheme",
-    new Intl.Segmenter(["sr"], { granularity: "grapheme" }).resolvedOptions()
-        .granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], { granularity: "grapheme" }).resolvedOptions()
-        .lineBreakStyle
-);
-
-assertEquals(
-    "sentence",
-    new Intl.Segmenter(["sr"], { granularity: "sentence" }).resolvedOptions()
-        .granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], { granularity: "sentence" }).resolvedOptions()
-        .lineBreakStyle
-);
-
-assertEquals(
-    "line",
-    new Intl.Segmenter(["sr"], { granularity: "line" }).resolvedOptions()
-        .granularity
-);
-
-assertEquals(
-    "normal",
-    new Intl.Segmenter(["sr"], { granularity: "line" }).resolvedOptions()
-        .lineBreakStyle
-);
-
-assertEquals(
-    "grapheme",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "loose",
-        granularity: "grapheme"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "loose",
-        granularity: "grapheme"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals(
-    "grapheme",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "strict",
-        granularity: "grapheme"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "strict",
-        granularity: "grapheme"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals(
-    "grapheme",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "normal",
-        granularity: "grapheme"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "normal",
-        granularity: "grapheme"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals(
-    "word",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "loose",
-        granularity: "word"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "loose",
-        granularity: "word"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals(
-    "word",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "strict",
-        granularity: "word"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "strict",
-        granularity: "word"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals(
-    "word",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "normal",
-        granularity: "word"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "normal",
-        granularity: "word"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals(
-    "sentence",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "loose",
-        granularity: "sentence"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "loose",
-        granularity: "sentence"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals(
-    "sentence",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "strict",
-        granularity: "sentence"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    undefined,
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "strict",
-        granularity: "sentence"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals(
-    "sentence",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "normal",
-        granularity: "sentence"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    "normal",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "normal",
-        granularity: "line"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals(
-    "line",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "loose",
-        granularity: "line"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    "loose",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "loose",
-        granularity: "line"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals(
-    "line",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "strict",
-        granularity: "line"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    "strict",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "strict",
-        granularity: "line"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals(
-    "line",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "normal",
-        granularity: "line"
-    }).resolvedOptions().granularity
-);
-
-assertEquals(
-    "normal",
-    new Intl.Segmenter(["sr"], {
-        lineBreakStyle: "normal",
-        granularity: "line"
-    }).resolvedOptions().lineBreakStyle
-);
-
-assertEquals("ar", new Intl.Segmenter(["ar"]).resolvedOptions().locale);
-
-assertEquals("ar", new Intl.Segmenter(["ar", "en"]).resolvedOptions().locale);
-
-assertEquals("fr", new Intl.Segmenter(["fr", "en"]).resolvedOptions().locale);
-
-assertEquals("ar", new Intl.Segmenter(["xyz", "ar"]).resolvedOptions().locale);
diff --git a/implementation-contributed/v8/intl/segmenter/segment-grapheme-next.js b/implementation-contributed/v8/intl/segmenter/segment-grapheme-next.js
deleted file mode 100644
index 41e812e69233d94f7694040e4632b0f547a27365..0000000000000000000000000000000000000000
--- a/implementation-contributed/v8/intl/segmenter/segment-grapheme-next.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2018 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.
-
-// Flags: --harmony-intl-segmenter
-
-const seg = new Intl.Segmenter([], {granularity: "grapheme"})
-for (const text of [
-    "Hello world!", // English
-    " Hello world! ",  // English with space before/after
-    " Hello world? Foo bar!", // English
-    "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech
-    "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?",  // Vietnamese
-    "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek
-    "Решение Индии о покупке российских С-400 расценили как вызов США",  // Russian
-    "הרופא שהציל נשים והנערה ששועבדה ע",  // Hebrew,
-    "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic
-    "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर",  //  Hindi
-    "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil
-    "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu
-    "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese
-    "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว",  // Thai
-    "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp",  // Japanese
-    "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean
-    ]) {
-  const iter = seg.segment(text);
-  let segments = [];
-  let oldPos = -1;
-  for (let result = iter.next(); !result.done; result = iter.next()) {
-    const v = result.value;
-    assertEquals(undefined, v.breakType);
-    assertEquals("string", typeof v.segment);
-    assertTrue(v.segment.length > 0);
-    segments.push(v.segment);
-    assertEquals("number", typeof v.position);
-    assertTrue(oldPos < v.position);
-    oldPos = v.position;
-  }
-  assertEquals(text, segments.join(''));
-}
diff --git a/implementation-contributed/v8/intl/segmenter/segment-line-following-modes.js b/implementation-contributed/v8/intl/segmenter/segment-line-following-modes.js
deleted file mode 100644
index 8f0810dcdf0be1f3fac79a619e8edc7f5c1aacb9..0000000000000000000000000000000000000000
--- a/implementation-contributed/v8/intl/segmenter/segment-line-following-modes.js
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2018 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.
-
-// Flags: --harmony-intl-segmenter
-
-let breakCounts = {};
-for (const locale of ["en", "fr", "ja", "zh", "ko"]) {
-  for (const lineBreakStyle of ["strict", "normal", "loose"]) {
-    const seg = new Intl.Segmenter(
-        [locale], {granularity: "line", lineBreakStyle: lineBreakStyle});
-    let opportunity = 0;
-    for (const text of [
-      // We know the following data caused different line break results between
-      // different modes.
-      // https://www.w3.org/TR/css-text-3/#propdef-line-break
-      // Japanese small kana or the Katakana-Hiragana prolonged sound mark
-      "あぁーぃーあーいーぁーぃー",
-      // hyphens:
-      // ‐ U+2010, – U+2013, 〜 U+301C, ゠ U+30A0
-      "ABC‐DEF–GHI〜JKL゠MNO",
-      // iteration marks:
-      // 々 U+3005, 〻 U+303B, ゝ U+309D, ゞ U+309E, ヽ U+30FD, ヾ U+30FE
-      "あ々あ〻あゝあゞあヽあヾあ",
-      // centered punctuation marks:
-      // ・ U+30FB, : U+FF1A, ; U+FF1B, ・ U+FF65, ‼ U+203C
-      "ABC・DEF:GHI;JKL・MNO‼PQR",
-      // centered punctuation marks:
-      // ⁇ U+2047, ⁈ U+2048, ⁉ U+2049, ! U+FF01, ? U+FF1F
-      "ABC⁇DEF⁈GHI⁉JKL!MNO?PQR",
-      ]) {
-      const iter = seg.segment(text);
-      while (!iter.following()) {
-        opportunity++;
-      }
-    }
-    breakCounts[locale + "-" + lineBreakStyle] = opportunity;
-  }
-}
-// In Japanese
-// Just test the break count in loose mode is greater than normal mode.
-assertTrue(breakCounts["ja-loose"] > breakCounts["ja-normal"]);
-// and test the break count in normal mode is greater than strict mode.
-assertTrue(breakCounts["ja-normal"] > breakCounts["ja-strict"]);
-// In Chinese
-// Just test the break count in loose mode is greater than normal mode.
-assertTrue(breakCounts["zh-loose"] > breakCounts["zh-normal"]);
-// and test the break count in normal mode is greater than strict mode.
-assertTrue(breakCounts["zh-normal"] > breakCounts["zh-strict"]);
-// In English, French and Korean
-assertTrue(breakCounts["en-loose"] >= breakCounts["en-normal"]);
-assertTrue(breakCounts["fr-loose"] >= breakCounts["fr-normal"]);
-assertTrue(breakCounts["ko-loose"] >= breakCounts["ko-normal"]);
-// and test the break count in normal mode is greater than strict mode.
-assertTrue(breakCounts["en-normal"] > breakCounts["en-strict"]);
-assertTrue(breakCounts["fr-normal"] > breakCounts["fr-strict"]);
-assertTrue(breakCounts["ko-normal"] > breakCounts["ko-strict"]);
diff --git a/implementation-contributed/v8/intl/segmenter/segment-line-next.js b/implementation-contributed/v8/intl/segmenter/segment-line-next.js
deleted file mode 100644
index a4c76acfd18175f0103c65ec0a7d60381d621cca..0000000000000000000000000000000000000000
--- a/implementation-contributed/v8/intl/segmenter/segment-line-next.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2018 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.
-
-// Flags: --harmony-intl-segmenter
-
-const seg = new Intl.Segmenter([], {granularity: "line"})
-for (const text of [
-    "Hello world!", // English
-    " Hello world! ",  // English with space before/after
-    " Hello world? Foo bar!", // English
-    "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech
-    "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?",  // Vietnamese
-    "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek
-    "Решение Индии о покупке российских С-400 расценили как вызов США",  // Russian
-    "הרופא שהציל נשים והנערה ששועבדה ע",  // Hebrew,
-    "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic
-    "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर",  //  Hindi
-    "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil
-    "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu
-    "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese
-    "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว",  // Thai
-    "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp",  // Japanese
-    "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean
-    ]) {
-  const iter = seg.segment(text);
-  let segments = [];
-  let oldPos = -1;
-  for (let result = iter.next(); !result.done; result = iter.next()) {
-    const v = result.value;
-    assertTrue(["soft", "hard"].includes(iter.breakType), iter.breakType);
-    assertEquals("string", typeof v.segment);
-    assertTrue(v.segment.length > 0);
-    segments.push(v.segment);
-    assertEquals("number", typeof v.position);
-    assertTrue(oldPos < v.position);
-    oldPos = v.position;
-  }
-  assertEquals(text, segments.join(''));
-}
diff --git a/implementation-contributed/v8/intl/segmenter/segment-sentence-next.js b/implementation-contributed/v8/intl/segmenter/segment-sentence-next.js
deleted file mode 100644
index 8a76781e58f01d29acd32fe422123cc59a6fc5fa..0000000000000000000000000000000000000000
--- a/implementation-contributed/v8/intl/segmenter/segment-sentence-next.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2018 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.
-
-// Flags: --harmony-intl-segmenter
-
-const seg = new Intl.Segmenter([], {granularity: "sentence"})
-for (const text of [
-    "Hello world!", // English
-    " Hello world! ",  // English with space before/after
-    " Hello world? Foo bar!", // English
-    "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech
-    "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?",  // Vietnamese
-    "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek
-    "Решение Индии о покупке российских С-400 расценили как вызов США",  // Russian
-    "הרופא שהציל נשים והנערה ששועבדה ע",  // Hebrew,
-    "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic
-    "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर",  //  Hindi
-    "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil
-    "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu
-    "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese
-    "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว",  // Thai
-    "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp",  // Japanese
-    "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean
-    ]) {
-  const iter = seg.segment(text);
-  let segments = [];
-  let oldPos = -1;
-  for (let result = iter.next(); !result.done; result = iter.next()) {
-    const v = result.value;
-    assertTrue(["sep", "term"].includes(iter.breakType), iter.breakType);
-    assertEquals("string", typeof v.segment);
-    assertTrue(v.segment.length > 0);
-    segments.push(v.segment);
-    assertEquals("number", typeof v.position);
-    assertTrue(oldPos < v.position);
-    oldPos = v.position;
-  }
-  assertEquals(text, segments.join(''));
-}
diff --git a/implementation-contributed/v8/intl/segmenter/segment-word-next.js b/implementation-contributed/v8/intl/segmenter/segment-word-next.js
deleted file mode 100644
index 53b73793dffb6d0f51db56f402a0061d4f0d0317..0000000000000000000000000000000000000000
--- a/implementation-contributed/v8/intl/segmenter/segment-word-next.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2018 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.
-
-// Flags: --harmony-intl-segmenter
-
-const seg = new Intl.Segmenter([], {granularity: "word"})
-for (const text of [
-    "Hello world!", // English
-    " Hello world! ",  // English with space before/after
-    " Hello world? Foo bar!", // English
-    "Jedovatou mambu objevila žena v zahrádkářské kolonii.", // Czech
-    "Việt Nam: Nhất thể hóa sẽ khác Trung Quốc?",  // Vietnamese
-    "Σοβαρές ενστάσεις Κομισιόν για τον προϋπολογισμό της Ιταλίας", // Greek
-    "Решение Индии о покупке российских С-400 расценили как вызов США",  // Russian
-    "הרופא שהציל נשים והנערה ששועבדה ע",  // Hebrew,
-    "ترامب للملك سلمان: أنا جاد للغاية.. عليك دفع المزيد", // Arabic
-    "भारत की एस 400 मिसाइल के मुकाबले पाक की थाड, जानें कौन कितना ताकतवर",  //  Hindi
-    "ரெட் அலர்ட் எச்சரிக்கை; புதுச்சேரியில் நாளை அரசு விடுமுறை!", // Tamil
-    "'ఉత్తర్వులు అందే వరకు ఓటర్ల తుది జాబితాను వెబ్‌సైట్లో పెట్టవద్దు'", // Telugu
-    "台北》抹黑柯P失敗?朱學恒酸:姚文智氣pupu嗆大老闆", // Chinese
-    "วัดไทรตีระฆังเบาลงช่วงเข้าพรรษา เจ้าอาวาสเผยคนร้องเรียนรับผลกรรมแล้ว",  // Thai
-    "九州北部の一部が暴風域に入りました(日直予報士 2018年10月06日) - 日本気象協会 tenki.jp",  // Japanese
-    "법원 “다스 지분 처분권·수익권 모두 MB가 보유”", // Korean
-    ]) {
-  const iter = seg.segment(text);
-  let segments = [];
-  let oldPos = -1;
-  for (let result = iter.next(); !result.done; result = iter.next()) {
-    const v = result.value;
-    assertTrue(["word", "none"].includes(iter.breakType), iter.breakType);
-    assertEquals("string", typeof v.segment);
-    assertTrue(v.segment.length > 0);
-    segments.push(v.segment);
-    assertEquals("number", typeof v.position);
-    assertTrue(oldPos < v.position);
-    oldPos = v.position;
-  }
-  assertEquals(text, segments.join(''));
-}
diff --git a/implementation-contributed/v8/intl/segmenter/segment.js b/implementation-contributed/v8/intl/segmenter/segment.js
deleted file mode 100644
index 4c76b96e5422076d9c7f94c263d4627e3ee66856..0000000000000000000000000000000000000000
--- a/implementation-contributed/v8/intl/segmenter/segment.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2018 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.
-
-// Flags: --harmony-intl-segmenter
-
-assertEquals("function", typeof Intl.Segmenter.prototype.segment);
-assertEquals(1, Intl.Segmenter.prototype.segment.length);
-
-let seg = new Intl.Segmenter("en", {granularity: "word"})
-let res;
-
-// test with 0 args
-assertDoesNotThrow(() => res = seg.segment())
-// test with 1 arg
-assertDoesNotThrow(() => res = seg.segment("hello"))
-assertEquals("hello", res.next().value.segment);
-// test with 2 args
-assertDoesNotThrow(() => res = seg.segment("hello world"))
-assertEquals("hello", res.next().value.segment);
-
-// test with other types
-assertDoesNotThrow(() => res = seg.segment(undefined))
-assertEquals("undefined", res.next().value.segment);
-assertDoesNotThrow(() => res = seg.segment(null))
-assertEquals("null", res.next().value.segment);
-assertDoesNotThrow(() => res = seg.segment(true))
-assertEquals("true", res.next().value.segment);
-assertDoesNotThrow(() => res = seg.segment(false))
-assertEquals("false", res.next().value.segment);
-assertDoesNotThrow(() => res = seg.segment(1234))
-assertEquals("1234", res.next().value.segment);
-assertDoesNotThrow(() => res = seg.segment(3.1415926))
-assertEquals("3.1415926", res.next().value.segment);
-assertDoesNotThrow(() => res = seg.segment(["hello","world"]))
-assertEquals("hello", res.next().value.segment);
-assertDoesNotThrow(() => res = seg.segment({k: 'v'}))
-assertEquals("[", res.next().value.segment);
-assertThrows(() => res = seg.segment(Symbol()), TypeError)
diff --git a/implementation-contributed/v8/intl/segmenter/subclassing.js b/implementation-contributed/v8/intl/segmenter/subclassing.js
deleted file mode 100644
index 2bea1e88ce8c277bce91cee831ebe4b58ed13f58..0000000000000000000000000000000000000000
--- a/implementation-contributed/v8/intl/segmenter/subclassing.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2018 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.
-
-// Flags: --harmony-intl-segmenter
-
-// Test subclassing of Segmenter
-class CustomSegmenter extends Intl.Segmenter {
-  constructor(locales, options) {
-    super(locales, options);
-    this.isCustom = true;
-  }
-}
-
-const seg = new CustomSegmenter("zh");
-assertEquals(true, seg.isCustom, "Custom property");
-assertEquals(Object.getPrototypeOf(seg), CustomSegmenter.prototype, "Prototype");
diff --git a/implementation-contributed/v8/intl/segmenter/supported-locale.js b/implementation-contributed/v8/intl/segmenter/supported-locale.js
deleted file mode 100644
index 9197b6a8156a22861e8dbb1ab9328c797ad8da9e..0000000000000000000000000000000000000000
--- a/implementation-contributed/v8/intl/segmenter/supported-locale.js
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2018 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.
-
-// Flags: --harmony-intl-segmenter
-assertEquals(
-    typeof Intl.Segmenter.supportedLocalesOf,
-    "function",
-    "Intl.Segmenter.supportedLocalesOf should be a function"
-);
-
-const undef = Intl.Segmenter.supportedLocalesOf();
-assertEquals([], undef);
-
-const empty = Intl.Segmenter.supportedLocalesOf([]);
-assertEquals([], empty);
-
-const strLocale = Intl.Segmenter.supportedLocalesOf("sr");
-assertEquals("sr", strLocale[0]);
-
-const multiLocale = ["sr-Thai-RS", "de", "zh-CN"];
-assertEquals(multiLocale, Intl.Segmenter.supportedLocalesOf(multiLocale));
diff --git a/test/intl402/Segmenter/constructor/constructor/locales-valid.js b/test/intl402/Segmenter/constructor/constructor/locales-valid.js
index 08318192cbd05647ce5a49be2669550139e13667..06be557e990bfdf86e442f9c7f37e8a0d184e1d2 100644
--- a/test/intl402/Segmenter/constructor/constructor/locales-valid.js
+++ b/test/intl402/Segmenter/constructor/constructor/locales-valid.js
@@ -15,20 +15,26 @@ features: [Intl.Segmenter]
 const defaultLocale = new Intl.Segmenter().resolvedOptions().locale;
 
 const tests = [
-  [undefined, defaultLocale, "undefined"],
-  ["EN", "en", "Single value"],
-  [[], defaultLocale, "Empty array"],
-  [["en-GB-oed"], "en-GB", "Grandfathered"],
-  [["x-private"], defaultLocale, "Private", ["lookup"]],
-  [["en", "EN"], "en", "Duplicate value (canonical first)"],
-  [["EN", "en"], "en", "Duplicate value (canonical last)"],
-  [{ 0: "DE", length: 0 }, defaultLocale, "Object with zero length"],
-  [{ 0: "DE", length: 1 }, "de", "Object with length"],
+  [undefined, [defaultLocale], "undefined"],
+  ["EN", ["en"], "Single value"],
+  [[], [defaultLocale], "Empty array"],
+  [["sr"], ["sr"], "Single-element array"],
+  [["fr", "ar"], ["fr", "ar"], "Two-element array"],
+  [["xyz", "ar"], ["ar"], "Two-element array with unknown code"],
+  [["en-GB-oed"], ["en-GB"], "Grandfathered"],
+  [["x-private"], [defaultLocale], "Private", ["lookup"]],
+  [["en", "EN"], ["en"], "Duplicate value (canonical first)"],
+  [["EN", "en"], ["en"], "Duplicate value (canonical last)"],
+  [{ 0: "DE", length: 0 }, [defaultLocale], "Object with zero length"],
+  [{ 0: "DE", length: 1 }, ["de"], "Object with length"],
+  [{ 0: "ja", 1: "fr" }, [defaultLocale], "Object without length, indexed from 0"],
+  [{ 1: "ja", 2: "fr" }, [defaultLocale], "Object without length, indexed from 1"],
 ];
 
 for (const [locales, expected, name, matchers = ["best fit", "lookup"]] of tests) {
   for (const localeMatcher of matchers) {
     const segmenter = new Intl.Segmenter(locales, { localeMatcher });
-    assert.sameValue(segmenter.resolvedOptions().locale, expected, name);
+    const actual = segmenter.resolvedOptions().locale;
+    assert(expected.includes(actual), `${name}: expected one of ${expected}, found ${actual}`);
   }
 }
diff --git a/test/intl402/Segmenter/constructor/constructor/options-granularity-invalid.js b/test/intl402/Segmenter/constructor/constructor/options-granularity-invalid.js
index 36bd0c80c9d895fd361fde22b3afccad382a0604..3476dd4398d5613cf6547540957b4c0a1eb248e7 100644
--- a/test/intl402/Segmenter/constructor/constructor/options-granularity-invalid.js
+++ b/test/intl402/Segmenter/constructor/constructor/options-granularity-invalid.js
@@ -16,6 +16,7 @@ const invalidOptions = [
   null,
   1,
   "",
+  "standard",
   "Grapheme",
   "GRAPHEME",
   "grapheme\0",
diff --git a/test/intl402/Segmenter/constructor/constructor/options-lineBreakStyle-invalid.js b/test/intl402/Segmenter/constructor/constructor/options-lineBreakStyle-invalid.js
index 03cbbfbabad137dcb44689364ead7d864cb53aee..b1b892960aa3de6555585380abd392c7bb469bfe 100644
--- a/test/intl402/Segmenter/constructor/constructor/options-lineBreakStyle-invalid.js
+++ b/test/intl402/Segmenter/constructor/constructor/options-lineBreakStyle-invalid.js
@@ -17,6 +17,7 @@ const invalidOptions = [
   null,
   1,
   "",
+  "giant",
   "Strict",
   "STRICT",
   "strict\0",
diff --git a/test/intl402/Segmenter/constructor/constructor/options-toobject-prototype.js b/test/intl402/Segmenter/constructor/constructor/options-toobject-prototype.js
index 9b1ad79bb5c51201cc584044088de105f8707a35..d4163990ca5f5c7115f5d0c9213cec96b89992a0 100644
--- a/test/intl402/Segmenter/constructor/constructor/options-toobject-prototype.js
+++ b/test/intl402/Segmenter/constructor/constructor/options-toobject-prototype.js
@@ -26,6 +26,7 @@ const optionsArguments = [
   "test",
   7,
   Symbol(),
+  {},
 ];
 
 for (const options of optionsArguments) {
diff --git a/test/intl402/Segmenter/constructor/constructor/options-toobject.js b/test/intl402/Segmenter/constructor/constructor/options-toobject.js
index d0581d40ae42aa2bffe5f87cecf5eed3c9cfcb9c..ab3b6230c8f69a6890108f27d3e51a40c0f5bbb8 100644
--- a/test/intl402/Segmenter/constructor/constructor/options-toobject.js
+++ b/test/intl402/Segmenter/constructor/constructor/options-toobject.js
@@ -17,6 +17,7 @@ const optionsArguments = [
   "test",
   7,
   Symbol(),
+  {},
 ];
 
 for (const options of optionsArguments) {
diff --git a/test/intl402/Segmenter/constructor/constructor/options-valid-combinations.js b/test/intl402/Segmenter/constructor/constructor/options-valid-combinations.js
new file mode 100644
index 0000000000000000000000000000000000000000..027f9e388716bbfded7bb9ac89107a62a775e9ab
--- /dev/null
+++ b/test/intl402/Segmenter/constructor/constructor/options-valid-combinations.js
@@ -0,0 +1,59 @@
+// Copyright 2018 the V8 project authors, Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-Intl.Segmenter
+description: Checks handling of valid values for the granularity option to the Segmenter constructor.
+info: |
+    Intl.Segmenter ([ locales [ , options ]])
+
+    9. Let lineBreakStyle be ? GetOption(options, "lineBreakStyle", "string", « "strict", "normal", "loose" », "normal").
+    13. Let granularity be ? GetOption(options, "granularity", "string", « "grapheme", "word", "sentence", "line" », "grapheme").
+    14. Set segmenter.[[SegmenterGranularity]] to granularity.
+    15. If granularity is "line",
+        a. Set segmenter.[[SegmenterLineBreakStyle]] to r.[[lb]].
+features: [Intl.Segmenter]
+---*/
+
+const lineBreakStyleOptions = ["strict", "normal", "loose"];
+const granularityOptions = ["grapheme", "word", "sentence", "line"];
+const combinations = [];
+
+combinations.push([
+  {},
+  "grapheme",
+  undefined,
+]);
+
+for (const lineBreakStyle of lineBreakStyleOptions) {
+  combinations.push([
+    { lineBreakStyle },
+    "grapheme",
+    undefined,
+  ]);
+}
+
+for (const granularity of granularityOptions) {
+  combinations.push([
+    { granularity },
+    granularity,
+    granularity === "line" ? "normal" : undefined,
+  ]);
+}
+
+for (const lineBreakStyle of lineBreakStyleOptions) {
+  for (const granularity of granularityOptions) {
+    combinations.push([
+      { granularity, lineBreakStyle },
+      granularity,
+      granularity === "line" ? lineBreakStyle : undefined,
+    ]);
+  }
+}
+
+for (const [input, granularity, lineBreakStyle] of combinations) {
+  const segmenter = new Intl.Segmenter([], input);
+  const resolvedOptions = segmenter.resolvedOptions();
+  assert.sameValue(resolvedOptions.granularity, granularity);
+  assert.sameValue(resolvedOptions.lineBreakStyle, lineBreakStyle);
+}
diff --git a/test/intl402/Segmenter/constructor/supportedLocalesOf/locales-empty.js b/test/intl402/Segmenter/constructor/supportedLocalesOf/locales-empty.js
new file mode 100644
index 0000000000000000000000000000000000000000..b785c7603dfb7d537bb30ab565c5723399227447
--- /dev/null
+++ b/test/intl402/Segmenter/constructor/supportedLocalesOf/locales-empty.js
@@ -0,0 +1,19 @@
+// Copyright 2018 the V8 project authors, Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-Intl.Segmenter.supportedLocalesOf
+description: Checks handling of an empty locales argument to the supportedLocalesOf function.
+info: |
+    Intl.Segmenter.supportedLocalesOf ( locales [, options ])
+
+    3. Return ? SupportedLocales(availableLocales, requestedLocales, options).
+includes: [compareArray.js]
+features: [Intl.Segmenter]
+---*/
+
+assert.sameValue(typeof Intl.Segmenter.supportedLocalesOf, "function",
+                 "Should support Intl.Segmenter.supportedLocalesOf.");
+
+assert.compareArray(Intl.Segmenter.supportedLocalesOf(), []);
+assert.compareArray(Intl.Segmenter.supportedLocalesOf([]), []);
diff --git a/test/intl402/Segmenter/constructor/supportedLocalesOf/locales-specific.js b/test/intl402/Segmenter/constructor/supportedLocalesOf/locales-specific.js
new file mode 100644
index 0000000000000000000000000000000000000000..333818f00d08205bfbd9eeef3efb2cd653f2a4b4
--- /dev/null
+++ b/test/intl402/Segmenter/constructor/supportedLocalesOf/locales-specific.js
@@ -0,0 +1,22 @@
+// Copyright 2018 the V8 project authors, Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-Intl.Segmenter.supportedLocalesOf
+description: Checks handling of specific locales arguments to the supportedLocalesOf function.
+info: |
+    Intl.Segmenter.supportedLocalesOf ( locales [, options ])
+
+    3. Return ? SupportedLocales(availableLocales, requestedLocales, options).
+includes: [compareArray.js]
+locale: [sr, sr-Thai-RS, de, zh-CN]
+features: [Intl.Segmenter]
+---*/
+
+assert.sameValue(typeof Intl.Segmenter.supportedLocalesOf, "function",
+                 "Should support Intl.Segmenter.supportedLocalesOf.");
+
+assert.compareArray(Intl.Segmenter.supportedLocalesOf("sr"), ["sr"]);
+
+const multiLocale = ["sr-Thai-RS", "de", "zh-CN"];
+assert.compareArray(Intl.Segmenter.supportedLocalesOf(multiLocale), multiLocale);
diff --git a/test/intl402/Segmenter/prototype/segment/segment-grapheme-next.js b/test/intl402/Segmenter/prototype/segment/segment-grapheme-next.js
index 6a31f6866e76e4ba9fdd32ee7049e91219f15682..9d30c6ac15a2ddec05426e40b029ed1a201fefc8 100644
--- a/test/intl402/Segmenter/prototype/segment/segment-grapheme-next.js
+++ b/test/intl402/Segmenter/prototype/segment/segment-grapheme-next.js
@@ -30,12 +30,16 @@ for (const text of [
     ]) {
   const iter = seg.segment(text);
   let segments = [];
+  let oldPos = -1;
   for (let result = iter.next(); !result.done; result = iter.next()) {
     const v = result.value;
     assert.sameValue(undefined, v.breakType);
     assert.sameValue("string", typeof v.segment);
     assert(v.segment.length > 0);
     segments.push(v.segment);
+    assert.sameValue(typeof v.position, "number");
+    assert(oldPos < v.position);
+    oldPos = v.position;
   }
   assert.sameValue(text, segments.join(''));
 }
diff --git a/test/intl402/Segmenter/prototype/segment/segment-line-next.js b/test/intl402/Segmenter/prototype/segment/segment-line-next.js
index 01cd79a61d60f21c53641a28e7d879c870a79b08..3e95f8b825c8370fb0272de8cde3da09a2f5352d 100644
--- a/test/intl402/Segmenter/prototype/segment/segment-line-next.js
+++ b/test/intl402/Segmenter/prototype/segment/segment-line-next.js
@@ -30,12 +30,16 @@ for (const text of [
     ]) {
   const iter = seg.segment(text);
   let segments = [];
+  let oldPos = -1;
   for (let result = iter.next(); !result.done; result = iter.next()) {
     const v = result.value;
     assert(["soft", "hard"].includes(iter.breakType), iter.breakType);
     assert.sameValue("string", typeof v.segment);
     assert(v.segment.length > 0);
     segments.push(v.segment);
-   }
-   assert.sameValue(text, segments.join(''));
+    assert.sameValue(typeof v.position, "number");
+    assert(oldPos < v.position);
+    oldPos = v.position;
+  }
+  assert.sameValue(text, segments.join(''));
 }
diff --git a/test/intl402/Segmenter/prototype/segment/segment-sentence-next.js b/test/intl402/Segmenter/prototype/segment/segment-sentence-next.js
index 41492252f853115b05563b4c1f8232364431c0e3..9115d28ae3172a462aa664b8f7792e85b13aaff0 100644
--- a/test/intl402/Segmenter/prototype/segment/segment-sentence-next.js
+++ b/test/intl402/Segmenter/prototype/segment/segment-sentence-next.js
@@ -30,12 +30,16 @@ for (const text of [
     ]) {
   const iter = seg.segment(text);
   let segments = [];
+  let oldPos = -1;
   for (let result = iter.next(); !result.done; result = iter.next()) {
     const v = result.value;
     assert(["sep", "term"].includes(iter.breakType), iter.breakType);
     assert.sameValue("string", typeof v.segment);
     assert(v.segment.length > 0);
     segments.push(v.segment);
+    assert.sameValue(typeof v.position, "number");
+    assert(oldPos < v.position);
+    oldPos = v.position;
   }
   assert.sameValue(text, segments.join(''));
 }
diff --git a/test/intl402/Segmenter/prototype/segment/segment-tostring.js b/test/intl402/Segmenter/prototype/segment/segment-tostring.js
new file mode 100644
index 0000000000000000000000000000000000000000..5569d22f615664ea68d7a15b9fc6f738f8455142
--- /dev/null
+++ b/test/intl402/Segmenter/prototype/segment/segment-tostring.js
@@ -0,0 +1,36 @@
+// Copyright 2018 the V8 project authors, Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-Intl.Segmenter.prototype.segment
+description: Verifies the string coercion in the "segment" function of the Segmenter prototype object.
+info: |
+    Intl.Segmenter.prototype.segment( string )
+
+    3. Let string be ? ToString(string).
+features: [Intl.Segmenter]
+---*/
+
+const tests = [
+  [[], "undefined"],
+  [[undefined], "undefined"],
+  [[null], "null"],
+  [[true], "true"],
+  [[false], "false"],
+  [[12], "12"],
+  [[1.23], "1.23"],
+  [[["a", "b"]], "a"],
+  [[{}], "["], // "[object Object]"
+];
+
+const segmenter = new Intl.Segmenter("en", { "granularity": "word" });
+for (const [args, expected] of tests) {
+  const iterator = segmenter.segment(...args);
+  const result = iterator.next().value;
+  assert.sameValue(result.segment, expected, `Expected segment "${expected}", found "${result.segment}" for arguments ${args}`);
+  assert(["word", "none"].includes(result.breakType), `Expected valid breakType, found "${result.breakType}" for arguments ${args}`);
+  assert.sameValue(result.position, expected.length, `Expected position ${expected.length}, found ${result.position} for arguments ${args}`);
+}
+
+const symbol = Symbol();
+assert.throws(TypeError, () => segmenter.segment(symbol));
diff --git a/test/intl402/Segmenter/prototype/segment/segment-word-next.js b/test/intl402/Segmenter/prototype/segment/segment-word-next.js
index 27bed472789a16dfcb34026fd7a5bcae7bd6b0d0..975bbace598bee5873db6b5ed29ae2bcce5d5c2b 100644
--- a/test/intl402/Segmenter/prototype/segment/segment-word-next.js
+++ b/test/intl402/Segmenter/prototype/segment/segment-word-next.js
@@ -30,12 +30,16 @@ for (const text of [
     ]) {
   const iter = seg.segment(text);
   let segments = [];
+  let oldPos = -1;
   for (let result = iter.next(); !result.done; result = iter.next()) {
     const v = result.value;
     assert(["word", "none"].includes(iter.breakType), iter.breakType);
     assert.sameValue("string", typeof v.segment);
     assert(v.segment.length > 0);
     segments.push(v.segment);
+    assert.sameValue(typeof v.position, "number");
+    assert(oldPos < v.position);
+    oldPos = v.position;
   }
   assert.sameValue(text, segments.join(''));
 }