From 0c662a5a349536aaa7ef8944c45ed0bd892df6f1 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 17 Sep 2019 12:11:33 +0300 Subject: [PATCH] JavacWrapper: remove code duplication around getVisibility --- .../kotlin/javac/wrappers/symbols/utils.kt | 50 ++++++++++--------- .../kotlin/javac/wrappers/trees/utils.kt | 22 +++----- 2 files changed, 33 insertions(+), 39 deletions(-) diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/utils.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/utils.kt index 823817a7a47..fc08e8f8393 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/utils.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/utils.kt @@ -36,21 +36,22 @@ internal val Element.isStatic: Boolean internal val Element.isFinal: Boolean get() = modifiers.contains(Modifier.FINAL) -internal fun Element.getVisibility(): Visibility = modifiers.let { modifiers -> +internal fun Element.getVisibility(): Visibility = modifiers.getVisibility() + +internal fun Set.getVisibility(): Visibility = when { - Modifier.PUBLIC in modifiers -> Visibilities.PUBLIC - Modifier.PRIVATE in modifiers -> Visibilities.PRIVATE - Modifier.PROTECTED in modifiers -> { - if (Modifier.STATIC in modifiers) { + Modifier.PUBLIC in this -> Visibilities.PUBLIC + Modifier.PRIVATE in this -> Visibilities.PRIVATE + Modifier.PROTECTED in this -> { + if (Modifier.STATIC in this) { JavaVisibilities.PROTECTED_STATIC_VISIBILITY - } - else { + } else { JavaVisibilities.PROTECTED_AND_PACKAGE } } else -> JavaVisibilities.PACKAGE_VISIBILITY } -} + internal fun TypeElement.computeClassId(): ClassId? { val enclosingElement = enclosingElement @@ -63,20 +64,23 @@ internal fun TypeElement.computeClassId(): ClassId? { } internal fun ExecutableElement.valueParameters(javac: JavacWrapper): List = - parameters.let { parameters -> - val isVarArgs = isVarArgs - val lastIndex = parameters.lastIndex - parameters.mapIndexed { index, parameter -> - val simpleName = parameter.simpleName.toString() - SymbolBasedValueParameter(parameter, - if (!simpleName.contentEquals("arg$index")) simpleName else "p$index", - index == lastIndex && isVarArgs, - javac) - } + parameters.let { parameters -> + val isVarArgs = isVarArgs + val lastIndex = parameters.lastIndex + parameters.mapIndexed { index, parameter -> + val simpleName = parameter.simpleName.toString() + SymbolBasedValueParameter( + parameter, + if (!simpleName.contentEquals("arg$index")) simpleName else "p$index", + index == lastIndex && isVarArgs, + javac + ) } + } -internal fun AnnotatedConstruct.findAnnotation(fqName: FqName, - javac: JavacWrapper) = - annotationMirrors.find { - (it.annotationType.asElement() as TypeElement).qualifiedName.toString() == fqName.asString() - }?.let { SymbolBasedAnnotation(it, javac) } \ No newline at end of file +internal fun AnnotatedConstruct.findAnnotation( + fqName: FqName, + javac: JavacWrapper +) = annotationMirrors.find { + (it.annotationType.asElement() as TypeElement).qualifiedName.toString() == fqName.asString() +}?.let { SymbolBasedAnnotation(it, javac) } \ No newline at end of file diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/utils.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/utils.kt index 27a63db6c71..be8a5774de1 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/utils.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/utils.kt @@ -17,11 +17,10 @@ package org.jetbrains.kotlin.javac.wrappers.trees import com.sun.tools.javac.tree.JCTree -import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.javac.wrappers.symbols.SymbolBasedArrayAnnotationArgument import org.jetbrains.kotlin.javac.wrappers.symbols.SymbolBasedReferenceAnnotationArgument -import org.jetbrains.kotlin.load.java.JavaVisibilities +import org.jetbrains.kotlin.javac.wrappers.symbols.getVisibility import org.jetbrains.kotlin.load.java.structure.JavaAnnotation import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName @@ -41,17 +40,7 @@ internal val JCTree.JCModifiers.hasDefaultModifier: Boolean get() = Modifier.DEFAULT in getFlags() internal val JCTree.JCModifiers.visibility: Visibility - get() = getFlags().let { - when { - Modifier.PUBLIC in it -> Visibilities.PUBLIC - Modifier.PRIVATE in it -> Visibilities.PRIVATE - Modifier.PROTECTED in it -> { - if (Modifier.STATIC in it) JavaVisibilities.PROTECTED_STATIC_VISIBILITY - else JavaVisibilities.PROTECTED_AND_PACKAGE - } - else -> JavaVisibilities.PACKAGE_VISIBILITY - } - } + get() = getFlags().getVisibility() internal fun JCTree.annotations(): Collection = when (this) { is JCTree.JCMethodDecl -> mods?.annotations @@ -71,12 +60,13 @@ fun Collection.filterTypeAnnotations(): Collection { - elementTypeArg.args.find { (it as? SymbolBasedReferenceAnnotationArgument)?.element?.simpleName?.contentEquals("TYPE_USE") ?: false } - ?.let { filteredAnnotations.add(annotation) } + elementTypeArg.args.find { + (it as? SymbolBasedReferenceAnnotationArgument)?.element?.simpleName?.contentEquals("TYPE_USE") ?: false + }?.let { filteredAnnotations.add(annotation) } } is SymbolBasedReferenceAnnotationArgument -> { elementTypeArg.element.simpleName.takeIf { it.contentEquals("TYPE_USE") } - ?.let { filteredAnnotations.add(annotation) } + ?.let { filteredAnnotations.add(annotation) } } is TreeBasedArrayAnnotationArgument -> { elementTypeArg.args.find {