From 6c9ca39286d1238a5f3513eee7f688f646d8d2e8 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Wed, 15 Apr 2015 16:20:34 +0300 Subject: [PATCH] Implement CharSequence.isEmpty method in stdlib.js. Remove corresponding intrinsic. --- js/js.libraries/src/core/string.kt | 2 -- js/js.libraries/src/core/stringsCode.kt | 1 + .../intrinsic/functions/factories/CompositeFIF.java | 10 ---------- .../functions/factories/StringOperationFIF.java | 1 - 4 files changed, 1 insertion(+), 13 deletions(-) diff --git a/js/js.libraries/src/core/string.kt b/js/js.libraries/src/core/string.kt index 4bbdcca4617..ac110beeb00 100644 --- a/js/js.libraries/src/core/string.kt +++ b/js/js.libraries/src/core/string.kt @@ -48,8 +48,6 @@ native public fun String.match(regex : String) : Array = noImpl native("length") public val CharSequence.size: Int get() = noImpl -library -public fun CharSequence.isEmpty(): Boolean = noImpl diff --git a/js/js.libraries/src/core/stringsCode.kt b/js/js.libraries/src/core/stringsCode.kt index 8ac42c0883a..f8af5be3a18 100644 --- a/js/js.libraries/src/core/stringsCode.kt +++ b/js/js.libraries/src/core/stringsCode.kt @@ -43,6 +43,7 @@ public inline fun String.matches(regex : String) : Boolean { return result != null && result.size() > 0 } +public inline fun CharSequence.isEmpty(): Boolean = this.length() == 0 public fun String.isBlank(): Boolean = length() == 0 || matches("^[\\s\\xA0]+$") diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/CompositeFIF.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/CompositeFIF.java index 11e390e1ca7..93f013adc3d 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/CompositeFIF.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/CompositeFIF.java @@ -35,16 +35,6 @@ public abstract class CompositeFIF implements FunctionIntrinsicFactory { @NotNull public static final FunctionIntrinsic LENGTH_PROPERTY_INTRINSIC = new BuiltInPropertyIntrinsic("length"); public static final FunctionIntrinsic MESSAGE_PROPERTY_INTRINSIC = new BuiltInPropertyIntrinsic("message"); - public static final FunctionIntrinsic IS_EMPTY_INTRINSIC = new FunctionIntrinsic() { - @NotNull - @Override - public JsExpression apply( - @Nullable JsExpression receiver, @NotNull List arguments, @NotNull TranslationContext context - ) { - assert receiver != null; - return JsAstUtils.equality(new JsNameRef("length", receiver), context.program().getNumberLiteral(0)); - } - }; @NotNull private final List, FunctionIntrinsic>> patternsAndIntrinsics = Lists.newArrayList(); diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/StringOperationFIF.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/StringOperationFIF.java index 14a821613ea..d0ffd1c4251 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/StringOperationFIF.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/StringOperationFIF.java @@ -31,6 +31,5 @@ public final class StringOperationFIF extends CompositeFIF { add(pattern("kotlin", "CharSequence", "charAt").checkOverridden(), new BuiltInFunctionIntrinsic("charAt")); add(pattern("kotlin", "CharSequence", "length").checkOverridden(), LENGTH_PROPERTY_INTRINSIC); add(pattern("kotlin", "CharSequence", "subSequence").checkOverridden(), new BuiltInFunctionIntrinsic("substring")); - add(pattern("kotlin.js", "isEmpty").isExtensionOf("kotlin.CharSequence"), IS_EMPTY_INTRINSIC); } }