Remove dependency of module 'java-model-wrappers' on 'annotation-processing'

This breaks the circular dependency between them
This commit is contained in:
Alexander Udalov
2017-06-03 15:45:06 +03:00
parent 0e693c39a3
commit 4844d720cc
12 changed files with 41 additions and 26 deletions
@@ -19,7 +19,8 @@ package org.jetbrains.kotlin.annotation.processing.impl
import com.intellij.openapi.Disposable import com.intellij.openapi.Disposable
import com.intellij.psi.* import com.intellij.psi.*
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.util.* import com.intellij.psi.util.PsiSuperMethodUtil
import com.intellij.psi.util.TypeConversionUtil
import org.jetbrains.kotlin.java.model.JeAnnotationOwner import org.jetbrains.kotlin.java.model.JeAnnotationOwner
import org.jetbrains.kotlin.java.model.JeElement import org.jetbrains.kotlin.java.model.JeElement
import org.jetbrains.kotlin.java.model.JeName import org.jetbrains.kotlin.java.model.JeName
@@ -28,6 +29,8 @@ import org.jetbrains.kotlin.java.model.elements.JeMethodExecutableElement
import org.jetbrains.kotlin.java.model.elements.JePackageElement import org.jetbrains.kotlin.java.model.elements.JePackageElement
import org.jetbrains.kotlin.java.model.elements.JeTypeElement import org.jetbrains.kotlin.java.model.elements.JeTypeElement
import org.jetbrains.kotlin.java.model.internal.getTypeWithTypeParameters import org.jetbrains.kotlin.java.model.internal.getTypeWithTypeParameters
import org.jetbrains.kotlin.java.model.util.disposeAll
import org.jetbrains.kotlin.java.model.util.toDisposable
import java.io.PrintWriter import java.io.PrintWriter
import java.io.Writer import java.io.Writer
import javax.lang.model.element.* import javax.lang.model.element.*
@@ -40,7 +43,7 @@ class KotlinElements(
internal val javaPsiFacade = javaPsiFacade.toDisposable() internal val javaPsiFacade = javaPsiFacade.toDisposable()
internal val scope = scope.toDisposable() internal val scope = scope.toDisposable()
override fun dispose() = dispose(javaPsiFacade, scope) override fun dispose() = disposeAll(javaPsiFacade, scope)
override fun hides(hider: Element, hidden: Element): Boolean { override fun hides(hider: Element, hidden: Element): Boolean {
val hiderMethod = (hider as? JeMethodExecutableElement)?.psi ?: return false val hiderMethod = (hider as? JeMethodExecutableElement)?.psi ?: return false
@@ -23,6 +23,8 @@ import com.intellij.psi.JavaPsiFacade
import com.intellij.psi.PsiManager import com.intellij.psi.PsiManager
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.java.model.internal.JeElementRegistry import org.jetbrains.kotlin.java.model.internal.JeElementRegistry
import org.jetbrains.kotlin.java.model.util.disposeAll
import org.jetbrains.kotlin.java.model.util.toDisposable
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
import java.io.File import java.io.File
import java.util.* import java.util.*
@@ -66,9 +68,9 @@ class KotlinProcessingEnvironment(
types().dispose() types().dispose()
elements().dispose() elements().dispose()
registry().dispose() registry().dispose()
dispose(elements, types, messager, filer, processors, disposeAll(elements, types, messager, filer, processors,
project, psiManager, javaPsiFacade, projectScope, bindingContext, project, psiManager, javaPsiFacade, projectScope, bindingContext,
appendJavaSourceRootsHandler, options) appendJavaSourceRootsHandler, options)
} }
override fun getElementUtils() = elements() override fun getElementUtils() = elements()
@@ -19,6 +19,8 @@ package org.jetbrains.kotlin.annotation.processing.impl
import com.intellij.openapi.Disposable import com.intellij.openapi.Disposable
import org.jetbrains.kotlin.annotation.processing.RoundAnnotations import org.jetbrains.kotlin.annotation.processing.RoundAnnotations
import org.jetbrains.kotlin.java.model.toJeElement import org.jetbrains.kotlin.java.model.toJeElement
import org.jetbrains.kotlin.java.model.util.disposeAll
import org.jetbrains.kotlin.java.model.util.toDisposable
import javax.annotation.processing.RoundEnvironment import javax.annotation.processing.RoundEnvironment
import javax.lang.model.element.Element import javax.lang.model.element.Element
import javax.lang.model.element.TypeElement import javax.lang.model.element.TypeElement
@@ -30,7 +32,7 @@ internal class KotlinRoundEnvironment(
) : RoundEnvironment, Disposable { ) : RoundEnvironment, Disposable {
val roundAnnotations = roundAnnotations.toDisposable() val roundAnnotations = roundAnnotations.toDisposable()
override fun dispose() = dispose(roundAnnotations) override fun dispose() = disposeAll(roundAnnotations)
private var isError = false private var isError = false
@@ -19,10 +19,14 @@ package org.jetbrains.kotlin.annotation.processing.impl
import com.intellij.openapi.Disposable import com.intellij.openapi.Disposable
import com.intellij.psi.* import com.intellij.psi.*
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.util.* import com.intellij.psi.util.MethodSignatureUtil
import com.intellij.psi.util.PsiTypesUtil
import com.intellij.psi.util.TypeConversionUtil
import org.jetbrains.kotlin.java.model.JeElement import org.jetbrains.kotlin.java.model.JeElement
import org.jetbrains.kotlin.java.model.elements.* import org.jetbrains.kotlin.java.model.elements.*
import org.jetbrains.kotlin.java.model.types.* import org.jetbrains.kotlin.java.model.types.*
import org.jetbrains.kotlin.java.model.util.disposeAll
import org.jetbrains.kotlin.java.model.util.toDisposable
import javax.lang.model.element.Element import javax.lang.model.element.Element
import javax.lang.model.element.TypeElement import javax.lang.model.element.TypeElement
import javax.lang.model.type.* import javax.lang.model.type.*
@@ -37,7 +41,7 @@ class KotlinTypes(
val psiManager = psiManager.toDisposable() val psiManager = psiManager.toDisposable()
val scope = scope.toDisposable() val scope = scope.toDisposable()
override fun dispose() = dispose(javaPsiFacade, psiManager, scope) override fun dispose() = disposeAll(javaPsiFacade, psiManager, scope)
override fun contains(containing: TypeMirror, contained: TypeMirror): Boolean { override fun contains(containing: TypeMirror, contained: TypeMirror): Boolean {
assertKindNot(containing, TypeKind.PACKAGE, TypeKind.EXECUTABLE) assertKindNot(containing, TypeKind.PACKAGE, TypeKind.EXECUTABLE)
@@ -9,7 +9,6 @@
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="light-classes" /> <orderEntry type="module" module-name="light-classes" />
<orderEntry type="module" module-name="frontend" /> <orderEntry type="module" module-name="frontend" />
<orderEntry type="module" module-name="annotation-processing" />
<orderEntry type="library" name="kotlin-runtime" level="project" /> <orderEntry type="library" name="kotlin-runtime" level="project" />
</component> </component>
</module> </module>
@@ -20,8 +20,8 @@ import com.intellij.openapi.Disposable
import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.components.ServiceManager
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import com.intellij.psi.PsiManager import com.intellij.psi.PsiManager
import org.jetbrains.kotlin.annotation.processing.impl.toDisposable
import org.jetbrains.kotlin.java.model.internal.JeElementRegistry import org.jetbrains.kotlin.java.model.internal.JeElementRegistry
import org.jetbrains.kotlin.java.model.util.toDisposable
import javax.lang.model.element.Element import javax.lang.model.element.Element
interface JePsiElementOwner { interface JePsiElementOwner {
@@ -17,14 +17,17 @@
package org.jetbrains.kotlin.java.model.types package org.jetbrains.kotlin.java.model.types
import com.intellij.pom.java.LanguageLevel import com.intellij.pom.java.LanguageLevel
import com.intellij.psi.* import com.intellij.psi.PsiClass
import com.intellij.psi.PsiClassType
import com.intellij.psi.PsiManager
import com.intellij.psi.PsiType
import com.intellij.psi.impl.PsiSubstitutorImpl import com.intellij.psi.impl.PsiSubstitutorImpl
import com.intellij.psi.impl.source.PsiClassReferenceType import com.intellij.psi.impl.source.PsiClassReferenceType
import com.intellij.psi.impl.source.PsiImmediateClassType import com.intellij.psi.impl.source.PsiImmediateClassType
import org.jetbrains.kotlin.annotation.processing.impl.toDisposable
import org.jetbrains.kotlin.java.model.elements.JeTypeElement import org.jetbrains.kotlin.java.model.elements.JeTypeElement
import org.jetbrains.kotlin.java.model.internal.getTypeWithTypeParameters import org.jetbrains.kotlin.java.model.internal.getTypeWithTypeParameters
import org.jetbrains.kotlin.java.model.internal.isStatic import org.jetbrains.kotlin.java.model.internal.isStatic
import org.jetbrains.kotlin.java.model.util.toDisposable
import javax.lang.model.type.DeclaredType import javax.lang.model.type.DeclaredType
import javax.lang.model.type.TypeKind import javax.lang.model.type.TypeKind
import javax.lang.model.type.TypeMirror import javax.lang.model.type.TypeMirror
@@ -16,15 +16,14 @@
package org.jetbrains.kotlin.java.model.types package org.jetbrains.kotlin.java.model.types
import com.intellij.psi.PsiManager
import com.intellij.psi.PsiMethod import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiType import com.intellij.psi.PsiType
import com.intellij.psi.util.MethodSignature import com.intellij.psi.util.MethodSignature
import com.intellij.psi.util.PsiTypesUtil import com.intellij.psi.util.PsiTypesUtil
import org.jetbrains.kotlin.annotation.processing.impl.toDisposable
import org.jetbrains.kotlin.annotation.processing.impl.dispose
import org.jetbrains.kotlin.java.model.JeDisposablePsiElementOwner import org.jetbrains.kotlin.java.model.JeDisposablePsiElementOwner
import org.jetbrains.kotlin.java.model.elements.getReceiverTypeMirror import org.jetbrains.kotlin.java.model.elements.getReceiverTypeMirror
import org.jetbrains.kotlin.java.model.util.disposeAll
import org.jetbrains.kotlin.java.model.util.toDisposable
import javax.lang.model.type.ExecutableType import javax.lang.model.type.ExecutableType
import javax.lang.model.type.TypeKind import javax.lang.model.type.TypeKind
import javax.lang.model.type.TypeMirror import javax.lang.model.type.TypeMirror
@@ -48,7 +47,7 @@ class JeMethodExecutableTypeMirror(
// JeElementRegistry registration is done in JeDisposablePsiElementOwner // JeElementRegistry registration is done in JeDisposablePsiElementOwner
override fun dispose() { override fun dispose() {
super.dispose() super.dispose()
dispose(disposableSignature, disposableReturnType) disposeAll(disposableSignature, disposableReturnType)
} }
override fun getKind() = TypeKind.EXECUTABLE override fun getKind() = TypeKind.EXECUTABLE
@@ -20,9 +20,9 @@ import com.intellij.openapi.Disposable
import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.components.ServiceManager
import com.intellij.psi.PsiManager import com.intellij.psi.PsiManager
import com.intellij.psi.PsiType import com.intellij.psi.PsiType
import org.jetbrains.kotlin.annotation.processing.impl.toDisposable
import org.jetbrains.kotlin.java.model.internal.JeElementRegistry import org.jetbrains.kotlin.java.model.internal.JeElementRegistry
import org.jetbrains.kotlin.annotation.processing.impl.dispose import org.jetbrains.kotlin.java.model.util.disposeAll
import org.jetbrains.kotlin.java.model.util.toDisposable
interface JePsiType : JeTypeMirror { interface JePsiType : JeTypeMirror {
val psiType: PsiType val psiType: PsiType
@@ -39,7 +39,7 @@ abstract class JePsiTypeBase<out T : PsiType>(
ServiceManager.getService(manager.project, JeElementRegistry::class.java).register(this) ServiceManager.getService(manager.project, JeElementRegistry::class.java).register(this)
} }
override fun dispose() = dispose(disposableManager, disposableType) override fun dispose() = disposeAll(disposableManager, disposableType)
override val psiManager: PsiManager override val psiManager: PsiManager
get() = disposableManager() get() = disposableManager()
@@ -16,10 +16,13 @@
package org.jetbrains.kotlin.java.model.types package org.jetbrains.kotlin.java.model.types
import com.intellij.psi.PsiClassType
import com.intellij.psi.PsiIntersectionType
import com.intellij.psi.PsiManager
import com.intellij.psi.PsiTypeParameter
import org.jetbrains.kotlin.java.model.elements.JeTypeParameterElement import org.jetbrains.kotlin.java.model.elements.JeTypeParameterElement
import com.intellij.psi.*
import org.jetbrains.kotlin.annotation.processing.impl.toDisposable
import org.jetbrains.kotlin.java.model.toJeElement import org.jetbrains.kotlin.java.model.toJeElement
import org.jetbrains.kotlin.java.model.util.toDisposable
import javax.lang.model.type.TypeKind import javax.lang.model.type.TypeKind
import javax.lang.model.type.TypeMirror import javax.lang.model.type.TypeMirror
import javax.lang.model.type.TypeVariable import javax.lang.model.type.TypeVariable
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2016 JetBrains s.r.o. * Copyright 2010-2017 JetBrains s.r.o.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.kotlin.annotation.processing.impl package org.jetbrains.kotlin.java.model.util
import com.intellij.openapi.Disposable import com.intellij.openapi.Disposable
@@ -31,6 +31,6 @@ class DisposableRef<out T : Any>(initialValue: T): Disposable {
fun <T : Any> T.toDisposable() = DisposableRef(this) fun <T : Any> T.toDisposable() = DisposableRef(this)
fun dispose(vararg refs: DisposableRef<*>?) { fun disposeAll(vararg refs: DisposableRef<*>?) {
refs.forEach { it?.dispose() } refs.forEach { it?.dispose() }
} }
@@ -17,11 +17,11 @@
package org.jetbrains.kotlin.annotation.processing.test.processor package org.jetbrains.kotlin.annotation.processing.test.processor
import org.intellij.lang.annotations.Language import org.intellij.lang.annotations.Language
import org.jetbrains.kotlin.annotation.processing.impl.DisposableRef
import org.jetbrains.kotlin.annotation.processing.impl.KotlinProcessingEnvironment import org.jetbrains.kotlin.annotation.processing.impl.KotlinProcessingEnvironment
import org.jetbrains.kotlin.java.model.elements.* import org.jetbrains.kotlin.java.model.elements.*
import org.jetbrains.kotlin.java.model.types.JeDeclaredType import org.jetbrains.kotlin.java.model.types.JeDeclaredType
import org.jetbrains.kotlin.java.model.types.JeMethodExecutableTypeMirror import org.jetbrains.kotlin.java.model.types.JeMethodExecutableTypeMirror
import org.jetbrains.kotlin.java.model.util.DisposableRef
import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
import javax.annotation.processing.ProcessingEnvironment import javax.annotation.processing.ProcessingEnvironment