[lombok] Experimental lombok plugin prototype
Add extension point for java descriptors Add simple usage of this point to generate getter method Add simple test infrastructure to test compilation with lombok plugin
This commit is contained in:
committed by
TeamCityServer
parent
ac86ad252f
commit
f71e08df4d
@@ -45,6 +45,7 @@ import org.jetbrains.kotlin.resolve.*
|
||||
import org.jetbrains.kotlin.resolve.calls.tower.ImplicitsExtensionsResolutionFilter
|
||||
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
||||
import org.jetbrains.kotlin.resolve.jvm.JvmDiagnosticComponents
|
||||
import org.jetbrains.kotlin.resolve.jvm.extensions.SyntheticJavaResolveExtension
|
||||
import org.jetbrains.kotlin.resolve.jvm.multiplatform.OptionalAnnotationPackageFragmentProvider
|
||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory
|
||||
@@ -116,6 +117,8 @@ fun StorageComponentContainer.configureJavaSpecificComponents(
|
||||
useInstance(JavaDeprecationSettings)
|
||||
useInstance(moduleClassResolver)
|
||||
|
||||
useInstance(SyntheticJavaResolveExtension.getProvider(moduleContext.project))
|
||||
|
||||
if (configureJavaClassFinder != null) {
|
||||
configureJavaClassFinder()
|
||||
} else {
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.resolve.jvm.extensions
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||
import org.jetbrains.kotlin.resolve.jvm.CompositeSyntheticJavaPartsProvider
|
||||
import org.jetbrains.kotlin.resolve.jvm.SyntheticJavaPartsProvider
|
||||
|
||||
interface SyntheticJavaResolveExtension {
|
||||
|
||||
companion object : ProjectExtensionDescriptor<SyntheticJavaResolveExtension>(
|
||||
"org.jetbrains.kotlin.syntheticJavaResolveExtension", SyntheticJavaResolveExtension::class.java
|
||||
) {
|
||||
fun getProvider(project: Project): SyntheticJavaPartsProvider {
|
||||
val instances = getInstances(project)
|
||||
val providers = instances.map { it.getProvider() }
|
||||
return if (providers.isEmpty()) {
|
||||
SyntheticJavaPartsProvider.EMPTY
|
||||
} else {
|
||||
CompositeSyntheticJavaPartsProvider(providers)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getProvider(): SyntheticJavaPartsProvider
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user