Navigation: Fix navigation to library sources for Kotlin constructors

This commit is contained in:
Alexey Sedunov
2015-06-08 19:07:41 +03:00
parent e2d758463f
commit ba0000dde1
5 changed files with 20 additions and 4 deletions
@@ -340,7 +340,7 @@ public class JetSourceNavigationHelper {
}
@Nullable
public static JetNamedDeclaration getSourceFunction(@NotNull JetNamedFunction decompiledFunction) {
public static JetNamedDeclaration getSourceFunction(@NotNull JetFunction decompiledFunction) {
return getSourcePropertyOrFunction(decompiledFunction);
}
@@ -452,6 +452,16 @@ public class JetSourceNavigationHelper {
if (sourceParameters.size() != parameters.size()) return null;
return sourceParameters.get(index);
}
@Override
public JetDeclaration visitPrimaryConstructor(@NotNull JetPrimaryConstructor constructor, Void data) {
return getSourceFunction(constructor);
}
@Override
public JetDeclaration visitSecondaryConstructor(@NotNull JetSecondaryConstructor constructor, Void data) {
return getSourceFunction(constructor);
}
}
private static class LibrarySourcesScope extends GlobalSearchScope {
@@ -4,5 +4,7 @@
package testData.libraries
[[public final class ClassWithConstructor public constructor(a: kotlin.String, b: kotlin.Any) {
[public constructor(a: kotlin.String) { /* compiled code */ }]
[internal final val a: kotlin.String /* compiled code */]
}]]
+3 -1
View File
@@ -61,7 +61,9 @@ public abstract class ClassWithAbstractAndOpenMembers {
}
}
public class ClassWithConstructor(val a: String, b: Any)
public class ClassWithConstructor(val a: String, b: Any) {
constructor(a: String): this(a, a)
}
public fun main(args : Array<String>) {
}
@@ -1,6 +1,8 @@
import testData.libraries.*
val x: ClassWithConstructor = ClassWithConstructor("abc", 239)
val xx: ClassWithConstructor = ClassWithConstructor("abc")
// main.kt
//public class <1><2>ClassWithConstructor(val a: String, b: Any)
//public class <1><3>ClassWithConstructor<2>(val a: String, b: Any) {
// <4>constructor(a: String): this(a, a)
@@ -17,6 +17,6 @@ fun foo() {
// return this
//}
//
//public class <2>Pair<A, B>(val first: A, val second: B)
//public class Pair<A, B><2>(val first: A, val second: B)
//
//public val <T> Pair<T, T>.<3>exProp : String