From da081b632db2dadcceb6efa121e7236e7100fcc2 Mon Sep 17 00:00:00 2001 From: Pavel Talanov Date: Wed, 8 Feb 2012 16:08:50 +0400 Subject: [PATCH] add test for interpolated string fix minor todo --- jslib/src/core/math.kt | 10 +++++++--- .../reference/PropertyAccessTranslator.java | 5 +---- .../cases/objectToStringCallInTemplate.kt | 18 ++++++++++++++++++ .../org/jetbrains/k2js/test/StringTest.java | 9 ++++----- 4 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 translator/testFiles/expression/string/cases/objectToStringCallInTemplate.kt diff --git a/jslib/src/core/math.kt b/jslib/src/core/math.kt index 5d4864a58ab..b3ad3e1c167 100644 --- a/jslib/src/core/math.kt +++ b/jslib/src/core/math.kt @@ -3,7 +3,8 @@ package js; import js.native native -val Math = object { +class MathClass() { + val PI : Double = 1.0; fun random() : Double = 0.0; fun abs(value : Double) = 0.0 fun acos(value : Double) = 0.0 @@ -17,10 +18,13 @@ val Math = object { fun min(vararg values : Double) = 0.0 fun sqrt(value : Double) = 0.0 fun tan(value : Double) = 0.0 - fun log(value : Double) = 0.0 fun pow(base : Double, exp : Double) = 0.0 fun round(value : Double) = 0.0 fun floor(value : Double) = 0.0 fun ceil(value : Double) = 0.0 -} \ No newline at end of file + +} + +native +val Math = MathClass(); \ No newline at end of file diff --git a/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java b/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java index fd81fdefccf..f9940af4f37 100644 --- a/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java +++ b/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java @@ -79,10 +79,7 @@ public abstract class PropertyAccessTranslator extends AccessTranslator { public static boolean canBePropertyGetterCall(@NotNull JetQualifiedExpression expression, @NotNull TranslationContext context) { JetSimpleNameExpression selector = getSelectorAsSimpleName(expression); - if (selector == null) { - //TODO: never get there. review - return false; - } + assert selector != null : "Only names are allowed after the dot"; return canBePropertyGetterCall(selector, context); } diff --git a/translator/testFiles/expression/string/cases/objectToStringCallInTemplate.kt b/translator/testFiles/expression/string/cases/objectToStringCallInTemplate.kt new file mode 100644 index 00000000000..7eab5902391 --- /dev/null +++ b/translator/testFiles/expression/string/cases/objectToStringCallInTemplate.kt @@ -0,0 +1,18 @@ +package foo + +class A(var i : Int) { + fun toString() = "a$i" +} + +fun box() : Boolean { + var p = A(2); + var n = A(1); + if ("$p$n" != "a2a1") { + return false; + } + if ("${A(10)}" != "a10") { + return false; + } + return true; +} + diff --git a/translatorTests/test/org/jetbrains/k2js/test/StringTest.java b/translatorTests/test/org/jetbrains/k2js/test/StringTest.java index dfc1a8fbe71..de4d9a36573 100644 --- a/translatorTests/test/org/jetbrains/k2js/test/StringTest.java +++ b/translatorTests/test/org/jetbrains/k2js/test/StringTest.java @@ -12,28 +12,27 @@ public class StringTest extends AbstractExpressionTest { return MAIN; } - public void testStringConstant() throws Exception { testFooBoxIsTrue("stringConstant.kt"); } - public void testStringAssignment() throws Exception { testFooBoxIsTrue("stringAssignment.kt"); } - public void testIntInTemplate() throws Exception { testFunctionOutput("intInTemplate.kt", "foo", "box", "my age is 3"); } - public void testStringInTemplate() throws Exception { testFunctionOutput("stringInTemplate.kt", "foo", "box", "oHelloo"); } - public void testMultipleExpressionInTemplate() throws Exception { testFunctionOutput("multipleExpressionsInTemplate.kt", "foo", "box", "left = 3\nright = 2\nsum = 5\n"); } + + public void testToStringMethod() throws Exception { + testFooBoxIsTrue("objectToStringCallInTemplate.kt"); + } }