diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt index 8be076a2ef4..0bfd02c0f86 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt @@ -136,10 +136,6 @@ abstract class DescriptorRenderer { modifiers = DescriptorRendererModifier.ALL } - @JvmField val FLEXIBLE_TYPES_FOR_CODE: DescriptorRenderer = withOptions { - flexibleTypesForCode = true - } - @JvmField val HTML: DescriptorRenderer = withOptions { textFormat = RenderingFormat.HTML modifiers = DescriptorRendererModifier.ALL @@ -187,7 +183,6 @@ interface DescriptorRendererOptions { var withoutSuperTypes: Boolean var typeNormalizer: (KotlinType) -> KotlinType var renderDefaultValues: Boolean - var flexibleTypesForCode: Boolean var secondaryConstructorsAsPrimary: Boolean var renderAccessors: Boolean var renderDefaultAnnotationArguments: Boolean diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt index 2e3995246e6..3a7229d5897 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt @@ -138,10 +138,6 @@ internal class DescriptorRendererImpl( if (debugMode) { return renderFlexibleTypeWithBothBounds(type.flexibility().lowerBound, type.flexibility().upperBound) } - else if (flexibleTypesForCode) { - val prefix = if (classifierNamePolicy == ClassifierNamePolicy.SHORT) "" else Flexibility.FLEXIBLE_TYPE_CLASSIFIER.packageFqName.asString() + "." - return prefix + Flexibility.FLEXIBLE_TYPE_CLASSIFIER.relativeClassName + lt() + renderNormalizedType(type.flexibility().lowerBound) + ", " + renderNormalizedType(type.flexibility().upperBound) + gt() - } else { return renderFlexibleType(type) } diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt index 7baa8f4db37..2c805df6f27 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt @@ -80,7 +80,6 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions { override var withoutSuperTypes by property(false) override var typeNormalizer by property<(KotlinType) -> KotlinType>({ it }) override var renderDefaultValues by property(true) - override var flexibleTypesForCode by property(false) override var secondaryConstructorsAsPrimary by property(true) override var overrideRenderingPolicy by property(OverrideRenderingPolicy.RENDER_OPEN) override var valueParametersHandler: DescriptorRenderer.ValueParametersHandler by property(DescriptorRenderer.ValueParametersHandler.DEFAULT) diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt index 192fefa0fb2..464112b069e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt @@ -71,7 +71,6 @@ import org.jetbrains.kotlin.resolve.AnalyzingUtils import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.jvm.JvmClassName -import org.jetbrains.kotlin.types.Flexibility import org.jetbrains.org.objectweb.asm.* import org.jetbrains.org.objectweb.asm.Opcodes.ASM5 import org.jetbrains.org.objectweb.asm.Type @@ -454,7 +453,7 @@ class KotlinEvaluator(val codeFragment: KtCodeFragment, val sourcePosition: Sour } val filesToAnalyze = if (contextFile == null) listOf(this) else listOf(this, contextFile) - val resolutionFacade = KotlinCacheService.getInstance(project).getResolutionFacade(filesToAnalyze + createFlexibleTypesFile()) + val resolutionFacade = KotlinCacheService.getInstance(project).getResolutionFacade(filesToAnalyze) val analysisResult = resolutionFacade.analyzeFullyAndGetResult(filesToAnalyze) if (analysisResult.isError()) { @@ -527,16 +526,6 @@ private fun createFileForDebugger(codeFragment: KtCodeFragment, return jetFile } -private fun PsiElement.createFlexibleTypesFile(): KtFile { - return createKtFile( - "FLEXIBLE_TYPES.kt", - """ - package ${Flexibility.FLEXIBLE_TYPE_CLASSIFIER.packageFqName} - public class ${Flexibility.FLEXIBLE_TYPE_CLASSIFIER.relativeClassName} - """ - ) -} - private fun PsiElement.createKtFile(fileName: String, fileText: String): KtFile { // Not using KtPsiFactory because we need a virtual file attached to the JetFile val virtualFile = LightVirtualFile(fileName, KotlinLanguage.INSTANCE, fileText) diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/extractFunctionForDebuggerUtil.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/extractFunctionForDebuggerUtil.kt index 5bd10c7c9ee..41df37164ed 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/extractFunctionForDebuggerUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/extractFunctionForDebuggerUtil.kt @@ -104,7 +104,6 @@ fun getFunctionForExtractedFragment( } val generatorOptions = ExtractionGeneratorOptions(inTempFile = true, - flexibleTypesAllowed = true, dummyName = GENERATED_FUNCTION_NAME, allowExpressionBody = false) return ExtractionGeneratorConfiguration(validationResult.descriptor, generatorOptions).generateDeclaration() diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt index c828ae4977e..618622ca521 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt @@ -468,7 +468,6 @@ val propertyTargets: List = listOf(ExtractionTarget.PROPERTY_W data class ExtractionGeneratorOptions( val inTempFile: Boolean = false, val target: ExtractionTarget = ExtractionTarget.FUNCTION, - val flexibleTypesAllowed: Boolean = false, val dummyName: String? = null, val allowExpressionBody: Boolean = true, val delayInitialOccurrenceReplacement: Boolean = false diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt index 6f5b665fd3f..b49a5fb3b06 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt @@ -111,9 +111,7 @@ private fun buildSignature(config: ExtractionGeneratorConfiguration, renderer: D fun ExtractionGeneratorConfiguration.getSignaturePreview(renderer: DescriptorRenderer) = buildSignature(this, renderer).asString() fun ExtractionGeneratorConfiguration.getDeclarationPattern( - descriptorRenderer: DescriptorRenderer = if (generatorOptions.flexibleTypesAllowed) - DescriptorRenderer.FLEXIBLE_TYPES_FOR_CODE - else IdeDescriptorRenderers.SOURCE_CODE + descriptorRenderer: DescriptorRenderer = IdeDescriptorRenderers.SOURCE_CODE ): String { val extractionTarget = generatorOptions.target if (!extractionTarget.isAvailable(descriptor)) { diff --git a/idea/testData/debugger/tinyApp/outs/checkNotNull.out b/idea/testData/debugger/tinyApp/outs/checkNotNull.out index c833650dbac..27274948201 100644 --- a/idea/testData/debugger/tinyApp/outs/checkNotNull.out +++ b/idea/testData/debugger/tinyApp/outs/checkNotNull.out @@ -2,7 +2,7 @@ LineBreakpoint created at checkNotNull.kt:8 !JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! checkNotNull.CheckNotNullKt Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' checkNotNull.kt:8 -MyJavaClass.java:12 +MyJavaClass.java:13 checkNotNull.kt:8 checkNotNull.kt:9 Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' diff --git a/idea/testData/debugger/tinyApp/outs/javaFun.out b/idea/testData/debugger/tinyApp/outs/javaFun.out index 02ea3be702e..ac8b873bd03 100644 --- a/idea/testData/debugger/tinyApp/outs/javaFun.out +++ b/idea/testData/debugger/tinyApp/outs/javaFun.out @@ -2,7 +2,7 @@ LineBreakpoint created at javaFun.kt:8 !JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! javaFun.JavaFunKt Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' javaFun.kt:8 -MyJavaClass.java:7 +MyJavaClass.java:8 Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' Process finished with exit code 0 diff --git a/idea/testData/debugger/tinyApp/outs/rawTypeskt11831.out b/idea/testData/debugger/tinyApp/outs/rawTypeskt11831.out new file mode 100644 index 00000000000..6fd9d58d68b --- /dev/null +++ b/idea/testData/debugger/tinyApp/outs/rawTypeskt11831.out @@ -0,0 +1,8 @@ +LineBreakpoint created at rawTypeskt11831.kt:7 +!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! rawTypeskt11831.RawTypeskt11831Kt +Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' +rawTypeskt11831.kt:7 +Compile bytecode for foo +Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' + +Process finished with exit code 0 diff --git a/idea/testData/debugger/tinyApp/outs/samAdapter.out b/idea/testData/debugger/tinyApp/outs/samAdapter.out index 5bb422802f0..1046e01334d 100644 --- a/idea/testData/debugger/tinyApp/outs/samAdapter.out +++ b/idea/testData/debugger/tinyApp/outs/samAdapter.out @@ -4,9 +4,9 @@ Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socke samAdapter.kt:5 samAdapter.kt:6 samAdapter.kt:10 -MyJavaClass.java:20 +MyJavaClass.java:21 samAdapter.kt:6 -MyJavaClass.java:20 +MyJavaClass.java:21 samAdapter.kt:10 samAdapter.kt:6 samAdapter.kt:7 diff --git a/idea/testData/debugger/tinyApp/outs/smartStepIntoInterfaceImpl.out b/idea/testData/debugger/tinyApp/outs/smartStepIntoInterfaceImpl.out index db60fc3c231..7697d7a0d50 100644 --- a/idea/testData/debugger/tinyApp/outs/smartStepIntoInterfaceImpl.out +++ b/idea/testData/debugger/tinyApp/outs/smartStepIntoInterfaceImpl.out @@ -28,7 +28,7 @@ smartStepIntoInterfaceImpl.kt:36 smartStepIntoInterfaceImpl.kt:130 smartStepIntoInterfaceImpl.kt:41 smartStepIntoInterfaceImpl.kt:138 -MyJavaClass.java:16 +MyJavaClass.java:17 smartStepIntoInterfaceImpl.kt:143 smartStepIntoInterfaceImpl.kt:59 smartStepIntoInterfaceImpl.kt:148 diff --git a/idea/testData/debugger/tinyApp/outs/stepIntoSpecificKotlinClasses.out b/idea/testData/debugger/tinyApp/outs/stepIntoSpecificKotlinClasses.out index 54cbd45bc46..412b7bc7334 100644 --- a/idea/testData/debugger/tinyApp/outs/stepIntoSpecificKotlinClasses.out +++ b/idea/testData/debugger/tinyApp/outs/stepIntoSpecificKotlinClasses.out @@ -2,7 +2,7 @@ LineBreakpoint created at stepIntoSpecificKotlinClasses.kt:8 !JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! stepIntoSpecificKotlinClasses.StepIntoSpecificKotlinClassesKt Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket' stepIntoSpecificKotlinClasses.kt:8 -MyJavaClass.java:12 +MyJavaClass.java:13 stepIntoSpecificKotlinClasses.kt:8 Intrinsics.!EXT! Intrinsics.!EXT! diff --git a/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/rawTypeskt11831.kt b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/rawTypeskt11831.kt new file mode 100644 index 00000000000..86986bb30f9 --- /dev/null +++ b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/rawTypeskt11831.kt @@ -0,0 +1,11 @@ +package rawTypeskt11831 + +fun main(args: Array) { + val raw = forTests.MyJavaClass.RawADerived() + val foo = raw.foo(emptyList()) + //Breakpoint! + val a = foo +} + +// EXPRESSION: foo +// RESULT: 1: I \ No newline at end of file diff --git a/idea/testData/debugger/tinyApp/src/forTests/MyJavaClass.java b/idea/testData/debugger/tinyApp/src/forTests/MyJavaClass.java index 35d9f14f56c..f69b382c757 100644 --- a/idea/testData/debugger/tinyApp/src/forTests/MyJavaClass.java +++ b/idea/testData/debugger/tinyApp/src/forTests/MyJavaClass.java @@ -1,6 +1,7 @@ package forTests; import org.jetbrains.annotations.NotNull; +import java.util.List; public class MyJavaClass { public void testFun() { @@ -38,4 +39,14 @@ public class MyJavaClass { public static class InnerClass extends BaseClass { public final int i = 1; } + + public static class RawA { + public int foo(List p) { + return 1; + } + } + + public static class RawADerived extends RawA { + + } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java index 3f4a329db90..251ed4eb06a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java @@ -301,6 +301,12 @@ public class KotlinEvaluateExpressionTestGenerated extends AbstractKotlinEvaluat doSingleBreakpointTest(fileName); } + @TestMetadata("rawTypeskt11831.kt") + public void testRawTypeskt11831() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/rawTypeskt11831.kt"); + doSingleBreakpointTest(fileName); + } + @TestMetadata("simple.kt") public void testSimple() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/simple.kt");