| // WITH_STDLIB |
| // IGNORE_BACKEND: JS |
| |
| import kotlin.test.assertEquals |
| |
| // CHECK_CONTAINS_NO_CALLS: trimIndentConstant |
| fun trimIndentConstant(): String { |
| return """ |
| Hello, |
| World |
| """.trimIndent() |
| } |
| |
| // CHECK_CONTAINS_NO_CALLS: trimIndentInterpolatedUsingConstant |
| private const val HAS_INDENT = """Hello, |
| World""" |
| fun trimIndentInterpolatedUsingConstant(): String { |
| return """ |
| Hello, |
| $HAS_INDENT |
| World |
| """.trimIndent() |
| } |
| |
| // CHECK_CONTAINS_NO_CALLS: trimIndentReliesOnNestedStringBuilderFlatteningAndConstantConcatenation |
| private const val SPACES = " " |
| private const val HELLO = "Hello" |
| private const val WORLD = "World" |
| fun trimIndentReliesOnNestedStringBuilderFlatteningAndConstantConcatenation(): String { |
| return ("" + '\n' + SPACES + "${SPACES}Hey" + """ |
| ${HELLO + HELLO}, |
| ${WORLD + WORLD} |
| """ + SPACES).trimIndent() |
| } |
| |
| // CHECK_CALLED_IN_SCOPE: function=trimIndent scope=trimIndentNotConstant |
| fun trimIndentNotConstant(arg: String): String { |
| return arg.trimIndent() |
| } |
| |
| // CHECK_CALLED_IN_SCOPE: function=trimIndent scope=trimIndentInterpolated |
| fun trimIndentInterpolated(arg: Int): String { |
| return """ |
| Hello, |
| $arg |
| """.trimIndent() |
| } |
| |
| // CHECK_CONTAINS_NO_CALLS: trimMarginConstant |
| fun trimMarginConstant(): String { |
| return """ |
| |Hello, |
| |World |
| """.trimMargin() |
| } |
| |
| // CHECK_CONTAINS_NO_CALLS: trimMarginInterpolatedUsingConstant |
| private const val HAS_MARGIN = """Hello, |
| |World""" |
| fun trimMarginInterpolatedUsingConstant(): String { |
| return """ |
| |Hello, |
| |$HAS_MARGIN |
| |World |
| """.trimMargin() |
| } |
| |
| // CHECK_CONTAINS_NO_CALLS: trimMarginReliesOnNestedStringBuilderFlatteningAndConstantConcatenation |
| fun trimMarginReliesOnNestedStringBuilderFlatteningAndConstantConcatenation(): String { |
| return ("" + '\n' + SPACES + "${SPACES}|Hey" + """ |
| |${HELLO + HELLO}, |
| |${WORLD + WORLD} |
| """ + SPACES).trimMargin() |
| } |
| |
| // CHECK_CONTAINS_NO_CALLS: trimMarginConstantCustomPrefix |
| fun trimMarginConstantCustomPrefix(): String { |
| return """ |
| ###Hello, |
| ###World |
| """.trimMargin(marginPrefix = "###") |
| } |
| |
| // CHECK_CONTAINS_NO_CALLS: trimMarginConstantCustomPrefixInterpolatedUsingConstant |
| private const val OCTOTHORPE = '#' |
| fun trimMarginConstantCustomPrefixInterpolatedUsingConstant(): String { |
| return """ |
| #@#Hello, |
| #@#World |
| """.trimMargin(marginPrefix = "$OCTOTHORPE@$OCTOTHORPE") |
| } |
| |
| // CHECK_CALLED_IN_SCOPE: function=trimMargin$default scope=trimMarginNotConstant IGNORED_BACKENDS=JS_IR;JS_IR_ES6 |
| // CHECK_CALLED_IN_SCOPE: function=trimMargin scope=trimMarginNotConstant TARGET_BACKENDS=JS_IR;JS_IR_ES6 |
| fun trimMarginNotConstant(arg: String): String { |
| return arg.trimMargin() |
| } |
| |
| // CHECK_CALLED_IN_SCOPE: function=trimMargin scope=trimMarginNotConstantCustomPrefix |
| fun trimMarginNotConstantCustomPrefix(arg: String): String { |
| return arg.trimMargin("###") |
| } |
| |
| // CHECK_CALLED_IN_SCOPE: function=trimMargin$default scope=trimMarginInterpolated IGNORED_BACKENDS=JS_IR;JS_IR_ES6 |
| // CHECK_CALLED_IN_SCOPE: function=trimMargin scope=trimMarginInterpolated TARGET_BACKENDS=JS_IR;JS_IR_ES6 |
| fun trimMarginInterpolated(arg: Int): String { |
| return """ |
| |Hello, |
| |$arg |
| """.trimMargin() |
| } |
| |
| // CHECK_CALLED_IN_SCOPE: function=trimMargin scope=trimMarginConstantWithNonConstantCustomPrefix |
| fun trimMarginConstantWithNonConstantCustomPrefix(arg: String): String { |
| return """ |
| |Hello, |
| |World |
| """.trimMargin(arg) |
| } |
| |
| fun box(): String { |
| |
| assertEquals("Hello,\nWorld", trimIndentConstant()) |
| assertEquals("Hello,\nHello,\nWorld\nWorld", trimIndentInterpolatedUsingConstant()) |
| assertEquals("Hey\nHelloHello,\nWorldWorld", trimIndentReliesOnNestedStringBuilderFlatteningAndConstantConcatenation()) |
| assertEquals("Hello,\nWorld", trimIndentNotConstant(""" |
| Hello, |
| World |
| """)) |
| assertEquals("Hello,\n42", trimIndentInterpolated(42)) |
| |
| assertEquals("Hello,\nWorld", trimMarginConstant()) |
| assertEquals("Hello,\nHello,\nWorld\nWorld", trimMarginInterpolatedUsingConstant()) |
| assertEquals("Hey\nHelloHello,\nWorldWorld", trimMarginReliesOnNestedStringBuilderFlatteningAndConstantConcatenation()) |
| assertEquals("Hello,\nWorld", trimMarginConstantCustomPrefix()) |
| assertEquals("Hello,\nWorld", trimMarginConstantCustomPrefixInterpolatedUsingConstant()) |
| assertEquals("Hello,\nWorld", trimMarginNotConstant(""" |
| |Hello, |
| |World |
| """)) |
| assertEquals("Hello,\nWorld", trimMarginNotConstantCustomPrefix(""" |
| ###Hello, |
| ###World |
| """)) |
| assertEquals("Hello,\n42", trimMarginInterpolated(42)) |
| assertEquals("Hello,\nWorld", trimMarginConstantWithNonConstantCustomPrefix("|")) |
| |
| return "OK" |
| } |