compiler: cleanup 'public', property access syntax

This commit is contained in:
Dmitry Jemerov
2016-01-07 17:57:35 +01:00
parent b72ea1ff07
commit 117a0d8b7b
488 changed files with 3147 additions and 3287 deletions
@@ -61,10 +61,10 @@ private fun traverseClass(c: Class<*>): ClassInfo {
private fun getSetterInfos(c: Class<*>): List<SetterInfo> {
val setterInfos = ArrayList<SetterInfo>()
for (method in c.getMethods()) {
for (annotation in method.getDeclaredAnnotations()) {
if (annotation.annotationClass.java.getName().endsWith(".Inject")) {
setterInfos.add(SetterInfo(method, method.getGenericParameterTypes().toList()))
for (method in c.methods) {
for (annotation in method.declaredAnnotations) {
if (annotation.annotationClass.java.name.endsWith(".Inject")) {
setterInfos.add(SetterInfo(method, method.genericParameterTypes.toList()))
}
}
}
@@ -72,16 +72,16 @@ private fun getSetterInfos(c: Class<*>): List<SetterInfo> {
}
private fun getConstructorInfo(c: Class<*>): ConstructorInfo? {
if (Modifier.isAbstract(c.getModifiers()) || c.isPrimitive())
if (Modifier.isAbstract(c.modifiers) || c.isPrimitive)
return null
val constructors = c.getConstructors()
val hasSinglePublicConstructor = constructors.singleOrNull()?.let { Modifier.isPublic(it.getModifiers()) } ?: false
val constructors = c.constructors
val hasSinglePublicConstructor = constructors.singleOrNull()?.let { Modifier.isPublic(it.modifiers) } ?: false
if (!hasSinglePublicConstructor)
return null
val constructor = constructors.single()
return ConstructorInfo(constructor, constructor.getGenericParameterTypes().toList())
return ConstructorInfo(constructor, constructor.genericParameterTypes.toList())
}
@@ -89,10 +89,10 @@ private fun collectInterfacesRecursive(type: Type, result: MutableSet<Type>) {
// TODO: should apply generic substitution through hierarchy
val klass : Class<*>? = when(type) {
is Class<*> -> type
is ParameterizedType -> type.getRawType() as? Class<*>
is ParameterizedType -> type.rawType as? Class<*>
else -> null
}
klass?.getGenericInterfaces()?.forEach {
klass?.genericInterfaces?.forEach {
if (result.add(it)) {
collectInterfacesRecursive(it, result)
}
@@ -104,8 +104,8 @@ private fun getRegistrations(klass: Class<*>): List<Type> {
val superClasses = sequence<Type>(klass) {
when (it) {
is Class<*> -> it.getGenericSuperclass()
is ParameterizedType -> (it.getRawType() as? Class<*>)?.getGenericSuperclass()
is Class<*> -> it.genericSuperclass
is ParameterizedType -> (it.rawType as? Class<*>)?.genericSuperclass
else -> null
}
}
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.container
import java.lang.reflect.*
public class InstanceComponentDescriptor(val instance: Any) : ComponentDescriptor {
class InstanceComponentDescriptor(val instance: Any) : ComponentDescriptor {
override fun getValue(): Any = instance
override fun getRegistrations(): Iterable<Type> = instance.javaClass.getInfo().registrations
@@ -26,7 +26,7 @@ public class InstanceComponentDescriptor(val instance: Any) : ComponentDescripto
override fun getDependencies(context: ValueResolveContext): Collection<Class<*>> = emptyList()
override fun toString(): String {
return "Instance: ${instance.javaClass.getSimpleName()}"
return "Instance: ${instance.javaClass.simpleName}"
}
}
@@ -24,13 +24,13 @@ import java.lang.reflect.WildcardType
class ContainerConsistencyException(message: String) : Exception(message)
public interface ComponentContainer {
interface ComponentContainer {
fun createResolveContext(requestingDescriptor: ValueDescriptor): ValueResolveContext
}
public interface ComponentProvider {
public fun resolve(request: Type): ValueDescriptor?
public fun <T> create(request: Class<T>): T
interface ComponentProvider {
fun resolve(request: Type): ValueDescriptor?
fun <T> create(request: Class<T>): T
}
object DynamicComponentDescriptor : ValueDescriptor {
@@ -38,8 +38,8 @@ object DynamicComponentDescriptor : ValueDescriptor {
override fun toString(): String = "Dynamic"
}
public class StorageComponentContainer(id: String) : ComponentContainer, ComponentProvider, Closeable {
public val unknownContext: ComponentResolveContext by lazy { ComponentResolveContext(this, DynamicComponentDescriptor) }
class StorageComponentContainer(id: String) : ComponentContainer, ComponentProvider, Closeable {
val unknownContext: ComponentResolveContext by lazy { ComponentResolveContext(this, DynamicComponentDescriptor) }
val componentStorage = ComponentStorage(id)
override fun createResolveContext(requestingDescriptor: ValueDescriptor): ValueResolveContext {
@@ -59,7 +59,7 @@ public class StorageComponentContainer(id: String) : ComponentContainer, Compone
override fun close() = componentStorage.dispose()
public fun resolve(request: Type, context: ValueResolveContext): ValueDescriptor? {
fun resolve(request: Type, context: ValueResolveContext): ValueDescriptor? {
return componentStorage.resolve(request, context) ?: resolveIterable(request, context)
}
@@ -69,14 +69,14 @@ public class StorageComponentContainer(id: String) : ComponentContainer, Compone
private fun resolveIterable(request: Type, context: ValueResolveContext): ValueDescriptor? {
if (request !is ParameterizedType) return null
val rawType = request.getRawType()
val rawType = request.rawType
if (rawType != Iterable::class.java) return null
val typeArguments = request.getActualTypeArguments()
val typeArguments = request.actualTypeArguments
if (typeArguments.size != 1) return null
val iterableTypeArgument = typeArguments[0]
val iterableType = when (iterableTypeArgument) {
is WildcardType -> {
val upperBounds = iterableTypeArgument.getUpperBounds()
val upperBounds = iterableTypeArgument.upperBounds
if (upperBounds.size != 1) return null
upperBounds[0]
}
@@ -87,7 +87,7 @@ public class StorageComponentContainer(id: String) : ComponentContainer, Compone
return IterableDescriptor(componentStorage.resolveMultiple(iterableType, context))
}
public fun resolveMultiple(request: Class<*>, context: ValueResolveContext = unknownContext): Iterable<ValueDescriptor> {
fun resolveMultiple(request: Class<*>, context: ValueResolveContext = unknownContext): Iterable<ValueDescriptor> {
return componentStorage.resolveMultiple(request, context)
}
@@ -103,18 +103,18 @@ public class StorageComponentContainer(id: String) : ComponentContainer, Compone
}
}
public fun StorageComponentContainer.registerSingleton(klass: Class<*>): StorageComponentContainer {
fun StorageComponentContainer.registerSingleton(klass: Class<*>): StorageComponentContainer {
return registerDescriptors(listOf(SingletonTypeComponentDescriptor(this, klass)))
}
public fun StorageComponentContainer.registerInstance(instance: Any): StorageComponentContainer {
fun StorageComponentContainer.registerInstance(instance: Any): StorageComponentContainer {
return registerDescriptors(listOf(InstanceComponentDescriptor(instance)))
}
public inline fun <reified T : Any> StorageComponentContainer.resolve(context: ValueResolveContext = unknownContext): ValueDescriptor? {
inline fun <reified T : Any> StorageComponentContainer.resolve(context: ValueResolveContext = unknownContext): ValueDescriptor? {
return resolve(T::class.java, context)
}
public inline fun <reified T : Any> StorageComponentContainer.resolveMultiple(context: ValueResolveContext = unknownContext): Iterable<ValueDescriptor> {
inline fun <reified T : Any> StorageComponentContainer.resolveMultiple(context: ValueResolveContext = unknownContext): Iterable<ValueDescriptor> {
return resolveMultiple(T::class.java, context)
}
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.container
import java.util.ArrayList
import java.util.HashSet
public fun <T> topologicalSort(items: Iterable<T>, dependencies: (T) -> Iterable<T>): List<T> {
fun <T> topologicalSort(items: Iterable<T>, dependencies: (T) -> Iterable<T>): List<T> {
val itemsInProgress = HashSet<T>()
val completedItems = HashSet<T>()
val result = ArrayList<T>()
@@ -48,4 +48,4 @@ public fun <T> topologicalSort(items: Iterable<T>, dependencies: (T) -> Iterable
return result.apply { reverse() }
}
public class CycleInTopoSortException : Exception()
class CycleInTopoSortException : Exception()
@@ -18,8 +18,8 @@ package org.jetbrains.kotlin.container
import java.lang.reflect.*
public interface ValueDescriptor {
public fun getValue(): Any
interface ValueDescriptor {
fun getValue(): Any
}
internal interface ComponentDescriptor : ValueDescriptor {
@@ -29,7 +29,7 @@ internal interface ComponentDescriptor : ValueDescriptor {
get() = false
}
public class IterableDescriptor(val descriptors: Iterable<ValueDescriptor>) : ValueDescriptor {
class IterableDescriptor(val descriptors: Iterable<ValueDescriptor>) : ValueDescriptor {
override fun getValue(): Any {
return descriptors.map { it.getValue() }
}
@@ -18,27 +18,26 @@ package org.jetbrains.kotlin.container
import kotlin.reflect.KProperty
public fun createContainer(id: String, init: StorageComponentContainer.() -> Unit): StorageComponentContainer {
fun createContainer(id: String, init: StorageComponentContainer.() -> Unit): StorageComponentContainer {
val c = StorageComponentContainer(id)
c.init()
c.compose()
return c
}
public inline fun <reified T : Any> StorageComponentContainer.useImpl() {
inline fun <reified T : Any> StorageComponentContainer.useImpl() {
registerSingleton(T::class.java)
}
public inline fun <reified T : Any> ComponentProvider.get(): T {
inline fun <reified T : Any> ComponentProvider.get(): T {
return getService(T::class.java)
}
@Suppress("UNCHECKED_CAST")
public fun <T : Any> ComponentProvider.getService(request: Class<T>): T {
@Suppress("UNCHECKED_CAST") fun <T : Any> ComponentProvider.getService(request: Class<T>): T {
return resolve(request)!!.getValue() as T
}
public fun StorageComponentContainer.useInstance(instance: Any) {
fun StorageComponentContainer.useInstance(instance: Any) {
registerInstance(instance)
}
@@ -33,11 +33,11 @@ internal class ComponentRegistry {
private var registrationMap = MultiMap.createLinkedSet<Type, ComponentDescriptor>()
public fun addAll(descriptors: Collection<ComponentDescriptor>) {
fun addAll(descriptors: Collection<ComponentDescriptor>) {
registrationMap.putAllValues(buildRegistrationMap(descriptors))
}
public fun tryGetEntry(request: Type): Collection<ComponentDescriptor> {
fun tryGetEntry(request: Type): Collection<ComponentDescriptor> {
return registrationMap.get(request)
}
}
@@ -22,30 +22,30 @@ import java.lang.reflect.Method
import java.lang.reflect.Type
import java.util.ArrayList
public interface ValueResolver {
interface ValueResolver {
fun resolve(request: Type, context: ValueResolveContext): ValueDescriptor?
}
public interface ValueResolveContext {
interface ValueResolveContext {
fun resolve(registration: Type): ValueDescriptor?
}
public class ComponentResolveContext(val container: StorageComponentContainer, val requestingDescriptor: ValueDescriptor) : ValueResolveContext {
class ComponentResolveContext(val container: StorageComponentContainer, val requestingDescriptor: ValueDescriptor) : ValueResolveContext {
override fun resolve(registration: Type): ValueDescriptor? = container.resolve(registration, this)
override fun toString(): String = "for $requestingDescriptor in $container"
}
public class ConstructorBinding(val constructor: Constructor<*>, val argumentDescriptors: List<ValueDescriptor>)
class ConstructorBinding(val constructor: Constructor<*>, val argumentDescriptors: List<ValueDescriptor>)
public class MethodBinding(val method: Method, val argumentDescriptors: List<ValueDescriptor>) {
class MethodBinding(val method: Method, val argumentDescriptors: List<ValueDescriptor>) {
fun invoke(instance: Any) {
val arguments = computeArguments(argumentDescriptors).toTypedArray()
method.invoke(instance, *arguments)
}
}
public fun computeArguments(argumentDescriptors: List<ValueDescriptor>): List<Any> = argumentDescriptors.map { it.getValue() }
fun computeArguments(argumentDescriptors: List<ValueDescriptor>): List<Any> = argumentDescriptors.map { it.getValue() }
fun Class<*>.bindToConstructor(context: ValueResolveContext): ConstructorBinding {
val constructorInfo = getInfo().constructorInfo!!
@@ -54,7 +54,7 @@ fun Class<*>.bindToConstructor(context: ValueResolveContext): ConstructorBinding
}
fun Method.bindToMethod(context: ValueResolveContext): MethodBinding {
return MethodBinding(this, bindArguments(getGenericParameterTypes().toList(), context))
return MethodBinding(this, bindArguments(genericParameterTypes.toList(), context))
}
private fun Member.bindArguments(parameters: List<Type>, context: ValueResolveContext): List<ValueDescriptor> {
@@ -29,12 +29,12 @@ enum class ComponentState {
Disposed
}
public abstract class SingletonDescriptor(val container: ComponentContainer) : ComponentDescriptor, Closeable {
abstract class SingletonDescriptor(val container: ComponentContainer) : ComponentDescriptor, Closeable {
private var instance: Any? = null
protected var state: ComponentState = ComponentState.Null
private val disposableObjects by lazy { ArrayList<Closeable>() }
public override fun getValue(): Any {
override fun getValue(): Any {
when {
state == ComponentState.Corrupted -> throw ContainerConsistencyException("Component descriptor $this is corrupted and cannot be accessed")
state == ComponentState.Disposed -> throw ContainerConsistencyException("Component descriptor $this is disposed and cannot be accessed")
@@ -115,9 +115,9 @@ public abstract class SingletonDescriptor(val container: ComponentContainer) : C
get() = true
}
public open class SingletonTypeComponentDescriptor(container: ComponentContainer, val klass: Class<*>) : SingletonDescriptor(container) {
open class SingletonTypeComponentDescriptor(container: ComponentContainer, val klass: Class<*>) : SingletonDescriptor(container) {
override fun createInstance(context: ValueResolveContext): Any = createInstanceOf(klass, context)
public override fun getRegistrations(): Iterable<Type> = klass.getInfo().registrations
override fun getRegistrations(): Iterable<Type> = klass.getInfo().registrations
private fun createInstanceOf(klass: Class<*>, context: ValueResolveContext): Any {
val binding = klass.bindToConstructor(context)
@@ -141,11 +141,11 @@ public open class SingletonTypeComponentDescriptor(container: ComponentContainer
return classInfo.constructorInfo?.parameters.orEmpty() + classInfo.setterInfos.flatMap { it.parameters }
}
override fun toString(): String = "Singleton: ${klass.getSimpleName()}"
override fun toString(): String = "Singleton: ${klass.simpleName}"
}
class ImplicitSingletonTypeComponentDescriptor(container: ComponentContainer, klass: Class<*>) : SingletonTypeComponentDescriptor(container, klass) {
override fun toString(): String {
return "Implicit: ${klass.getSimpleName()}"
return "Implicit: ${klass.simpleName}"
}
}
@@ -26,7 +26,7 @@ import java.util.ArrayList
import java.util.HashSet
import java.util.LinkedHashSet
public enum class ComponentStorageState {
enum class ComponentStorageState {
Initial,
Initialized,
Disposing,
@@ -35,7 +35,7 @@ public enum class ComponentStorageState {
internal class InvalidCardinalityException(message: String, val descriptors: Collection<ComponentDescriptor>) : Exception(message)
public class ComponentStorage(val myId: String) : ValueResolver {
class ComponentStorage(val myId: String) : ValueResolver {
var state = ComponentStorageState.Initial
private val registry = ComponentRegistry()
private val descriptors = LinkedHashSet<ComponentDescriptor>()
@@ -65,7 +65,7 @@ public class ComponentStorage(val myId: String) : ValueResolver {
}
}
public fun dump(printer: PrintStream): Unit = with (printer) {
fun dump(printer: PrintStream): Unit = with (printer) {
val heading = "Container: $myId"
println(heading)
println("=".repeat(heading.length))
@@ -88,7 +88,7 @@ public class ComponentStorage(val myId: String) : ValueResolver {
}
public fun resolveMultiple(request: Type, context: ValueResolveContext): Iterable<ValueDescriptor> {
fun resolveMultiple(request: Type, context: ValueResolveContext): Iterable<ValueDescriptor> {
registerDependency(request, context)
return registry.tryGetEntry(request)
}
@@ -106,7 +106,7 @@ public class ComponentStorage(val myId: String) : ValueResolver {
}
public fun compose(context: ComponentResolveContext) {
fun compose(context: ComponentResolveContext) {
if (state != ComponentStorageState.Initial)
throw ContainerConsistencyException("Container $myId was already composed.")
@@ -154,13 +154,13 @@ public class ComponentStorage(val myId: String) : ValueResolver {
if (entry.isEmpty()) {
val rawType: Class<*>? = when (type) {
is Class<*> -> type
is ParameterizedType -> type.getRawType() as? Class<*>
is ParameterizedType -> type.rawType as? Class<*>
else -> null
}
if (rawType == null)
continue
if (!Modifier.isAbstract(rawType.getModifiers()) && !rawType.isPrimitive()) {
if (!Modifier.isAbstract(rawType.modifiers) && !rawType.isPrimitive) {
val implicitDescriptor = ImplicitSingletonTypeComponentDescriptor(context.container, rawType)
adhocDescriptors.add(implicitDescriptor)
collectAdhocComponents(context, implicitDescriptor, visitedTypes, adhocDescriptors)
@@ -178,7 +178,7 @@ public class ComponentStorage(val myId: String) : ValueResolver {
}
}
public fun dispose() {
fun dispose() {
if (state != ComponentStorageState.Initialized) {
if (state == ComponentStorageState.Initial)
return // it is valid to dispose container which was not initialized
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.container.tests
import java.io.*
interface TestComponentInterface {
public val disposed: Boolean
val disposed: Boolean
fun foo()
}
@@ -27,7 +27,7 @@ interface TestClientComponentInterface {
}
class TestComponent : TestComponentInterface, Closeable {
public override var disposed: Boolean = false
override var disposed: Boolean = false
override fun close() {
disposed = true
}
@@ -38,7 +38,7 @@ class TestComponent : TestComponentInterface, Closeable {
}
class ManualTestComponent(val name: String) : TestComponentInterface, Closeable {
public override var disposed: Boolean = false
override var disposed: Boolean = false
override fun close() {
disposed = true
}