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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -542,35 +554,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -667,6 +651,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -742,11 +754,11 @@
-
-
-
-
-
+
+
+
+
+
localhost
@@ -782,13 +794,13 @@
-
+
-
+
@@ -796,9 +808,9 @@
-
+
-
+
@@ -836,7 +848,7 @@
-
+
@@ -858,6 +870,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
+}
+
+