Minor: Fix a few compilation warnings in compiler and compiler tests, fix formatting

This commit is contained in:
Yan Zhulanow
2019-02-28 21:44:32 +03:00
parent 5564760ebf
commit eb1543c71a
6 changed files with 92 additions and 76 deletions
@@ -38,7 +38,10 @@ object DynamicComponentDescriptor : ValueDescriptor {
override fun toString(): String = "Dynamic"
}
class StorageComponentContainer(private val id: String, parent: StorageComponentContainer? = null) : ComponentContainer, ComponentProvider, Closeable {
class StorageComponentContainer(
private val id: String,
parent: StorageComponentContainer? = null
) : ComponentContainer, ComponentProvider, Closeable {
val unknownContext: ComponentResolveContext by lazy {
val parentContext = parent?.let { ComponentResolveContext(it, DynamicComponentDescriptor) }
ComponentResolveContext(this, DynamicComponentDescriptor, parentContext)
@@ -102,7 +105,10 @@ class StorageComponentContainer(private val id: String, parent: StorageComponent
override fun <T> create(request: Class<T>): T {
val constructorBinding = request.bindToConstructor(unknownContext)
val args = constructorBinding.argumentDescriptors.map { it.getValue() }.toTypedArray()
return runWithUnwrappingInvocationException { constructorBinding.constructor.newInstance(*args) as T }
return runWithUnwrappingInvocationException {
@Suppress("UNCHECKED_CAST")
constructorBinding.constructor.newInstance(*args) as T
}
}
override fun toString() = "Container $id"
@@ -42,7 +42,7 @@ class ComponentContainerTest {
val descriptor = container.resolve<TestComponentInterface>()
assertNotNull(descriptor)
val instance = descriptor!!.getValue() as TestComponentInterface
val instance = descriptor.getValue() as TestComponentInterface
assertNotNull(instance)
assertFails {
instance.foo()
@@ -58,14 +58,14 @@ class ComponentContainerTest {
val descriptor = container.resolve<TestClientComponent>()
assertNotNull(descriptor)
val instance = descriptor!!.getValue() as TestClientComponent
val instance = descriptor.getValue() as TestClientComponent
assertNotNull(instance)
assertNotNull(instance.dep)
assertFails {
instance.dep.foo()
}
assertTrue(instance.dep is ManualTestComponent)
assertEquals("name", (instance.dep as ManualTestComponent).name)
assertEquals("name", instance.dep.name)
container.close()
assertTrue(instance.disposed)
assertFalse(instance.dep.disposed) // should not dispose manually passed instances
@@ -80,7 +80,7 @@ class ComponentContainerTest {
val descriptor = container.resolve<TestClientComponent>()
assertNotNull(descriptor)
val instance = descriptor!!.getValue() as TestClientComponent
val instance = descriptor.getValue() as TestClientComponent
assertNotNull(instance)
assertNotNull(instance.dep)
assertFails {
@@ -114,8 +114,8 @@ class ComponentContainerTest {
assertNotNull(descriptor1)
val descriptor2 = it.resolve<TestClientComponentInterface>()
assertNotNull(descriptor2)
assertTrue(descriptor1 == descriptor2)
assertTrue(descriptor1!!.getValue() == descriptor2!!.getValue())
assertEquals(descriptor1, descriptor2)
assertEquals(descriptor1.getValue(), descriptor2.getValue())
}
}
@@ -129,9 +129,9 @@ class ComponentContainerTest {
assertNotNull(descriptor1)
val descriptor2 = it.resolve<TestAdhocComponent2>()
assertNotNull(descriptor2)
val component1 = descriptor1!!.getValue() as TestAdhocComponent1
val component2 = descriptor2!!.getValue() as TestAdhocComponent2
assertTrue(component1.service === component2.service)
val component1 = descriptor1.getValue() as TestAdhocComponent1
val component2 = descriptor2.getValue() as TestAdhocComponent2
assertSame(component1.service, component2.service)
}
}
@@ -142,10 +142,10 @@ class ComponentContainerTest {
useImpl<TestClientComponent>()
useImpl<TestClientComponent2>()
useImpl<TestIterableComponent>()
}.use {
val descriptor = it.resolve<TestIterableComponent>()
}.use { container ->
val descriptor = container.resolve<TestIterableComponent>()
assertNotNull(descriptor)
val iterableComponent = descriptor!!.getValue() as TestIterableComponent
val iterableComponent = descriptor.getValue() as TestIterableComponent
assertEquals(2, iterableComponent.components.count())
assertTrue(iterableComponent.components.any { it is TestClientComponent })
assertTrue(iterableComponent.components.any { it is TestClientComponent2 })
@@ -160,10 +160,10 @@ class ComponentContainerTest {
useImpl<TestClientComponent2>()
useImpl<TestStringComponent>()
useImpl<JavaTestComponents>()
}.use {
val descriptor = it.resolve<JavaTestComponents>()
}.use { container ->
val descriptor = container.resolve<JavaTestComponents>()
assertNotNull(descriptor)
val iterableComponent = descriptor!!.getValue() as JavaTestComponents
val iterableComponent = descriptor.getValue() as JavaTestComponents
assertEquals(2, iterableComponent.components.count())
assertTrue(iterableComponent.components.any { it is TestClientComponent })
assertTrue(iterableComponent.components.any { it is TestClientComponent2 })
@@ -181,7 +181,7 @@ class ComponentContainerTest {
}.use {
val descriptor = it.resolve<TestGenericClient>()
assertNotNull(descriptor)
val genericClient = descriptor!!.getValue() as TestGenericClient
val genericClient = descriptor.getValue() as TestGenericClient
assertTrue(genericClient.component1 is TestStringComponent)
assertTrue(genericClient.component2 is TestIntComponent)
}
@@ -219,9 +219,11 @@ class ComponentContainerTest {
class WithSetters {
var isSetterCalled = false
@Suppress("unused")
var tc: TestComponent? = null
@Inject set(v) {
isSetterCalled = true
field = v
}
}
@@ -265,7 +267,7 @@ class ComponentContainerTest {
val b = a.b
assertTrue(b is B)
val c = b!!.c
val c = b.c
assertTrue(c is C)
}
@@ -284,10 +286,13 @@ class ComponentContainerTest {
val b = bc.get<B>()
val a = ac.get<A>()
@Suppress("USELESS_IS_CHECK")
assertTrue(b is B)
@Suppress("USELESS_IS_CHECK")
assertTrue(b.a is A)
@Suppress("USELESS_IS_CHECK")
assertTrue(a is A)
assertTrue(b.a === a)
assertSame(b.a, a)
}
@Test
@@ -306,10 +311,11 @@ class ComponentContainerTest {
useImpl<B>()
}
val a = ac.get<A>()
@Suppress("USELESS_IS_CHECK")
assertTrue(a is A)
assertTrue(a === bc2.get<B>().a)
assertTrue(a === bc1.get<B>().a)
assertTrue(a === bc1.get<A>())
assertSame(a, bc2.get<B>().a)
assertSame(a, bc1.get<B>().a)
assertSame(a, bc1.get())
}
@DefaultImplementation(impl = Impl::class)
@@ -317,7 +323,7 @@ class ComponentContainerTest {
class Impl : I()
class Impl2: I()
class Impl2 : I()
class Use(val i: I)
@@ -346,7 +352,7 @@ class ComponentContainerTest {
@DefaultImplementation(impl = A::class)
interface S
object A: S
object A : S
class UseS(val s: S)
@@ -356,6 +362,6 @@ class ComponentContainerTest {
useImpl<UseS>()
}.get<UseS>()
assertTrue(useS.s === A)
assertSame(useS.s, A)
}
}
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.kdoc.parser
import com.intellij.openapi.util.text.StringUtil
enum class KDocKnownTag private constructor(val isReferenceRequired: Boolean, val isSectionStart: Boolean) {
enum class KDocKnownTag(val isReferenceRequired: Boolean, val isSectionStart: Boolean) {
AUTHOR(false, false),
THROWS(true, false),
EXCEPTION(true, false),
@@ -38,11 +38,10 @@ import org.jetbrains.kotlin.types.KotlinType
import java.util.*
abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
storageManager: StorageManager,
private val kotlinClassFinder: KotlinClassFinder
storageManager: StorageManager,
private val kotlinClassFinder: KotlinClassFinder
) : AnnotationAndConstantLoader<A, C> {
private val storage = storageManager.createMemoizedFunction<KotlinJvmBinaryClass, Storage<A, C>> {
kotlinClass ->
private val storage = storageManager.createMemoizedFunction<KotlinJvmBinaryClass, Storage<A, C>> { kotlinClass ->
loadAnnotationsAndInitializers(kotlinClass)
}
@@ -51,17 +50,17 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
protected abstract fun transformToUnsignedConstant(constant: C): C?
protected abstract fun loadAnnotation(
annotationClassId: ClassId,
source: SourceElement,
result: MutableList<A>
annotationClassId: ClassId,
source: SourceElement,
result: MutableList<A>
): KotlinJvmBinaryClass.AnnotationArgumentVisitor?
protected abstract fun loadTypeAnnotation(proto: ProtoBuf.Annotation, nameResolver: NameResolver): A
private fun loadAnnotationIfNotSpecial(
annotationClassId: ClassId,
source: SourceElement,
result: MutableList<A>
annotationClassId: ClassId,
source: SourceElement,
result: MutableList<A>
): KotlinJvmBinaryClass.AnnotationArgumentVisitor? {
if (annotationClassId in SPECIAL_ANNOTATIONS) return null
@@ -69,7 +68,7 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
}
private fun ProtoContainer.Class.toBinaryClass(): KotlinJvmBinaryClass? =
(source as? KotlinJvmBinarySourceElement)?.binaryClass
(source as? KotlinJvmBinarySourceElement)?.binaryClass
protected open fun getCachedFileContent(kotlinClass: KotlinJvmBinaryClass): ByteArray? = null
@@ -138,8 +137,8 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
override fun loadEnumEntryAnnotations(container: ProtoContainer, proto: ProtoBuf.EnumEntry): List<A> {
val signature = MemberSignature.fromFieldNameAndDesc(
container.nameResolver.getString(proto.name),
ClassMapperLite.mapClass((container as ProtoContainer.Class).classId.asString())
container.nameResolver.getString(proto.name),
ClassMapperLite.mapClass((container as ProtoContainer.Class).classId.asString())
)
return findClassAndLoadMemberAnnotations(container, signature)
}
@@ -169,11 +168,11 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
}
override fun loadValueParameterAnnotations(
container: ProtoContainer,
callableProto: MessageLite,
kind: AnnotatedCallableKind,
parameterIndex: Int,
proto: ProtoBuf.ValueParameter
container: ProtoContainer,
callableProto: MessageLite,
kind: AnnotatedCallableKind,
parameterIndex: Int,
proto: ProtoBuf.ValueParameter
): List<A> {
val methodSignature = getCallableSignature(callableProto, container.nameResolver, container.typeTable, kind)
if (methodSignature != null) {
@@ -199,9 +198,9 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
}
override fun loadExtensionReceiverParameterAnnotations(
container: ProtoContainer,
proto: MessageLite,
kind: AnnotatedCallableKind
container: ProtoContainer,
proto: MessageLite,
kind: AnnotatedCallableKind
): List<A> {
val methodSignature = getCallableSignature(proto, container.nameResolver, container.typeTable, kind)
if (methodSignature != null) {
@@ -243,7 +242,7 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
}
private fun findClassWithAnnotationsAndInitializers(
container: ProtoContainer, specialCase: KotlinJvmBinaryClass?
container: ProtoContainer, specialCase: KotlinJvmBinaryClass?
): KotlinJvmBinaryClass? {
return when {
specialCase != null -> specialCase
@@ -265,10 +264,10 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
checkNotNull(isConst) { "isConst should not be null for property (container=$container)" }
if (container is ProtoContainer.Class && container.kind == ProtoBuf.Class.Kind.INTERFACE) {
return kotlinClassFinder.findKotlinClass(
container.classId.createNestedClassId(Name.identifier(JvmAbi.DEFAULT_IMPLS_CLASS_NAME))
container.classId.createNestedClassId(Name.identifier(JvmAbi.DEFAULT_IMPLS_CLASS_NAME))
)
}
if (isConst!! && container is ProtoContainer.Package) {
if (isConst && container is ProtoContainer.Package) {
// Const properties in multifile classes are generated into the facade class
val facadeClassName = (container.source as? JvmPackagePartSource)?.facadeClassName
if (facadeClassName != null) {
@@ -293,7 +292,7 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
val jvmPackagePartSource = container.source as JvmPackagePartSource
return jvmPackagePartSource.knownJvmBinaryClass
?: kotlinClassFinder.findKotlinClass(jvmPackagePartSource.classId)
?: kotlinClassFinder.findKotlinClass(jvmPackagePartSource.classId)
}
return null
}
@@ -319,10 +318,11 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
return MemberAnnotationVisitor(signature)
}
inner class AnnotationVisitorForMethod(signature: MemberSignature) : MemberAnnotationVisitor(signature), KotlinJvmBinaryClass.MethodAnnotationVisitor {
inner class AnnotationVisitorForMethod(signature: MemberSignature) : MemberAnnotationVisitor(signature),
KotlinJvmBinaryClass.MethodAnnotationVisitor {
override fun visitParameterAnnotation(
index: Int, classId: ClassId, source: SourceElement
index: Int, classId: ClassId, source: SourceElement
): KotlinJvmBinaryClass.AnnotationArgumentVisitor? {
val paramSignature = MemberSignature.fromMethodSignatureAndParameterIndex(signature, index)
var result = memberAnnotations[paramSignature]
@@ -353,12 +353,12 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
}
private fun getPropertySignature(
proto: ProtoBuf.Property,
nameResolver: NameResolver,
typeTable: TypeTable,
field: Boolean = false,
synthetic: Boolean = false,
requireHasFieldFlagForField: Boolean = true
proto: ProtoBuf.Property,
nameResolver: NameResolver,
typeTable: TypeTable,
field: Boolean = false,
synthetic: Boolean = false,
requireHasFieldFlagForField: Boolean = true
): MemberSignature? {
val signature = proto.getExtensionOrNull(propertySignature) ?: return null
@@ -366,8 +366,7 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
val fieldSignature =
JvmProtoBufUtil.getJvmFieldSignature(proto, nameResolver, typeTable, requireHasFieldFlagForField) ?: return null
return MemberSignature.fromJvmMemberSignature(fieldSignature)
}
else if (synthetic && signature.hasSyntheticMethod()) {
} else if (synthetic && signature.hasSyntheticMethod()) {
return MemberSignature.fromMethod(nameResolver, signature.syntheticMethod)
}
@@ -375,15 +374,17 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
}
private fun getCallableSignature(
proto: MessageLite,
nameResolver: NameResolver,
typeTable: TypeTable,
kind: AnnotatedCallableKind,
requireHasFieldFlagForField: Boolean = false
proto: MessageLite,
nameResolver: NameResolver,
typeTable: TypeTable,
kind: AnnotatedCallableKind,
requireHasFieldFlagForField: Boolean = false
): MemberSignature? {
return when {
proto is ProtoBuf.Constructor -> {
MemberSignature.fromJvmMemberSignature(JvmProtoBufUtil.getJvmConstructorSignature(proto, nameResolver, typeTable) ?: return null)
MemberSignature.fromJvmMemberSignature(
JvmProtoBufUtil.getJvmConstructorSignature(proto, nameResolver, typeTable) ?: return null
)
}
proto is ProtoBuf.Function -> {
MemberSignature.fromJvmMemberSignature(JvmProtoBufUtil.getJvmMethodSignature(proto, nameResolver, typeTable) ?: return null)
@@ -405,18 +406,18 @@ abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
}
private class Storage<out A, out C>(
val memberAnnotations: Map<MemberSignature, List<A>>,
val propertyConstants: Map<MemberSignature, C>
val memberAnnotations: Map<MemberSignature, List<A>>,
val propertyConstants: Map<MemberSignature, C>
)
private companion object {
val SPECIAL_ANNOTATIONS = listOf(
JvmAnnotationNames.METADATA_FQ_NAME,
JvmAnnotationNames.JETBRAINS_NOT_NULL_ANNOTATION,
JvmAnnotationNames.JETBRAINS_NULLABLE_ANNOTATION,
FqName("java.lang.annotation.Target"),
FqName("java.lang.annotation.Retention"),
FqName("java.lang.annotation.Documented")
JvmAnnotationNames.METADATA_FQ_NAME,
JvmAnnotationNames.JETBRAINS_NOT_NULL_ANNOTATION,
JvmAnnotationNames.JETBRAINS_NULLABLE_ANNOTATION,
FqName("java.lang.annotation.Target"),
FqName("java.lang.annotation.Retention"),
FqName("java.lang.annotation.Documented")
).map(ClassId::topLevel).toSet()
}
}
@@ -47,6 +47,7 @@ inline fun <K, V> MutableMap<K, V>.getOrPutNullable(key: K, defaultValue: () ->
put(key, answer)
answer
} else {
@Suppress("UNCHECKED_CAST")
get(key) as V
}
}
@@ -99,6 +99,8 @@ private fun allRelatedClassLoaders(clsLoader: ClassLoader, visited: MutableSet<C
return try {
val field = clsLoader.javaClass.getDeclaredField("myParents") // com.intellij.ide.plugins.cl.PluginClassLoader
field.isAccessible = true
@Suppress("UNCHECKED_CAST")
val arrayOfClassLoaders = field.get(clsLoader) as Array<ClassLoader>
sequenceOf(clsLoader) + arrayOfClassLoaders.asSequence().flatMap { allRelatedClassLoaders(it, visited) }
} catch (e: Throwable) {