Remove dependency of module 'java-model-wrappers' on 'annotation-processing'
This breaks the circular dependency between them
This commit is contained in:
@@ -9,7 +9,6 @@
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="light-classes" />
|
||||
<orderEntry type="module" module-name="frontend" />
|
||||
<orderEntry type="module" module-name="annotation-processing" />
|
||||
<orderEntry type="library" name="kotlin-runtime" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -20,8 +20,8 @@ import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import com.intellij.psi.PsiElement
|
||||
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.util.toDisposable
|
||||
import javax.lang.model.element.Element
|
||||
|
||||
interface JePsiElementOwner {
|
||||
|
||||
+5
-2
@@ -17,14 +17,17 @@
|
||||
package org.jetbrains.kotlin.java.model.types
|
||||
|
||||
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.source.PsiClassReferenceType
|
||||
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.internal.getTypeWithTypeParameters
|
||||
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.TypeKind
|
||||
import javax.lang.model.type.TypeMirror
|
||||
|
||||
+3
-4
@@ -16,15 +16,14 @@
|
||||
|
||||
package org.jetbrains.kotlin.java.model.types
|
||||
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.PsiMethod
|
||||
import com.intellij.psi.PsiType
|
||||
import com.intellij.psi.util.MethodSignature
|
||||
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.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.TypeKind
|
||||
import javax.lang.model.type.TypeMirror
|
||||
@@ -48,7 +47,7 @@ class JeMethodExecutableTypeMirror(
|
||||
// JeElementRegistry registration is done in JeDisposablePsiElementOwner
|
||||
override fun dispose() {
|
||||
super.dispose()
|
||||
dispose(disposableSignature, disposableReturnType)
|
||||
disposeAll(disposableSignature, disposableReturnType)
|
||||
}
|
||||
|
||||
override fun getKind() = TypeKind.EXECUTABLE
|
||||
|
||||
@@ -20,9 +20,9 @@ import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import com.intellij.psi.PsiManager
|
||||
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.annotation.processing.impl.dispose
|
||||
import org.jetbrains.kotlin.java.model.util.disposeAll
|
||||
import org.jetbrains.kotlin.java.model.util.toDisposable
|
||||
|
||||
interface JePsiType : JeTypeMirror {
|
||||
val psiType: PsiType
|
||||
@@ -39,7 +39,7 @@ abstract class JePsiTypeBase<out T : PsiType>(
|
||||
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
|
||||
get() = disposableManager()
|
||||
|
||||
+5
-2
@@ -16,10 +16,13 @@
|
||||
|
||||
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 com.intellij.psi.*
|
||||
import org.jetbrains.kotlin.annotation.processing.impl.toDisposable
|
||||
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.TypeMirror
|
||||
import javax.lang.model.type.TypeVariable
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright 2010-2017 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.java.model.util
|
||||
|
||||
import com.intellij.openapi.Disposable
|
||||
|
||||
class DisposableRef<out T : Any>(initialValue: T): Disposable {
|
||||
@Volatile
|
||||
private var value: T? = initialValue
|
||||
|
||||
operator fun invoke() = value ?: throw IllegalStateException("Reference is disposed")
|
||||
|
||||
override fun dispose() {
|
||||
value = null
|
||||
}
|
||||
}
|
||||
|
||||
fun <T : Any> T.toDisposable() = DisposableRef(this)
|
||||
|
||||
fun disposeAll(vararg refs: DisposableRef<*>?) {
|
||||
refs.forEach { it?.dispose() }
|
||||
}
|
||||
Reference in New Issue
Block a user