diff --git a/.idea/workspace.xml b/.idea/workspace.xml index a81f110c286..f828a9fb0f0 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -6,17 +6,11 @@ - - - + - - - + - - - + @@ -126,10 +120,10 @@ - + - + @@ -146,10 +140,10 @@ - + - + @@ -202,7 +196,7 @@ - + @@ -210,37 +204,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -262,7 +229,7 @@ - + @@ -270,6 +237,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -295,7 +289,7 @@ - + @@ -317,8 +311,6 @@ @@ -393,6 +387,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + localhost @@ -782,13 +794,13 @@ - + - + @@ -796,9 +808,9 @@ - + - + @@ -836,7 +848,7 @@ @@ -867,75 +880,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -952,15 +896,6 @@ - - - - - - - - - @@ -979,16 +914,92 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java b/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java index d068f581b7a..56f18f43bcf 100644 --- a/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java +++ b/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java @@ -57,7 +57,7 @@ public class DeclarationVisitor extends TranslatorVisitor { @Override public JsStatement visitNamedFunction(@NotNull JetNamedFunction expression, @NotNull TranslationContext context) { FunctionTranslator functionTranslator = new FunctionTranslator(context); - return AstUtil.convertToStatement(functionTranslator.translateFunction(expression)); + return AstUtil.convertToStatement(functionTranslator.translateAsFunction(expression)); } } diff --git a/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java b/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java index 3e9571b48b8..984954e41e2 100644 --- a/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java +++ b/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java @@ -24,7 +24,7 @@ public final class FunctionTranslator extends AbstractTranslator { } @NotNull - public JsStatement translateFunction(@NotNull JetNamedFunction jetFunction) { + public JsStatement translateAsFunction(@NotNull JetNamedFunction jetFunction) { JsName functionName = translationContext().namespaceScope().declareFreshName(jetFunction.getName()); JsFunction function = generateFunctionObject(jetFunction); return AstUtil.convertToStatement(AstUtil.newAssignment diff --git a/translator/test/org/jetbrains/k2js/test/FunctionTest.java b/translator/test/org/jetbrains/k2js/test/FunctionTest.java index 9655c098ab4..0b5c626cacc 100644 --- a/translator/test/org/jetbrains/k2js/test/FunctionTest.java +++ b/translator/test/org/jetbrains/k2js/test/FunctionTest.java @@ -69,4 +69,9 @@ public final class FunctionTest extends TranslationTest { public void stringAssignment() throws Exception { testFooBoxIsTrue("stringAssignment.kt"); } + + @Test + public void functionUsedBeforeDeclaration() throws Exception { + testFooBoxIsTrue("functionUsedBeforeDeclaration.kt"); + } } diff --git a/translator/test_files/test_cases/functionUsedBeforeDeclaration.kt b/translator/test_files/test_cases/functionUsedBeforeDeclaration.kt new file mode 100644 index 00000000000..4a5620a2c39 --- /dev/null +++ b/translator/test_files/test_cases/functionUsedBeforeDeclaration.kt @@ -0,0 +1,13 @@ +namespace foo + + +fun box() : Boolean +{ + return f() +} + +fun f() : Boolean { + return true +} + +