diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetClsNavigationPolicy.java b/idea/src/org/jetbrains/jet/plugin/libraries/JetClsNavigationPolicy.java
index d0ccbe95d2a..2eed98d2547 100644
--- a/idea/src/org/jetbrains/jet/plugin/libraries/JetClsNavigationPolicy.java
+++ b/idea/src/org/jetbrains/jet/plugin/libraries/JetClsNavigationPolicy.java
@@ -57,6 +57,13 @@ public class JetClsNavigationPolicy implements ClsCustomNavigationPolicy {
return sourceFunction;
}
}
+ else if (jetDeclaration instanceof JetClass) {
+ assert clsMethod.getReturnType() == null; // constructor
+ JetClassOrObject sourceClass = JetSourceNavigationHelper.getSourceClass((JetClass) jetDeclaration);
+ if (sourceClass != null) {
+ return sourceClass;
+ }
+ }
return jetDeclaration;
}
diff --git a/idea/testData/libraries/usercode/Constructor.kt b/idea/testData/libraries/usercode/Constructor.kt
new file mode 100644
index 00000000000..7435c4e8c5c
--- /dev/null
+++ b/idea/testData/libraries/usercode/Constructor.kt
@@ -0,0 +1,6 @@
+import testData.libraries.*
+
+val x: ClassWithConstructor = ClassWithConstructor("abc", 239)
+
+// main.kt
+//public class <1><2>ClassWithConstructor(val a: String, b: Any)
diff --git a/idea/testData/libraries/usercode/ExtensionProperty.kt b/idea/testData/libraries/usercode/ExtensionProperty.kt
index 51834267f27..56ec6aafae9 100644
--- a/idea/testData/libraries/usercode/ExtensionProperty.kt
+++ b/idea/testData/libraries/usercode/ExtensionProperty.kt
@@ -17,6 +17,6 @@ fun foo() {
// return this
//}
//
-//public class Pair(val first: A, val second: B)
+//public class <2>Pair(val first: A, val second: B)
//
-//public val Pair.<2>exProp : String
\ No newline at end of file
+//public val Pair.<3>exProp : String
\ No newline at end of file
diff --git a/idea/tests/org/jetbrains/jet/plugin/libraries/LibrariesWithSourcesTest.java b/idea/tests/org/jetbrains/jet/plugin/libraries/LibrariesWithSourcesTest.java
index c8e29f669f2..0ee7f1b8436 100644
--- a/idea/tests/org/jetbrains/jet/plugin/libraries/LibrariesWithSourcesTest.java
+++ b/idea/tests/org/jetbrains/jet/plugin/libraries/LibrariesWithSourcesTest.java
@@ -75,6 +75,10 @@ public class LibrariesWithSourcesTest extends AbstractLibrariesTest {
doTest();
}
+ public void testConstructor() {
+ doTest();
+ }
+
private void doTest() {
userFile = LocalFileSystem.getInstance().findFileByPath(TEST_DATA_PATH + "/usercode/" + getTestName(false) + ".kt");
assertNotNull(userFile);