From 68c0bb9dc2d3cb0b59d774b953c3b73b4876038b Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 18 Mar 2016 19:38:36 +0300 Subject: [PATCH] Generate navigateToDecompiledLibraryTest from the same test data as navigateToLibrarySourceTest Change test data format --- .../kotlin/generators/tests/GenerateTests.kt | 5 + .../usercode/ClassObject.decompiled.expected | 3 + .../navigation/usercode/ClassObject.kt | 6 +- .../usercode/ClassObject.source.expected | 3 + .../usercode/Constructor.decompiled.expected | 3 + .../navigation/usercode/Constructor.kt | 4 - .../usercode/Constructor.source.expected | 3 + .../usercode/Enum.decompiled.expected | 9 ++ .../decompiler/navigation/usercode/Enum.kt | 6 +- .../navigation/usercode/Enum.source.expected | 3 + .../ExtensionFunction.decompiled.expected | 2 + .../navigation/usercode/ExtensionFunction.kt | 4 - .../ExtensionFunction.source.expected | 2 + .../ExtensionProperty.decompiled.expected | 6 + .../navigation/usercode/ExtensionProperty.kt | 17 +-- .../ExtensionProperty.source.expected | 14 ++ ...yDeclaredTypeArguments.decompiled.expected | 2 + ...tionWithExplicitlyDeclaredTypeArguments.kt | 3 - ...citlyDeclaredTypeArguments.source.expected | 2 + ...hInferredTypeArguments.decompiled.expected | 2 + ...enericFunctionWithInferredTypeArguments.kt | 5 +- ...nWithInferredTypeArguments.source.expected | 2 + .../GlobalFunction.decompiled.expected | 8 ++ .../navigation/usercode/GlobalFunction.kt | 9 -- .../usercode/GlobalFunction.source.expected | 8 ++ .../GlobalProperty.decompiled.expected | 4 + .../navigation/usercode/GlobalProperty.kt | 5 - .../usercode/GlobalProperty.source.expected | 4 + .../usercode/NamedObject.decompiled.expected | 3 + .../navigation/usercode/NamedObject.kt | 4 - .../usercode/NamedObject.source.expected | 3 + ...loadedFunWithTypeParam.decompiled.expected | 4 + .../usercode/OverloadedFunWithTypeParam.kt | 6 - ...OverloadedFunWithTypeParam.source.expected | 5 + .../usercode/Property.decompiled.expected | 5 + .../navigation/usercode/Property.kt | 15 --- .../usercode/Property.source.expected | 14 ++ ...NameInDifferentSources.decompiled.expected | 4 + .../usercode/SameNameInDifferentSources.kt | 5 - ...SameNameInDifferentSources.source.expected | 4 + .../TypeWithSameShortName.decompiled.expected | 6 + .../usercode/TypeWithSameShortName.kt | 7 - .../TypeWithSameShortName.source.expected | 6 + ...st.kt => AbstractNavigateToLibraryTest.kt} | 42 +++--- ...igateToDecompiledLibraryTestGenerated.java | 121 ++++++++++++++++++ 45 files changed, 287 insertions(+), 111 deletions(-) create mode 100644 idea/testData/decompiler/navigation/usercode/ClassObject.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/ClassObject.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/Constructor.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/Constructor.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/Enum.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/Enum.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/ExtensionFunction.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/ExtensionFunction.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/ExtensionProperty.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/ExtensionProperty.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/GlobalFunction.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/GlobalFunction.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/GlobalProperty.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/GlobalProperty.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/NamedObject.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/NamedObject.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/Property.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/Property.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.source.expected create mode 100644 idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.decompiled.expected create mode 100644 idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.source.expected rename idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/{AbstractNavigateToLibrarySourceTest.kt => AbstractNavigateToLibraryTest.kt} (73%) create mode 100644 idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/NavigateToDecompiledLibraryTestGenerated.java diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 687d22e5b61..7c09c89280a 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -68,6 +68,7 @@ import org.jetbrains.kotlin.idea.debugger.AbstractKotlinSteppingTest import org.jetbrains.kotlin.idea.debugger.AbstractPositionManagerTest import org.jetbrains.kotlin.idea.debugger.AbstractSmartStepIntoTest import org.jetbrains.kotlin.idea.debugger.evaluate.* +import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToDecompiledLibraryTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToLibrarySourceTest import org.jetbrains.kotlin.idea.decompiler.stubBuilder.AbstractClsStubBuilderTest import org.jetbrains.kotlin.idea.decompiler.textBuilder.AbstractCommonDecompiledTextFromJsMetadataTest @@ -428,6 +429,10 @@ fun main(args: Array) { model("decompiler/navigation/usercode", testClassName ="UsercodeWithJSModule", testMethod = "doWithJSModuleTest") } + testClass() { + model("decompiler/navigation/usercode") + } + testClass() { model("navigation/implementations", recursive = false) } diff --git a/idea/testData/decompiler/navigation/usercode/ClassObject.decompiled.expected b/idea/testData/decompiler/navigation/usercode/ClassObject.decompiled.expected new file mode 100644 index 00000000000..f1492cd7d89 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/ClassObject.decompiled.expected @@ -0,0 +1,3 @@ +WithInnerAndObject.class + public companion <1>object { + public final fun <2>foo(): kotlin.Unit { /* compiled code */ } diff --git a/idea/testData/decompiler/navigation/usercode/ClassObject.kt b/idea/testData/decompiler/navigation/usercode/ClassObject.kt index f8f948b524d..e752cae45df 100644 --- a/idea/testData/decompiler/navigation/usercode/ClassObject.kt +++ b/idea/testData/decompiler/navigation/usercode/ClassObject.kt @@ -2,8 +2,4 @@ import testData.libraries.* fun foo() { WithInnerAndObject.foo() -} - -// main.kt -// companion <1>object { -// fun <2>foo() { \ No newline at end of file +} \ No newline at end of file diff --git a/idea/testData/decompiler/navigation/usercode/ClassObject.source.expected b/idea/testData/decompiler/navigation/usercode/ClassObject.source.expected new file mode 100644 index 00000000000..0bc8f307728 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/ClassObject.source.expected @@ -0,0 +1,3 @@ +main.kt + companion <1>object { + fun <2>foo() { diff --git a/idea/testData/decompiler/navigation/usercode/Constructor.decompiled.expected b/idea/testData/decompiler/navigation/usercode/Constructor.decompiled.expected new file mode 100644 index 00000000000..03e8d1f1e87 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/Constructor.decompiled.expected @@ -0,0 +1,3 @@ +ClassWithConstructor.class +public final class <1><3>ClassWithConstructor public <2>constructor(a: kotlin.String, b: kotlin.Any) { + public <4>constructor(a: kotlin.String) { /* compiled code */ } diff --git a/idea/testData/decompiler/navigation/usercode/Constructor.kt b/idea/testData/decompiler/navigation/usercode/Constructor.kt index 60cfd6cc6eb..d526e1af2bf 100644 --- a/idea/testData/decompiler/navigation/usercode/Constructor.kt +++ b/idea/testData/decompiler/navigation/usercode/Constructor.kt @@ -2,7 +2,3 @@ import testData.libraries.* val x: ClassWithConstructor = ClassWithConstructor("abc", 239) val xx: ClassWithConstructor = ClassWithConstructor("abc") - -// main.kt -//public class <1><3>ClassWithConstructor<2>(val a: String, b: Any) { -// <4>constructor(a: String): this(a, a) diff --git a/idea/testData/decompiler/navigation/usercode/Constructor.source.expected b/idea/testData/decompiler/navigation/usercode/Constructor.source.expected new file mode 100644 index 00000000000..e3d94013671 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/Constructor.source.expected @@ -0,0 +1,3 @@ +main.kt +public class <1><3>ClassWithConstructor<2>(val a: String, b: Any) { + <4>constructor(a: String): this(a, a) diff --git a/idea/testData/decompiler/navigation/usercode/Enum.decompiled.expected b/idea/testData/decompiler/navigation/usercode/Enum.decompiled.expected new file mode 100644 index 00000000000..7d1fc7cc74c --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/Enum.decompiled.expected @@ -0,0 +1,9 @@ +Color.class +public final enum class <1><2>Color private constructor(rgb: kotlin.Int) : kotlin.Enum { + <3>RED, + + GREEN, + + BLUE; + + public final val <4>rgb: kotlin.Int /* compiled code */ diff --git a/idea/testData/decompiler/navigation/usercode/Enum.kt b/idea/testData/decompiler/navigation/usercode/Enum.kt index 8f1120409f6..9cd922b23af 100644 --- a/idea/testData/decompiler/navigation/usercode/Enum.kt +++ b/idea/testData/decompiler/navigation/usercode/Enum.kt @@ -1,8 +1,4 @@ import testData.libraries.* val color: Color? = Color.RED -val rgb = color?.rgb - -// main.kt -//public enum class <1><2>Color(val <4>rgb : Int) { -// <3>RED(0xFF0000), \ No newline at end of file +val rgb = color?.rgb \ No newline at end of file diff --git a/idea/testData/decompiler/navigation/usercode/Enum.source.expected b/idea/testData/decompiler/navigation/usercode/Enum.source.expected new file mode 100644 index 00000000000..0332d5eaec1 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/Enum.source.expected @@ -0,0 +1,3 @@ +main.kt +public enum class <1><2>Color(val <4>rgb : Int) { + <3>RED(0xFF0000), diff --git a/idea/testData/decompiler/navigation/usercode/ExtensionFunction.decompiled.expected b/idea/testData/decompiler/navigation/usercode/ExtensionFunction.decompiled.expected new file mode 100644 index 00000000000..93bece98e4c --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/ExtensionFunction.decompiled.expected @@ -0,0 +1,2 @@ +MainKt.class +public inline fun T.<1>filter(predicate: (T) -> kotlin.Boolean): T? { /* compiled code */ } diff --git a/idea/testData/decompiler/navigation/usercode/ExtensionFunction.kt b/idea/testData/decompiler/navigation/usercode/ExtensionFunction.kt index f3eef688dd8..dd3f6155a51 100644 --- a/idea/testData/decompiler/navigation/usercode/ExtensionFunction.kt +++ b/idea/testData/decompiler/navigation/usercode/ExtensionFunction.kt @@ -1,7 +1,3 @@ import testData.libraries.* val v = 5.filter { it % 2 == 1 } - -// main.kt -//public inline fun T.<1>filter(predicate: (T)-> Boolean) : T? = this - diff --git a/idea/testData/decompiler/navigation/usercode/ExtensionFunction.source.expected b/idea/testData/decompiler/navigation/usercode/ExtensionFunction.source.expected new file mode 100644 index 00000000000..2bf796f9842 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/ExtensionFunction.source.expected @@ -0,0 +1,2 @@ +main.kt +public inline fun T.<1>filter(predicate: (T)-> Boolean) : T? = this diff --git a/idea/testData/decompiler/navigation/usercode/ExtensionProperty.decompiled.expected b/idea/testData/decompiler/navigation/usercode/ExtensionProperty.decompiled.expected new file mode 100644 index 00000000000..e4125f90894 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/ExtensionProperty.decompiled.expected @@ -0,0 +1,6 @@ +MainKt.class +public val kotlin.String.<1>exProp: kotlin.String /* compiled code */ + +public val testData.libraries.Pair.<3>exProp: kotlin.String /* compiled code */ + Pair.class +public final class Pair public <2>constructor(first: A, second: B) { diff --git a/idea/testData/decompiler/navigation/usercode/ExtensionProperty.kt b/idea/testData/decompiler/navigation/usercode/ExtensionProperty.kt index b47415e719c..106d91cb3f4 100644 --- a/idea/testData/decompiler/navigation/usercode/ExtensionProperty.kt +++ b/idea/testData/decompiler/navigation/usercode/ExtensionProperty.kt @@ -4,19 +4,4 @@ fun foo() { println("".exProp) val p = Pair(1, 2) println(p.exProp) -} - -// main.kt -//public val String.<1>exProp : String -//get() { -// return this -//} -// -//public val Int.exProp : Int -//get() { -// return this -//} -// -//public class Pair<2>(val first: A, val second: B) -// -//public val Pair.<3>exProp : String \ No newline at end of file +} \ No newline at end of file diff --git a/idea/testData/decompiler/navigation/usercode/ExtensionProperty.source.expected b/idea/testData/decompiler/navigation/usercode/ExtensionProperty.source.expected new file mode 100644 index 00000000000..040b7ff1fde --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/ExtensionProperty.source.expected @@ -0,0 +1,14 @@ +main.kt +public val String.<1>exProp : String +get() { + return this +} + +public val Int.exProp : Int +get() { + return this +} + +public class Pair<2>(val first: A, val second: B) + +public val Pair.<3>exProp : String diff --git a/idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.decompiled.expected b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.decompiled.expected new file mode 100644 index 00000000000..5d3963e676a --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.decompiled.expected @@ -0,0 +1,2 @@ +MainKt.class +public fun <1>genericFunc(): T { /* compiled code */ } diff --git a/idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.kt b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.kt index 390e1623f4c..4ae88435619 100644 --- a/idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.kt +++ b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.kt @@ -3,6 +3,3 @@ import testData.libraries.* fun test() { genericFunc() } - -// main.kt -//public fun <1>genericFunc() : T = throw Exception() \ No newline at end of file diff --git a/idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.source.expected b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.source.expected new file mode 100644 index 00000000000..16c9fb175dc --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.source.expected @@ -0,0 +1,2 @@ +main.kt +public fun <1>genericFunc() : T = throw Exception() diff --git a/idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.decompiled.expected b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.decompiled.expected new file mode 100644 index 00000000000..5d3963e676a --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.decompiled.expected @@ -0,0 +1,2 @@ +MainKt.class +public fun <1>genericFunc(): T { /* compiled code */ } diff --git a/idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.kt b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.kt index 08f87e41a75..f716de288dc 100644 --- a/idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.kt +++ b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.kt @@ -3,7 +3,4 @@ import testData.libraries.* fun test() { val s : String = genericFunc() -} - -// main.kt -//public fun <1>genericFunc() : T = throw Exception() \ No newline at end of file +} \ No newline at end of file diff --git a/idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.source.expected b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.source.expected new file mode 100644 index 00000000000..16c9fb175dc --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.source.expected @@ -0,0 +1,2 @@ +main.kt +public fun <1>genericFunc() : T = throw Exception() diff --git a/idea/testData/decompiler/navigation/usercode/GlobalFunction.decompiled.expected b/idea/testData/decompiler/navigation/usercode/GlobalFunction.decompiled.expected new file mode 100644 index 00000000000..03419804f9f --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/GlobalFunction.decompiled.expected @@ -0,0 +1,8 @@ +MainKt.class +public fun <4>func(): kotlin.Unit { /* compiled code */ } + +public fun func(cs: kotlin.CharSequence): kotlin.Unit { /* compiled code */ } + +public fun <3>func(a: kotlin.Int, b: kotlin.Int): kotlin.Unit { /* compiled code */ } + +public fun <1><2>func(a: kotlin.Int, b: kotlin.String /* = compiled code */): kotlin.Unit { /* compiled code */ } diff --git a/idea/testData/decompiler/navigation/usercode/GlobalFunction.kt b/idea/testData/decompiler/navigation/usercode/GlobalFunction.kt index 64af03c0bd4..79a2e7f28e1 100644 --- a/idea/testData/decompiler/navigation/usercode/GlobalFunction.kt +++ b/idea/testData/decompiler/navigation/usercode/GlobalFunction.kt @@ -6,12 +6,3 @@ fun foo() { func(5, 5) func() } - -// main.kt -//public fun <1><2>func(a : Int, b : String = "55") { -//} -// -//public fun <3>func(a : Int, b : Int) { -//} -// -//public fun <4>func() { diff --git a/idea/testData/decompiler/navigation/usercode/GlobalFunction.source.expected b/idea/testData/decompiler/navigation/usercode/GlobalFunction.source.expected new file mode 100644 index 00000000000..b1d82c82ac8 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/GlobalFunction.source.expected @@ -0,0 +1,8 @@ +main.kt +public fun <1><2>func(a : Int, b : String = "55") { +} + +public fun <3>func(a : Int, b : Int) { +} + +public fun <4>func() { diff --git a/idea/testData/decompiler/navigation/usercode/GlobalProperty.decompiled.expected b/idea/testData/decompiler/navigation/usercode/GlobalProperty.decompiled.expected new file mode 100644 index 00000000000..449539355ee --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/GlobalProperty.decompiled.expected @@ -0,0 +1,4 @@ +MainKt.class +public val <1>globalVal: testData.libraries.Pair /* compiled code */ + +public val <2>globalValWithGetter: kotlin.Long /* compiled code */ diff --git a/idea/testData/decompiler/navigation/usercode/GlobalProperty.kt b/idea/testData/decompiler/navigation/usercode/GlobalProperty.kt index 811cdf85c03..9ad1986f0db 100644 --- a/idea/testData/decompiler/navigation/usercode/GlobalProperty.kt +++ b/idea/testData/decompiler/navigation/usercode/GlobalProperty.kt @@ -4,8 +4,3 @@ fun foo() { println(testData.libraries.globalVal) println(globalValWithGetter) } - -// main.kt -//public val <1>globalVal : Pair = Pair(239, "239") -// -//public val <2>globalValWithGetter : Long \ No newline at end of file diff --git a/idea/testData/decompiler/navigation/usercode/GlobalProperty.source.expected b/idea/testData/decompiler/navigation/usercode/GlobalProperty.source.expected new file mode 100644 index 00000000000..314bba1e4fe --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/GlobalProperty.source.expected @@ -0,0 +1,4 @@ +main.kt +public val <1>globalVal : Pair = Pair(239, "239") + +public val <2>globalValWithGetter : Long diff --git a/idea/testData/decompiler/navigation/usercode/NamedObject.decompiled.expected b/idea/testData/decompiler/navigation/usercode/NamedObject.decompiled.expected new file mode 100644 index 00000000000..6e9cbb89eea --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/NamedObject.decompiled.expected @@ -0,0 +1,3 @@ +NamedObject.class +public object <1>NamedObject { + public final val <2>objectMember: kotlin.Int /* compiled code */ diff --git a/idea/testData/decompiler/navigation/usercode/NamedObject.kt b/idea/testData/decompiler/navigation/usercode/NamedObject.kt index ffb385c7877..a48ed7a34b1 100644 --- a/idea/testData/decompiler/navigation/usercode/NamedObject.kt +++ b/idea/testData/decompiler/navigation/usercode/NamedObject.kt @@ -1,7 +1,3 @@ import testData.libraries.* val x = NamedObject.objectMember - -// main.kt -//public object <1>NamedObject { -// public val <2>objectMember: Int = 1 diff --git a/idea/testData/decompiler/navigation/usercode/NamedObject.source.expected b/idea/testData/decompiler/navigation/usercode/NamedObject.source.expected new file mode 100644 index 00000000000..7a05be7cd6b --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/NamedObject.source.expected @@ -0,0 +1,3 @@ +main.kt +public object <1>NamedObject { + public val <2>objectMember: Int = 1 diff --git a/idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.decompiled.expected b/idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.decompiled.expected new file mode 100644 index 00000000000..403869f9f69 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.decompiled.expected @@ -0,0 +1,4 @@ +MainKt.class +public fun <2>funWithTypeParam(t: T): kotlin.Unit { /* compiled code */ } + +public fun <1>funWithTypeParam(t: T): kotlin.Unit { /* compiled code */ } diff --git a/idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.kt b/idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.kt index 5de2c17fbf5..3a7b8bc8916 100644 --- a/idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.kt +++ b/idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.kt @@ -4,9 +4,3 @@ fun main(args: Array) { funWithTypeParam(1) funWithTypeParam("") } - -// main.kt -//public fun <2>funWithTypeParam(t: T) { -//} -// -//public fun <1>funWithTypeParam(t: T) { diff --git a/idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.source.expected b/idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.source.expected new file mode 100644 index 00000000000..2ff3d09e923 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.source.expected @@ -0,0 +1,5 @@ +main.kt +public fun <2>funWithTypeParam(t: T) { +} + +public fun <1>funWithTypeParam(t: T) { diff --git a/idea/testData/decompiler/navigation/usercode/Property.decompiled.expected b/idea/testData/decompiler/navigation/usercode/Property.decompiled.expected new file mode 100644 index 00000000000..1a9b210693e --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/Property.decompiled.expected @@ -0,0 +1,5 @@ +ClassWithAbstractAndOpenMembers.class +public abstract class <1>ClassWithAbstractAndOpenMembers public constructor() { + public abstract val abstractVal: kotlin.String + + public abstract var <2><3>abstractVar: kotlin.String diff --git a/idea/testData/decompiler/navigation/usercode/Property.kt b/idea/testData/decompiler/navigation/usercode/Property.kt index 5f7a6e9ff1f..712afd77364 100644 --- a/idea/testData/decompiler/navigation/usercode/Property.kt +++ b/idea/testData/decompiler/navigation/usercode/Property.kt @@ -5,18 +5,3 @@ fun foo(a : ClassWithAbstractAndOpenMembers) { println(a.abstractVar) } -// main.kt -//public abstract class <1>ClassWithAbstractAndOpenMembers { -// public abstract fun abstractFun() -// public open fun openFun() { -// } -// -// public abstract val abstractVal : String -// public open val openVal : String = "" -// public open val openValWithGetter : String -// get() { -// return "239" -// } -// -// public abstract var <2><3>abstractVar : String - diff --git a/idea/testData/decompiler/navigation/usercode/Property.source.expected b/idea/testData/decompiler/navigation/usercode/Property.source.expected new file mode 100644 index 00000000000..1b129405dd7 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/Property.source.expected @@ -0,0 +1,14 @@ +main.kt +public abstract class <1>ClassWithAbstractAndOpenMembers { + public abstract fun abstractFun() + public open fun openFun() { + } + + public abstract val abstractVal : String + public open val openVal : String = "" + public open val openValWithGetter : String + get() { + return "239" + } + + public abstract var <2><3>abstractVar : String diff --git a/idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.decompiled.expected b/idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.decompiled.expected new file mode 100644 index 00000000000..81d45b88fc9 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.decompiled.expected @@ -0,0 +1,4 @@ +ExtraKt.class +public fun <1>func(str: kotlin.String): kotlin.Unit { /* compiled code */ } + MainKt.class +public fun <2>func(a: kotlin.Int, b: kotlin.String /* = compiled code */): kotlin.Unit { /* compiled code */ } diff --git a/idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.kt b/idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.kt index 6aca2ca2370..bc1647713b8 100644 --- a/idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.kt +++ b/idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.kt @@ -4,8 +4,3 @@ fun foo() { func("5") func(5) } - -// extra.kt -//public fun <1>func(str : kotlin.String) { -// main.kt -//public fun <2>func(a : Int, b : String = "55") { diff --git a/idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.source.expected b/idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.source.expected new file mode 100644 index 00000000000..b93d91312c2 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.source.expected @@ -0,0 +1,4 @@ +extra.kt +public fun <1>func(str : kotlin.String) { + main.kt +public fun <2>func(a : Int, b : String = "55") { diff --git a/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.decompiled.expected b/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.decompiled.expected new file mode 100644 index 00000000000..aa4ab5e6bbe --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.decompiled.expected @@ -0,0 +1,6 @@ +Double.class +public final class Double public <3>constructor() { + MainKt.class +public fun <1>processDouble(d: kotlin.Double): kotlin.Unit { /* compiled code */ } + +public fun <2>processDouble(d: testData.libraries.Double): kotlin.Unit { /* compiled code */ } diff --git a/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.kt b/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.kt index 42d9648d0fb..856a5ce4460 100644 --- a/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.kt +++ b/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.kt @@ -4,10 +4,3 @@ fun foo() { processDouble(1.0); processDouble(testData.libraries.Double()) } - -// main.kt -//public class <3>Double -// -//public fun <2>processDouble(d: Double) {} -// -//public fun <1>processDouble(d: kotlin.Double) {} \ No newline at end of file diff --git a/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.source.expected b/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.source.expected new file mode 100644 index 00000000000..46dd7a79db7 --- /dev/null +++ b/idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.source.expected @@ -0,0 +1,6 @@ +main.kt +public class <3>Double + +public fun <2>processDouble(d: Double) {} + +public fun <1>processDouble(d: kotlin.Double) {} diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateToLibrarySourceTest.kt b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateToLibraryTest.kt similarity index 73% rename from idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateToLibrarySourceTest.kt rename to idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateToLibraryTest.kt index acf9c2af6da..b94e1189705 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateToLibrarySourceTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateToLibraryTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. + * Copyright 2010-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,20 +16,18 @@ package org.jetbrains.kotlin.idea.decompiler.navigation -import com.intellij.openapi.roots.ProjectFileIndex import com.intellij.psi.PsiElement import com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference -import com.intellij.testFramework.LightProjectDescriptor -import com.intellij.testFramework.UsefulTestCase import junit.framework.TestCase import org.jetbrains.kotlin.idea.navigation.NavigationTestUtils import org.jetbrains.kotlin.idea.references.KtReference import org.jetbrains.kotlin.idea.test.* +import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.test.KotlinTestUtils import java.io.File -import java.util.LinkedHashMap +import java.util.* -abstract class AbstractNavigateToLibrarySourceTest : KotlinCodeInsightTestCase() { +abstract class AbstractNavigateToLibraryTest : KotlinCodeInsightTestCase() { protected fun doTest(path: String): Unit = doTestEx(path) @@ -38,6 +36,9 @@ abstract class AbstractNavigateToLibrarySourceTest : KotlinCodeInsightTestCase() jsModule.configureAs(ModuleKind.KOTLIN_JAVASCRIPT) } + abstract val withSource: Boolean + abstract val expectedFileExt: String + protected fun doTestEx(path: String, additionalConfig: (() -> Unit)? = null) { configureByFile(path) module.configureAs(getProjectDescriptor()) @@ -46,8 +47,8 @@ abstract class AbstractNavigateToLibrarySourceTest : KotlinCodeInsightTestCase() additionalConfig() } - checkAnnotatedLibraryCode(false) - checkAnnotatedLibraryCode(true) + checkAnnotatedLibraryCode(path, false) + checkAnnotatedLibraryCode(path, true) } override fun tearDown() { @@ -58,11 +59,10 @@ abstract class AbstractNavigateToLibrarySourceTest : KotlinCodeInsightTestCase() override fun getTestDataPath(): String = KotlinTestUtils.getHomeDirectory() + File.separator - private fun checkAnnotatedLibraryCode(forceResolve: Boolean) { + private fun checkAnnotatedLibraryCode(path: String, forceResolve: Boolean) { SourceNavigationHelper.setForceResolve(forceResolve) val actualCode = NavigationTestUtils.getNavigateElementsText(project, collectInterestingNavigationElements()) - val expectedCode = getExpectedAnnotatedLibraryCode() - UsefulTestCase.assertSameLines(expectedCode, actualCode) + KotlinTestUtils.assertEqualsToFile(File(path.replace(".kt", expectedFileExt)), actualCode) } private fun collectInterestingReferences(): Collection { @@ -89,7 +89,7 @@ abstract class AbstractNavigateToLibrarySourceTest : KotlinCodeInsightTestCase() val targetNavFile = targetNavPsiFile.virtualFile ?: return - if (ProjectFileIndex.SERVICE.getInstance(project).isInLibrarySource(targetNavFile)) { + if (!ProjectRootsUtil.isProjectSourceFile(project, targetNavFile)) { put(ref.element, ref) } } @@ -101,12 +101,16 @@ abstract class AbstractNavigateToLibrarySourceTest : KotlinCodeInsightTestCase() target!!.navigationElement } - private fun getExpectedAnnotatedLibraryCode(): String { - val document = getDocument(file) - TestCase.assertNotNull(document) - return KotlinTestUtils.getLastCommentedLines(document) - } + open fun getProjectDescriptor(): KotlinLightProjectDescriptor = + JdkAndMockLibraryProjectDescriptor(PluginTestCaseBase.getTestDataPathBase() + "/decompiler/navigation/library", withSource) +} - private fun getProjectDescriptor(): KotlinLightProjectDescriptor = - JdkAndMockLibraryProjectDescriptor(PluginTestCaseBase.getTestDataPathBase() + "/decompiler/navigation/library", true) +abstract class AbstractNavigateToDecompiledLibraryTest : AbstractNavigateToLibraryTest() { + override val withSource: Boolean get() = false + override val expectedFileExt: String get() = ".decompiled.expected" +} + +abstract class AbstractNavigateToLibrarySourceTest : AbstractNavigateToLibraryTest() { + override val withSource: Boolean get() = true + override val expectedFileExt: String get() = ".source.expected" } \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/NavigateToDecompiledLibraryTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/NavigateToDecompiledLibraryTestGenerated.java new file mode 100644 index 00000000000..62e65ed76f2 --- /dev/null +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/NavigateToDecompiledLibraryTestGenerated.java @@ -0,0 +1,121 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea.decompiler.navigation; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; +import org.jetbrains.kotlin.test.KotlinTestUtils; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.runner.RunWith; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("idea/testData/decompiler/navigation/usercode") +@TestDataPath("$PROJECT_ROOT") +@RunWith(JUnit3RunnerWithInners.class) +public class NavigateToDecompiledLibraryTestGenerated extends AbstractNavigateToDecompiledLibraryTest { + public void testAllFilesPresentInUsercode() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/decompiler/navigation/usercode"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("ClassObject.kt") + public void testClassObject() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/ClassObject.kt"); + doTest(fileName); + } + + @TestMetadata("Constructor.kt") + public void testConstructor() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/Constructor.kt"); + doTest(fileName); + } + + @TestMetadata("Enum.kt") + public void testEnum() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/Enum.kt"); + doTest(fileName); + } + + @TestMetadata("ExtensionFunction.kt") + public void testExtensionFunction() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/ExtensionFunction.kt"); + doTest(fileName); + } + + @TestMetadata("ExtensionProperty.kt") + public void testExtensionProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/ExtensionProperty.kt"); + doTest(fileName); + } + + @TestMetadata("GenericFunctionWithExplicitlyDeclaredTypeArguments.kt") + public void testGenericFunctionWithExplicitlyDeclaredTypeArguments() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/GenericFunctionWithExplicitlyDeclaredTypeArguments.kt"); + doTest(fileName); + } + + @TestMetadata("GenericFunctionWithInferredTypeArguments.kt") + public void testGenericFunctionWithInferredTypeArguments() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/GenericFunctionWithInferredTypeArguments.kt"); + doTest(fileName); + } + + @TestMetadata("GlobalFunction.kt") + public void testGlobalFunction() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/GlobalFunction.kt"); + doTest(fileName); + } + + @TestMetadata("GlobalProperty.kt") + public void testGlobalProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/GlobalProperty.kt"); + doTest(fileName); + } + + @TestMetadata("NamedObject.kt") + public void testNamedObject() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/NamedObject.kt"); + doTest(fileName); + } + + @TestMetadata("OverloadedFunWithTypeParam.kt") + public void testOverloadedFunWithTypeParam() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/OverloadedFunWithTypeParam.kt"); + doTest(fileName); + } + + @TestMetadata("Property.kt") + public void testProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/Property.kt"); + doTest(fileName); + } + + @TestMetadata("SameNameInDifferentSources.kt") + public void testSameNameInDifferentSources() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/SameNameInDifferentSources.kt"); + doTest(fileName); + } + + @TestMetadata("TypeWithSameShortName.kt") + public void testTypeWithSameShortName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/decompiler/navigation/usercode/TypeWithSameShortName.kt"); + doTest(fileName); + } +}