From 383a4da231073340add802356b566e1cc708fd05 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 21 Jul 2015 16:44:51 +0300 Subject: [PATCH] No annotations rendered in completion and other places KT-5517 Completion shouldn't show inlineOptions annotation #KT-5517 Fixed --- .../AbstractCompileJavaAgainstKotlinTest.java | 2 ++ .../AbstractJvmRuntimeDescriptorLoaderTest.kt | 3 ++- .../AbstractDescriptorRendererTest.kt | 5 +++- ...ctionDescriptorInExpressionRendererTest.kt | 11 ++++++-- ...stractAnnotationDescriptorResolveTest.java | 2 ++ .../builtins/LoadBuiltinsTest.java | 2 ++ .../util/RecursiveDescriptorComparator.java | 6 ++--- .../kotlin/renderer/DescriptorRenderer.kt | 27 +++++++++++++------ .../renderer/DescriptorRendererOptionsImpl.kt | 3 +-- .../kotlin/resolve/MemberComparator.java | 2 ++ .../idea/util/IdeDescriptorRenderers.kt | 2 ++ .../textBuilder/DecompiledTextFactory.kt | 7 ++++- .../NoParameterAnnotationInPresentation.kt | 7 +++++ .../test/JSBasicCompletionTestGenerated.java | 6 +++++ .../test/JvmBasicCompletionTestGenerated.java | 6 +++++ 15 files changed, 72 insertions(+), 19 deletions(-) create mode 100644 idea/idea-completion/testData/basic/common/NoParameterAnnotationInPresentation.kt diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileJavaAgainstKotlinTest.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileJavaAgainstKotlinTest.java index cd23c5db5e7..f6e5926af81 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileJavaAgainstKotlinTest.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileJavaAgainstKotlinTest.java @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.descriptors.PackageViewDescriptor; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.renderer.DescriptorRenderer; +import org.jetbrains.kotlin.renderer.DescriptorRendererModifier; import org.jetbrains.kotlin.renderer.DescriptorRendererOptions; import org.jetbrains.kotlin.renderer.ParameterNameRenderingPolicy; import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil; @@ -56,6 +57,7 @@ public abstract class AbstractCompileJavaAgainstKotlinTest extends TestCaseWithT options.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.NONE); options.setVerbose(true); options.setExcludedAnnotationClasses(Collections.singleton(new FqName(Retention.class.getName()))); + options.setModifiers(DescriptorRendererModifier.ALL); return Unit.INSTANCE$; } } diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt index 9c7c0e8612d..0ef3c8a7ca6 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.load.kotlin.reflect.ReflectKotlinClass import org.jetbrains.kotlin.load.kotlin.reflect.RuntimeModuleData import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.renderer.DescriptorRenderer +import org.jetbrains.kotlin.renderer.DescriptorRendererModifier import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy import org.jetbrains.kotlin.renderer.ParameterNameRenderingPolicy import org.jetbrains.kotlin.resolve.DescriptorUtils @@ -44,7 +45,6 @@ import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator.Configuratio import org.jetbrains.kotlin.types.TypeSubstitutor import org.jetbrains.kotlin.utils.sure import java.io.File -import java.lang.annotation.Retention import java.net.URLClassLoader import java.util.regex.Pattern @@ -60,6 +60,7 @@ public abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdi includePropertyConstant = false verbose = true renderDefaultAnnotationArguments = true + modifiers = DescriptorRendererModifier.ALL } } diff --git a/compiler/tests/org/jetbrains/kotlin/renderer/AbstractDescriptorRendererTest.kt b/compiler/tests/org/jetbrains/kotlin/renderer/AbstractDescriptorRendererTest.kt index 678f740e0b2..7f65dabe419 100644 --- a/compiler/tests/org/jetbrains/kotlin/renderer/AbstractDescriptorRendererTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/renderer/AbstractDescriptorRendererTest.kt @@ -129,7 +129,10 @@ public abstract class AbstractDescriptorRendererTest : KotlinTestWithEnvironment } }) - val renderer = DescriptorRenderer.withOptions { nameShortness = NameShortness.FULLY_QUALIFIED } + val renderer = DescriptorRenderer.withOptions { + nameShortness = NameShortness.FULLY_QUALIFIED + modifiers = DescriptorRendererModifier.ALL + } val renderedDescriptors = descriptors.map { renderer.render(it) }.joinToString(separator = "\n") val document = DocumentImpl(psiFile.getText()) diff --git a/compiler/tests/org/jetbrains/kotlin/renderer/AbstractFunctionDescriptorInExpressionRendererTest.kt b/compiler/tests/org/jetbrains/kotlin/renderer/AbstractFunctionDescriptorInExpressionRendererTest.kt index fc971976b78..07b665f73ba 100644 --- a/compiler/tests/org/jetbrains/kotlin/renderer/AbstractFunctionDescriptorInExpressionRendererTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/renderer/AbstractFunctionDescriptorInExpressionRendererTest.kt @@ -22,7 +22,10 @@ import com.intellij.testFramework.UsefulTestCase import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.impl.FunctionExpressionDescriptor -import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.JetFunctionLiteralExpression +import org.jetbrains.kotlin.psi.JetNamedFunction +import org.jetbrains.kotlin.psi.JetPsiFactory +import org.jetbrains.kotlin.psi.JetTreeVisitorVoid import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil import org.jetbrains.kotlin.resolve.lazy.KotlinTestWithEnvironment @@ -50,7 +53,11 @@ abstract public class AbstractFunctionDescriptorInExpressionRendererTest : Kotli } }) - val renderer = DescriptorRenderer.withOptions { nameShortness = NameShortness.FULLY_QUALIFIED; verbose = true } + val renderer = DescriptorRenderer.withOptions { + nameShortness = NameShortness.FULLY_QUALIFIED + modifiers = DescriptorRendererModifier.ALL + verbose = true + } val renderedDescriptors = descriptors.map { renderer.render(it) }.joinToString(separator = "\n") val document = DocumentImpl(file.getText()) diff --git a/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java b/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java index c3eff66246d..514fee12ea5 100644 --- a/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java +++ b/compiler/tests/org/jetbrains/kotlin/resolve/annotation/AbstractAnnotationDescriptorResolveTest.java @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.JetAnnotationEntry; import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.renderer.DescriptorRenderer; +import org.jetbrains.kotlin.renderer.DescriptorRendererModifier; import org.jetbrains.kotlin.renderer.DescriptorRendererOptions; import org.jetbrains.kotlin.renderer.NameShortness; import org.jetbrains.kotlin.resolve.BindingContext; @@ -57,6 +58,7 @@ public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFix public Unit invoke(DescriptorRendererOptions options) { options.setVerbose(true); options.setNameShortness(NameShortness.SHORT); + options.setModifiers(DescriptorRendererModifier.ALL); return Unit.INSTANCE$; } } diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java index b15bc448b2e..63e11d320bd 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java +++ b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/LoadBuiltinsTest.java @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor; import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor; import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.renderer.DescriptorRenderer; +import org.jetbrains.kotlin.renderer.DescriptorRendererModifier; import org.jetbrains.kotlin.renderer.DescriptorRendererOptions; import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy; import org.jetbrains.kotlin.resolve.lazy.KotlinTestWithEnvironment; @@ -58,6 +59,7 @@ public class LoadBuiltinsTest extends KotlinTestWithEnvironment { options.setOverrideRenderingPolicy(OverrideRenderingPolicy.RENDER_OPEN_OVERRIDE); options.setVerbose(true); options.setPrettyFunctionTypes(false); + options.setModifiers(DescriptorRendererModifier.ALL); return Unit.INSTANCE$; } } diff --git a/compiler/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorComparator.java b/compiler/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorComparator.java index bd085a6686d..3f6f4537bbf 100644 --- a/compiler/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorComparator.java +++ b/compiler/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorComparator.java @@ -28,10 +28,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.jvm.compiler.ExpectedLoadErrorsUtil; import org.jetbrains.kotlin.name.FqName; -import org.jetbrains.kotlin.renderer.DescriptorRenderer; -import org.jetbrains.kotlin.renderer.DescriptorRendererOptions; -import org.jetbrains.kotlin.renderer.NameShortness; -import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy; +import org.jetbrains.kotlin.renderer.*; import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.MemberComparator; import org.jetbrains.kotlin.resolve.scopes.JetScope; @@ -59,6 +56,7 @@ public class RecursiveDescriptorComparator { options.setIncludePropertyConstant(true); options.setNameShortness(NameShortness.FULLY_QUALIFIED); options.setVerbose(true); + options.setModifiers(DescriptorRendererModifier.ALL); return Unit.INSTANCE$; } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt index 8ce92021afc..f5cf848e27a 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt @@ -111,7 +111,9 @@ public interface DescriptorRenderer : Renderer { startFromName = true } - public val FQ_NAMES_IN_TYPES: DescriptorRenderer = withOptions { } + public val FQ_NAMES_IN_TYPES: DescriptorRenderer = withOptions { + modifiers = DescriptorRendererModifier.ALL + } public val SHORT_NAMES_IN_TYPES: DescriptorRenderer = withOptions { nameShortness = NameShortness.SHORT @@ -121,6 +123,7 @@ public interface DescriptorRenderer : Renderer { public val DEBUG_TEXT: DescriptorRenderer = withOptions { debugMode = true nameShortness = NameShortness.FULLY_QUALIFIED + modifiers = DescriptorRendererModifier.ALL } public val FLEXIBLE_TYPES_FOR_CODE: DescriptorRenderer = withOptions { @@ -129,6 +132,7 @@ public interface DescriptorRenderer : Renderer { public val HTML: DescriptorRenderer = withOptions { textFormat = RenderingFormat.HTML + modifiers = DescriptorRendererModifier.ALL } public fun getClassKindPrefix(klass: ClassDescriptor): String { @@ -203,11 +207,18 @@ public enum class ParameterNameRenderingPolicy { NONE } -public enum class DescriptorRendererModifier { - VISIBILITY, - MODALITY, - OVERRIDE, - ANNOTATIONS, - INNER, - MEMBER_KIND +public enum class DescriptorRendererModifier(val includeByDefault: Boolean) { + VISIBILITY(true), + MODALITY(true), + OVERRIDE(true), + ANNOTATIONS(false), + INNER(true), + MEMBER_KIND(true) + + ; + + companion object { + val DEFAULTS = DescriptorRendererModifier.values().filter { it.includeByDefault }.toSet() + val ALL = DescriptorRendererModifier.values().toSet() + } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt index c38f80916a3..e6ea6bf70d4 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.renderer import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.types.JetType import java.lang.reflect.Modifier -import java.util.EnumSet import kotlin.properties.Delegates import kotlin.properties.ObservableProperty import kotlin.properties.ReadWriteProperty @@ -61,7 +60,7 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions { override var nameShortness by property(NameShortness.SOURCE_CODE_QUALIFIED) override var withDefinedIn by property(true) - override var modifiers: Set by property(EnumSet.allOf(javaClass())) + override var modifiers: Set by property(DescriptorRendererModifier.DEFAULTS) override var startFromName by property(false) override var debugMode by property(false) override var classWithPrimaryConstructor by property(false) diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/MemberComparator.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/MemberComparator.java index ae932f06c65..fc8bc4c4a81 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/MemberComparator.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/MemberComparator.java @@ -21,6 +21,7 @@ import kotlin.jvm.functions.Function1; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.renderer.DescriptorRenderer; +import org.jetbrains.kotlin.renderer.DescriptorRendererModifier; import org.jetbrains.kotlin.renderer.DescriptorRendererOptions; import java.util.Comparator; @@ -37,6 +38,7 @@ public class MemberComparator implements Comparator { public Unit invoke(DescriptorRendererOptions options) { options.setWithDefinedIn(false); options.setVerbose(true); + options.setModifiers(DescriptorRendererModifier.ALL); return Unit.INSTANCE$; } }); diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/IdeDescriptorRenderers.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/IdeDescriptorRenderers.kt index 472f68f427e..b7a52668a38 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/IdeDescriptorRenderers.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/IdeDescriptorRenderers.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.idea.util import org.jetbrains.kotlin.renderer.DescriptorRenderer +import org.jetbrains.kotlin.renderer.DescriptorRendererModifier import org.jetbrains.kotlin.renderer.NameShortness import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy import org.jetbrains.kotlin.types.JetType @@ -32,6 +33,7 @@ public object IdeDescriptorRenderers { showInternalKeyword = false overrideRenderingPolicy = OverrideRenderingPolicy.RENDER_OVERRIDE unitReturnType = false + modifiers = DescriptorRendererModifier.ALL } public val SOURCE_CODE: DescriptorRenderer = BASE.withOptions { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt index bd241a27d5d..6b7eb4efca0 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.renderer.DescriptorRenderer +import org.jetbrains.kotlin.renderer.DescriptorRendererModifier import org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry import org.jetbrains.kotlin.resolve.dataClassUtils.isComponentLike import org.jetbrains.kotlin.resolve.descriptorUtil.secondaryConstructors @@ -97,15 +98,19 @@ private val descriptorRendererForDecompiler = DescriptorRenderer.withOptions { classWithPrimaryConstructor = true typeNormalizer = { type -> if (type.isFlexible()) type.flexibility().lowerBound else type } secondaryConstructorsAsPrimary = false + modifiers = DescriptorRendererModifier.ALL } private val descriptorRendererForKotlinJavascriptDecompiler = DescriptorRenderer.withOptions { withDefinedIn = false classWithPrimaryConstructor = true secondaryConstructorsAsPrimary = false + modifiers = DescriptorRendererModifier.ALL } -private val descriptorRendererForKeys = DescriptorRenderer.COMPACT_WITH_MODIFIERS +private val descriptorRendererForKeys = DescriptorRenderer.COMPACT_WITH_MODIFIERS.withOptions { + modifiers = DescriptorRendererModifier.ALL +} public fun descriptorToKey(descriptor: DeclarationDescriptor): String { return descriptorRendererForKeys.render(descriptor) diff --git a/idea/idea-completion/testData/basic/common/NoParameterAnnotationInPresentation.kt b/idea/idea-completion/testData/basic/common/NoParameterAnnotationInPresentation.kt new file mode 100644 index 00000000000..e8798d00373 --- /dev/null +++ b/idea/idea-completion/testData/basic/common/NoParameterAnnotationInPresentation.kt @@ -0,0 +1,7 @@ +fun foo(inlineOptions p: () -> Unit){} + +fun bar() { + +} + +// EXIST: { lookupString:"foo", itemText: "foo", tailText: " {...} (p: () -> Unit) ()", typeText:"Unit" } diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java index 17d0f23125e..ecc898721c7 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java @@ -685,6 +685,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } + @TestMetadata("NoParameterAnnotationInPresentation.kt") + public void testNoParameterAnnotationInPresentation() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/NoParameterAnnotationInPresentation.kt"); + doTest(fileName); + } + @TestMetadata("NoSecondPressCompletionInAutoPopup.kt") public void testNoSecondPressCompletionInAutoPopup() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/NoSecondPressCompletionInAutoPopup.kt"); diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java index 09d6cf25142..e0c56e63211 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java @@ -685,6 +685,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } + @TestMetadata("NoParameterAnnotationInPresentation.kt") + public void testNoParameterAnnotationInPresentation() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/NoParameterAnnotationInPresentation.kt"); + doTest(fileName); + } + @TestMetadata("NoSecondPressCompletionInAutoPopup.kt") public void testNoSecondPressCompletionInAutoPopup() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/NoSecondPressCompletionInAutoPopup.kt");