From d7f166eda375f3395163313be3922b77fb10260a Mon Sep 17 00:00:00 2001 From: Abduqodiri Qurbonzoda Date: Sun, 13 Nov 2022 13:39:31 +0200 Subject: [PATCH] [K/N] Remove unused SupplementaryCharSet in regex Motivation: The node was never used. Perhaps, it was copied from apache harmony but ultimately, despite possible performance impact, SequenceSet was used instead. See Pattern.processCharSet and AbstractSet.first. The performance impact wouldn't be noticeable anyway. Modification: Keeping unused code in project is not a good practice, so get rid of it. Result: Less code to maintain. --- .../src/kotlin/text/regex/sets/CharSet.kt | 1 - .../src/kotlin/text/regex/sets/RangeSet.kt | 1 - .../src/kotlin/text/regex/sets/SequenceSet.kt | 2 - .../text/regex/sets/SupplementaryCharSet.kt | 108 ------------------ .../text/regex/sets/SupplementaryRangeSet.kt | 1 - .../text/regex/sets/SurrogateCharSets.kt | 2 - .../text/regex/sets/SurrogateRangeSet.kt | 1 - 7 files changed, 116 deletions(-) delete mode 100644 libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SupplementaryCharSet.kt diff --git a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/CharSet.kt b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/CharSet.kt index d8df165dc99..17d2d9156c8 100644 --- a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/CharSet.kt +++ b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/CharSet.kt @@ -80,7 +80,6 @@ open internal class CharSet(char: Char, val ignoreCase: Boolean = false) : LeafS return when (set) { is CharSet -> set.char == char is RangeSet -> set.accepts(0, char.toString()) > 0 - is SupplementaryCharSet -> false is SupplementaryRangeSet -> set.contains(char) else -> true } diff --git a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/RangeSet.kt b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/RangeSet.kt index d5029bb853c..4b173a79d30 100644 --- a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/RangeSet.kt +++ b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/RangeSet.kt @@ -46,7 +46,6 @@ open internal class RangeSet(charClass: AbstractCharClass, val ignoreCase: Boole return when (set) { is CharSet -> AbstractCharClass.intersects(chars, set.char.toInt()) is RangeSet -> AbstractCharClass.intersects(chars, set.chars) - is SupplementaryCharSet -> false is SupplementaryRangeSet -> AbstractCharClass.intersects(chars, set.chars) else -> true } diff --git a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SequenceSet.kt b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SequenceSet.kt index 2330015d012..c2e4056d943 100644 --- a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SequenceSet.kt +++ b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SequenceSet.kt @@ -97,8 +97,6 @@ open internal class SequenceSet(substring: CharSequence, val ignoreCase: Boolean is CharSet -> set.char == patternString[0] is RangeSet -> set.accepts(0, patternString.substring(0, 1)) > 0 is SupplementaryRangeSet -> set.contains(patternString[0]) || patternString.length > 1 && set.contains(Char.toCodePoint(patternString[0], patternString[1])) - is SupplementaryCharSet -> if (patternString.length > 1) set.codePoint == Char.toCodePoint(patternString[0], patternString[1]) - else false else -> true } } diff --git a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SupplementaryCharSet.kt b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SupplementaryCharSet.kt deleted file mode 100644 index b6b9b9dc427..00000000000 --- a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SupplementaryCharSet.kt +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the LICENSE file. - */ - -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * - * Portions, Copyright © 1991-2005 Unicode, Inc. The following applies to Unicode. - * - * COPYRIGHT AND PERMISSION NOTICE - * - * Copyright © 1991-2005 Unicode, Inc. All rights reserved. Distributed under - * the Terms of Use in http://www.unicode.org/copyright.html. Permission is - * hereby granted, free of charge, to any person obtaining a copy of the - * Unicode data files and any associated documentation (the "Data Files") - * or Unicode software and any associated documentation (the "Software") - * to deal in the Data Files or Software without restriction, including without - * limitation the rights to use, copy, modify, merge, publish, distribute, - * and/or sell copies of the Data Files or Software, and to permit persons - * to whom the Data Files or Software are furnished to do so, provided that - * (a) the above copyright notice(s) and this permission notice appear with - * all copies of the Data Files or Software, (b) both the above copyright - * notice(s) and this permission notice appear in associated documentation, - * and (c) there is clear notice in each modified Data File or in the Software - * as well as in the documentation associated with the Data File(s) or Software - * that the data or software has been modified. - - * THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY - * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT - * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS - * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THE DATA FILES OR SOFTWARE. - * - * Except as contained in this notice, the name of a copyright holder shall - * not be used in advertising or otherwise to promote the sale, use or other - * dealings in these Data Files or Software without prior written - * authorization of the copyright holder. - * - * 2. Additional terms from the Database: - * - * Copyright © 1995-1999 Unicode, Inc. All Rights reserved. - * - * Disclaimer - * - * The Unicode Character Database is provided as is by Unicode, Inc. - * No claims are made as to fitness for any particular purpose. No warranties - * of any kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been purchased - * on magnetic or optical media from Unicode, Inc., the sole remedy for any claim - * will be exchange of defective media within 90 days of receipt. This disclaimer - * is applicable for all other data files accompanying the Unicode Character Database, - * some of which have been compiled by the Unicode Consortium, and some of which - * have been supplied by other sources. - * - * Limitations on Rights to Redistribute This Data - * - * Recipient is granted the right to make copies in any form for internal - * distribution and to freely use the information supplied in the creation of - * products supporting the UnicodeTM Standard. The files in - * the Unicode Character Database can be redistributed to third parties or other - * organizations (whether for profit or not) as long as this notice and the disclaimer - * notice are retained. Information can be extracted from these files and used - * in documentation or programs, as long as there is an accompanying notice - * indicating the source. - */ - -package kotlin.text.regex - -/** - * Represents node accepting single supplementary codepoint. - */ -internal class SupplementaryCharSet(val codePoint: Int, ignoreCase: Boolean) - : SequenceSet(Char.toChars(codePoint).concatToString(0, 2), ignoreCase) { - - override val name: String - get() = patternString - - override fun first(set: AbstractSet): Boolean { - return when (set) { - is SupplementaryCharSet -> set.codePoint == codePoint - is SupplementaryRangeSet -> set.contains(codePoint) - is CharSet, - is RangeSet -> false - else -> true - } - } -} diff --git a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SupplementaryRangeSet.kt b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SupplementaryRangeSet.kt index 81903dcde07..6edc13f887e 100644 --- a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SupplementaryRangeSet.kt +++ b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SupplementaryRangeSet.kt @@ -139,7 +139,6 @@ open internal class SupplementaryRangeSet(charClass: AbstractCharClass, val igno override fun first(set: AbstractSet): Boolean { @Suppress("DEPRECATION") return when(set) { - is SupplementaryCharSet -> AbstractCharClass.intersects(chars, set.codePoint) is CharSet -> AbstractCharClass.intersects(chars, set.char.toInt()) is SupplementaryRangeSet -> AbstractCharClass.intersects(chars, set.chars) is RangeSet -> AbstractCharClass.intersects(chars, set.chars) diff --git a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SurrogateCharSets.kt b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SurrogateCharSets.kt index 9f975af9b78..9eef795962c 100644 --- a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SurrogateCharSets.kt +++ b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SurrogateCharSets.kt @@ -144,7 +144,6 @@ internal class LowSurrogateCharSet(low: Char) : CharSet(low) { is LowSurrogateCharSet -> set.char == this.char is CharSet, is RangeSet, - is SupplementaryCharSet, is SupplementaryRangeSet -> false else -> true } @@ -208,7 +207,6 @@ internal class HighSurrogateCharSet(high: Char) : CharSet(high) { is HighSurrogateCharSet -> set.char == this.char is CharSet, is RangeSet, - is SupplementaryCharSet, is SupplementaryRangeSet -> false else -> true } diff --git a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SurrogateRangeSet.kt b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SurrogateRangeSet.kt index 14534cfcb17..d3ba3796d7e 100644 --- a/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SurrogateRangeSet.kt +++ b/libraries/stdlib/native-wasm/src/kotlin/text/regex/sets/SurrogateRangeSet.kt @@ -114,7 +114,6 @@ internal class SurrogateRangeSet(surrChars: AbstractCharClass) : RangeSet(surrCh is SurrogateRangeSet -> true is CharSet, is RangeSet, - is SupplementaryCharSet, is SupplementaryRangeSet -> false else -> true }