From 74121b26c05dd01e0dc51edf40cd0db77435f78b Mon Sep 17 00:00:00 2001 From: Abduqodiri Qurbonzoda Date: Thu, 31 Mar 2022 01:55:08 +0300 Subject: [PATCH] Test octal literal in regex --- .../backend.native/tests/stdlib_external/utils.kt | 2 ++ libraries/stdlib/common/test/testUtils.kt | 2 ++ libraries/stdlib/js/test/core/testUtils.kt | 2 ++ libraries/stdlib/jvm/test/testUtilsJVM.kt | 2 ++ libraries/stdlib/test/text/RegexTest.kt | 9 +++++++++ libraries/stdlib/wasm/test/testUtils.kt | 2 ++ 6 files changed, 19 insertions(+) diff --git a/kotlin-native/backend.native/tests/stdlib_external/utils.kt b/kotlin-native/backend.native/tests/stdlib_external/utils.kt index 2e8ba0ab2c1..cebad086d7e 100644 --- a/kotlin-native/backend.native/tests/stdlib_external/utils.kt +++ b/kotlin-native/backend.native/tests/stdlib_external/utils.kt @@ -32,6 +32,8 @@ public actual val supportsSuppressedExceptions: Boolean get() = true public actual val supportsNamedCapturingGroup: Boolean get() = true +public actual val supportsOctalLiteralInRegex: Boolean get() = true + public actual val regexSplitUnicodeCodePointHandling: Boolean get() = true public actual object BackReferenceHandling { diff --git a/libraries/stdlib/common/test/testUtils.kt b/libraries/stdlib/common/test/testUtils.kt index a5e01f4422f..7acc2608c26 100644 --- a/libraries/stdlib/common/test/testUtils.kt +++ b/libraries/stdlib/common/test/testUtils.kt @@ -20,6 +20,8 @@ public expect val supportsSuppressedExceptions: Boolean public expect val supportsNamedCapturingGroup: Boolean +public expect val supportsOctalLiteralInRegex: Boolean + public expect val regexSplitUnicodeCodePointHandling: Boolean public enum class HandlingOption { diff --git a/libraries/stdlib/js/test/core/testUtils.kt b/libraries/stdlib/js/test/core/testUtils.kt index 0cd6dcae8c5..0791b9aa6ae 100644 --- a/libraries/stdlib/js/test/core/testUtils.kt +++ b/libraries/stdlib/js/test/core/testUtils.kt @@ -29,6 +29,8 @@ actual val supportsSuppressedExceptions: Boolean get() = true public actual val supportsNamedCapturingGroup: Boolean get() = true +public actual val supportsOctalLiteralInRegex: Boolean get() = false + public actual val regexSplitUnicodeCodePointHandling: Boolean get() = true public actual object BackReferenceHandling { diff --git a/libraries/stdlib/jvm/test/testUtilsJVM.kt b/libraries/stdlib/jvm/test/testUtilsJVM.kt index 6823759b78e..4e6a6fbf77c 100644 --- a/libraries/stdlib/jvm/test/testUtilsJVM.kt +++ b/libraries/stdlib/jvm/test/testUtilsJVM.kt @@ -43,6 +43,8 @@ public actual val supportsSuppressedExceptions: Boolean get() = !isJava6 public actual val supportsNamedCapturingGroup: Boolean get() = !isJava6 +public actual val supportsOctalLiteralInRegex: Boolean get() = true + public actual val regexSplitUnicodeCodePointHandling: Boolean get() = false public actual object BackReferenceHandling { diff --git a/libraries/stdlib/test/text/RegexTest.kt b/libraries/stdlib/test/text/RegexTest.kt index 30015647d0c..d2ca64dc57c 100644 --- a/libraries/stdlib/test/text/RegexTest.kt +++ b/libraries/stdlib/test/text/RegexTest.kt @@ -9,6 +9,7 @@ package test.text import test.regexSplitUnicodeCodePointHandling import test.supportsNamedCapturingGroup +import test.supportsOctalLiteralInRegex import test.BackReferenceHandling import test.HandlingOption import kotlin.test.* @@ -242,6 +243,14 @@ class RegexTest { testInvalidBackReference(BackReferenceHandling.notYetDefinedGroup, pattern = "a\\1(a)") } + @Test fun matchCharWithOctalValue() { + if (supportsOctalLiteralInRegex) { + assertEquals("aa", "a\\0141".toRegex().find("aaaa")?.value) + } else { + assertFails { "a\\0141".toRegex() } + } + } + @Test fun matchNamedGroupsWithBackReference() { if (!supportsNamedCapturingGroup) return diff --git a/libraries/stdlib/wasm/test/testUtils.kt b/libraries/stdlib/wasm/test/testUtils.kt index 1b1ca543915..7d02483e5de 100644 --- a/libraries/stdlib/wasm/test/testUtils.kt +++ b/libraries/stdlib/wasm/test/testUtils.kt @@ -30,6 +30,8 @@ actual val supportsSuppressedExceptions: Boolean get() = true public actual val supportsNamedCapturingGroup: Boolean get() = true +public actual val supportsOctalLiteralInRegex: Boolean get() = true + public actual val regexSplitUnicodeCodePointHandling: Boolean get() = true public actual object BackReferenceHandling {