No annotations rendered in completion and other places

KT-5517 Completion shouldn't show inlineOptions annotation

 #KT-5517 Fixed
This commit is contained in:
Valentin Kipyatkov
2015-07-21 16:44:51 +03:00
parent 0ff0fc847d
commit 383a4da231
15 changed files with 72 additions and 19 deletions
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.descriptors.PackageViewDescriptor;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.renderer.DescriptorRenderer;
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier;
import org.jetbrains.kotlin.renderer.DescriptorRendererOptions; import org.jetbrains.kotlin.renderer.DescriptorRendererOptions;
import org.jetbrains.kotlin.renderer.ParameterNameRenderingPolicy; import org.jetbrains.kotlin.renderer.ParameterNameRenderingPolicy;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil; import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
@@ -56,6 +57,7 @@ public abstract class AbstractCompileJavaAgainstKotlinTest extends TestCaseWithT
options.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.NONE); options.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.NONE);
options.setVerbose(true); options.setVerbose(true);
options.setExcludedAnnotationClasses(Collections.singleton(new FqName(Retention.class.getName()))); options.setExcludedAnnotationClasses(Collections.singleton(new FqName(Retention.class.getName())));
options.setModifiers(DescriptorRendererModifier.ALL);
return Unit.INSTANCE$; return Unit.INSTANCE$;
} }
} }
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.load.kotlin.reflect.ReflectKotlinClass
import org.jetbrains.kotlin.load.kotlin.reflect.RuntimeModuleData import org.jetbrains.kotlin.load.kotlin.reflect.RuntimeModuleData
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier
import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy
import org.jetbrains.kotlin.renderer.ParameterNameRenderingPolicy import org.jetbrains.kotlin.renderer.ParameterNameRenderingPolicy
import org.jetbrains.kotlin.resolve.DescriptorUtils 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.types.TypeSubstitutor
import org.jetbrains.kotlin.utils.sure import org.jetbrains.kotlin.utils.sure
import java.io.File import java.io.File
import java.lang.annotation.Retention
import java.net.URLClassLoader import java.net.URLClassLoader
import java.util.regex.Pattern import java.util.regex.Pattern
@@ -60,6 +60,7 @@ public abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdi
includePropertyConstant = false includePropertyConstant = false
verbose = true verbose = true
renderDefaultAnnotationArguments = true renderDefaultAnnotationArguments = true
modifiers = DescriptorRendererModifier.ALL
} }
} }
@@ -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 renderedDescriptors = descriptors.map { renderer.render(it) }.joinToString(separator = "\n")
val document = DocumentImpl(psiFile.getText()) val document = DocumentImpl(psiFile.getText())
@@ -22,7 +22,10 @@ import com.intellij.testFramework.UsefulTestCase
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.impl.FunctionExpressionDescriptor 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.BindingContext
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
import org.jetbrains.kotlin.resolve.lazy.KotlinTestWithEnvironment 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 renderedDescriptors = descriptors.map { renderer.render(it) }.joinToString(separator = "\n")
val document = DocumentImpl(file.getText()) val document = DocumentImpl(file.getText())
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.psi.JetAnnotationEntry; import org.jetbrains.kotlin.psi.JetAnnotationEntry;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.renderer.DescriptorRenderer;
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier;
import org.jetbrains.kotlin.renderer.DescriptorRendererOptions; import org.jetbrains.kotlin.renderer.DescriptorRendererOptions;
import org.jetbrains.kotlin.renderer.NameShortness; import org.jetbrains.kotlin.renderer.NameShortness;
import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.BindingContext;
@@ -57,6 +58,7 @@ public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFix
public Unit invoke(DescriptorRendererOptions options) { public Unit invoke(DescriptorRendererOptions options) {
options.setVerbose(true); options.setVerbose(true);
options.setNameShortness(NameShortness.SHORT); options.setNameShortness(NameShortness.SHORT);
options.setModifiers(DescriptorRendererModifier.ALL);
return Unit.INSTANCE$; return Unit.INSTANCE$;
} }
} }
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor; import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.renderer.DescriptorRenderer;
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier;
import org.jetbrains.kotlin.renderer.DescriptorRendererOptions; import org.jetbrains.kotlin.renderer.DescriptorRendererOptions;
import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy; import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy;
import org.jetbrains.kotlin.resolve.lazy.KotlinTestWithEnvironment; import org.jetbrains.kotlin.resolve.lazy.KotlinTestWithEnvironment;
@@ -58,6 +59,7 @@ public class LoadBuiltinsTest extends KotlinTestWithEnvironment {
options.setOverrideRenderingPolicy(OverrideRenderingPolicy.RENDER_OPEN_OVERRIDE); options.setOverrideRenderingPolicy(OverrideRenderingPolicy.RENDER_OPEN_OVERRIDE);
options.setVerbose(true); options.setVerbose(true);
options.setPrettyFunctionTypes(false); options.setPrettyFunctionTypes(false);
options.setModifiers(DescriptorRendererModifier.ALL);
return Unit.INSTANCE$; return Unit.INSTANCE$;
} }
} }
@@ -28,10 +28,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.jvm.compiler.ExpectedLoadErrorsUtil; import org.jetbrains.kotlin.jvm.compiler.ExpectedLoadErrorsUtil;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.renderer.*;
import org.jetbrains.kotlin.renderer.DescriptorRendererOptions;
import org.jetbrains.kotlin.renderer.NameShortness;
import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy;
import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.resolve.MemberComparator; import org.jetbrains.kotlin.resolve.MemberComparator;
import org.jetbrains.kotlin.resolve.scopes.JetScope; import org.jetbrains.kotlin.resolve.scopes.JetScope;
@@ -59,6 +56,7 @@ public class RecursiveDescriptorComparator {
options.setIncludePropertyConstant(true); options.setIncludePropertyConstant(true);
options.setNameShortness(NameShortness.FULLY_QUALIFIED); options.setNameShortness(NameShortness.FULLY_QUALIFIED);
options.setVerbose(true); options.setVerbose(true);
options.setModifiers(DescriptorRendererModifier.ALL);
return Unit.INSTANCE$; return Unit.INSTANCE$;
} }
} }
@@ -111,7 +111,9 @@ public interface DescriptorRenderer : Renderer<DeclarationDescriptor> {
startFromName = true 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 { public val SHORT_NAMES_IN_TYPES: DescriptorRenderer = withOptions {
nameShortness = NameShortness.SHORT nameShortness = NameShortness.SHORT
@@ -121,6 +123,7 @@ public interface DescriptorRenderer : Renderer<DeclarationDescriptor> {
public val DEBUG_TEXT: DescriptorRenderer = withOptions { public val DEBUG_TEXT: DescriptorRenderer = withOptions {
debugMode = true debugMode = true
nameShortness = NameShortness.FULLY_QUALIFIED nameShortness = NameShortness.FULLY_QUALIFIED
modifiers = DescriptorRendererModifier.ALL
} }
public val FLEXIBLE_TYPES_FOR_CODE: DescriptorRenderer = withOptions { public val FLEXIBLE_TYPES_FOR_CODE: DescriptorRenderer = withOptions {
@@ -129,6 +132,7 @@ public interface DescriptorRenderer : Renderer<DeclarationDescriptor> {
public val HTML: DescriptorRenderer = withOptions { public val HTML: DescriptorRenderer = withOptions {
textFormat = RenderingFormat.HTML textFormat = RenderingFormat.HTML
modifiers = DescriptorRendererModifier.ALL
} }
public fun getClassKindPrefix(klass: ClassDescriptor): String { public fun getClassKindPrefix(klass: ClassDescriptor): String {
@@ -203,11 +207,18 @@ public enum class ParameterNameRenderingPolicy {
NONE NONE
} }
public enum class DescriptorRendererModifier { public enum class DescriptorRendererModifier(val includeByDefault: Boolean) {
VISIBILITY, VISIBILITY(true),
MODALITY, MODALITY(true),
OVERRIDE, OVERRIDE(true),
ANNOTATIONS, ANNOTATIONS(false),
INNER, INNER(true),
MEMBER_KIND MEMBER_KIND(true)
;
companion object {
val DEFAULTS = DescriptorRendererModifier.values().filter { it.includeByDefault }.toSet()
val ALL = DescriptorRendererModifier.values().toSet()
}
} }
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.renderer
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.JetType
import java.lang.reflect.Modifier import java.lang.reflect.Modifier
import java.util.EnumSet
import kotlin.properties.Delegates import kotlin.properties.Delegates
import kotlin.properties.ObservableProperty import kotlin.properties.ObservableProperty
import kotlin.properties.ReadWriteProperty import kotlin.properties.ReadWriteProperty
@@ -61,7 +60,7 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions {
override var nameShortness by property(NameShortness.SOURCE_CODE_QUALIFIED) override var nameShortness by property(NameShortness.SOURCE_CODE_QUALIFIED)
override var withDefinedIn by property(true) override var withDefinedIn by property(true)
override var modifiers: Set<DescriptorRendererModifier> by property(EnumSet.allOf(javaClass<DescriptorRendererModifier>())) override var modifiers: Set<DescriptorRendererModifier> by property(DescriptorRendererModifier.DEFAULTS)
override var startFromName by property(false) override var startFromName by property(false)
override var debugMode by property(false) override var debugMode by property(false)
override var classWithPrimaryConstructor by property(false) override var classWithPrimaryConstructor by property(false)
@@ -21,6 +21,7 @@ import kotlin.jvm.functions.Function1;
import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.renderer.DescriptorRenderer;
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier;
import org.jetbrains.kotlin.renderer.DescriptorRendererOptions; import org.jetbrains.kotlin.renderer.DescriptorRendererOptions;
import java.util.Comparator; import java.util.Comparator;
@@ -37,6 +38,7 @@ public class MemberComparator implements Comparator<DeclarationDescriptor> {
public Unit invoke(DescriptorRendererOptions options) { public Unit invoke(DescriptorRendererOptions options) {
options.setWithDefinedIn(false); options.setWithDefinedIn(false);
options.setVerbose(true); options.setVerbose(true);
options.setModifiers(DescriptorRendererModifier.ALL);
return Unit.INSTANCE$; return Unit.INSTANCE$;
} }
}); });
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.idea.util package org.jetbrains.kotlin.idea.util
import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier
import org.jetbrains.kotlin.renderer.NameShortness import org.jetbrains.kotlin.renderer.NameShortness
import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy
import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.JetType
@@ -32,6 +33,7 @@ public object IdeDescriptorRenderers {
showInternalKeyword = false showInternalKeyword = false
overrideRenderingPolicy = OverrideRenderingPolicy.RENDER_OVERRIDE overrideRenderingPolicy = OverrideRenderingPolicy.RENDER_OVERRIDE
unitReturnType = false unitReturnType = false
modifiers = DescriptorRendererModifier.ALL
} }
public val SOURCE_CODE: DescriptorRenderer = BASE.withOptions { public val SOURCE_CODE: DescriptorRenderer = BASE.withOptions {
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind
import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier
import org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry import org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry
import org.jetbrains.kotlin.resolve.dataClassUtils.isComponentLike import org.jetbrains.kotlin.resolve.dataClassUtils.isComponentLike
import org.jetbrains.kotlin.resolve.descriptorUtil.secondaryConstructors import org.jetbrains.kotlin.resolve.descriptorUtil.secondaryConstructors
@@ -97,15 +98,19 @@ private val descriptorRendererForDecompiler = DescriptorRenderer.withOptions {
classWithPrimaryConstructor = true classWithPrimaryConstructor = true
typeNormalizer = { type -> if (type.isFlexible()) type.flexibility().lowerBound else type } typeNormalizer = { type -> if (type.isFlexible()) type.flexibility().lowerBound else type }
secondaryConstructorsAsPrimary = false secondaryConstructorsAsPrimary = false
modifiers = DescriptorRendererModifier.ALL
} }
private val descriptorRendererForKotlinJavascriptDecompiler = DescriptorRenderer.withOptions { private val descriptorRendererForKotlinJavascriptDecompiler = DescriptorRenderer.withOptions {
withDefinedIn = false withDefinedIn = false
classWithPrimaryConstructor = true classWithPrimaryConstructor = true
secondaryConstructorsAsPrimary = false 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 { public fun descriptorToKey(descriptor: DeclarationDescriptor): String {
return descriptorRendererForKeys.render(descriptor) return descriptorRendererForKeys.render(descriptor)
@@ -0,0 +1,7 @@
fun foo(inlineOptions p: () -> Unit){}
fun bar() {
<caret>
}
// EXIST: { lookupString:"foo", itemText: "foo", tailText: " {...} (p: () -> Unit) (<root>)", typeText:"Unit" }
@@ -685,6 +685,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes
doTest(fileName); 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") @TestMetadata("NoSecondPressCompletionInAutoPopup.kt")
public void testNoSecondPressCompletionInAutoPopup() throws Exception { public void testNoSecondPressCompletionInAutoPopup() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/NoSecondPressCompletionInAutoPopup.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/NoSecondPressCompletionInAutoPopup.kt");
@@ -685,6 +685,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT
doTest(fileName); 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") @TestMetadata("NoSecondPressCompletionInAutoPopup.kt")
public void testNoSecondPressCompletionInAutoPopup() throws Exception { public void testNoSecondPressCompletionInAutoPopup() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/NoSecondPressCompletionInAutoPopup.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/NoSecondPressCompletionInAutoPopup.kt");