Remove acces to JavaPropertyInitializerEvaluator through ServiceLoader by injecting it in GenerateInjectors
This commit is contained in:
committed by
Alexander Udalov
parent
2e4028ba3a
commit
fe48051041
+2
-1
@@ -29,7 +29,8 @@ public class LazyJavaPackageFragmentProvider(
|
||||
outerContext.externalSignatureResolver,
|
||||
outerContext.errorReporter,
|
||||
outerContext.methodSignatureChecker,
|
||||
outerContext.javaResolverCache
|
||||
outerContext.javaResolverCache,
|
||||
outerContext.javaPropertyInitializerEvaluator
|
||||
)
|
||||
|
||||
override fun getModule() = _module
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaResolverCache
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaPropertyInitializerEvaluator
|
||||
|
||||
open class GlobalJavaResolverContext(
|
||||
val storageManager: StorageManager,
|
||||
@@ -38,7 +39,8 @@ open class GlobalJavaResolverContext(
|
||||
val externalSignatureResolver: ExternalSignatureResolver,
|
||||
val errorReporter: ErrorReporter,
|
||||
val methodSignatureChecker: MethodSignatureChecker,
|
||||
val javaResolverCache: JavaResolverCache
|
||||
val javaResolverCache: JavaResolverCache,
|
||||
val javaPropertyInitializerEvaluator: JavaPropertyInitializerEvaluator
|
||||
)
|
||||
|
||||
open class LazyJavaResolverContext(
|
||||
@@ -52,10 +54,11 @@ open class LazyJavaResolverContext(
|
||||
externalSignatureResolver: ExternalSignatureResolver,
|
||||
errorReporter: ErrorReporter,
|
||||
methodSignatureChecker: MethodSignatureChecker,
|
||||
javaResolverCache: JavaResolverCache
|
||||
javaResolverCache: JavaResolverCache,
|
||||
javaPropertyInitializerEvaluator: JavaPropertyInitializerEvaluator
|
||||
) : GlobalJavaResolverContext(storageManager, finder, kotlinClassFinder, deserializedDescriptorResolver,
|
||||
externalAnnotationResolver, externalSignatureResolver,
|
||||
errorReporter, methodSignatureChecker, javaResolverCache)
|
||||
errorReporter, methodSignatureChecker, javaResolverCache, javaPropertyInitializerEvaluator)
|
||||
|
||||
fun LazyJavaResolverContext.withTypes(
|
||||
typeParameterResolver: TypeParameterResolver = TypeParameterResolver.EMPTY
|
||||
@@ -71,6 +74,7 @@ fun LazyJavaResolverContext.withTypes(
|
||||
errorReporter,
|
||||
methodSignatureChecker,
|
||||
javaResolverCache,
|
||||
javaPropertyInitializerEvaluator,
|
||||
LazyJavaTypeResolver(this, typeParameterResolver),
|
||||
typeParameterResolver)
|
||||
|
||||
@@ -86,12 +90,13 @@ class LazyJavaResolverContextWithTypes(
|
||||
errorReporter: ErrorReporter,
|
||||
methodSignatureChecker: MethodSignatureChecker,
|
||||
javaResolverCache: JavaResolverCache,
|
||||
javaPropertyInitializerEvaluator: JavaPropertyInitializerEvaluator,
|
||||
val typeResolver: LazyJavaTypeResolver,
|
||||
val typeParameterResolver: TypeParameterResolver
|
||||
) : LazyJavaResolverContext(packageFragmentProvider, javaClassResolver, storageManager, finder,
|
||||
kotlinClassFinder, deserializedDescriptorResolver,
|
||||
externalAnnotationResolver, externalSignatureResolver,
|
||||
errorReporter, methodSignatureChecker, javaResolverCache)
|
||||
errorReporter, methodSignatureChecker, javaResolverCache, javaPropertyInitializerEvaluator)
|
||||
|
||||
fun LazyJavaResolverContextWithTypes.child(
|
||||
containingDeclaration: DeclarationDescriptor,
|
||||
|
||||
+1
-1
@@ -273,7 +273,7 @@ public abstract class LazyJavaMemberScope(
|
||||
if (DescriptorUtils.shouldRecordInitializerForProperty(propertyDescriptor, propertyDescriptor.getType())) {
|
||||
propertyDescriptor.setCompileTimeInitializer(
|
||||
c.storageManager.createNullableLazyValue {
|
||||
JavaPropertyInitializerEvaluator.getInstance().getInitializerConstant(field, propertyDescriptor)
|
||||
c.javaPropertyInitializerEvaluator.getInitializerConstant(field, propertyDescriptor)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
+2
-18
@@ -21,23 +21,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.ServiceLoader;
|
||||
|
||||
public abstract class JavaPropertyInitializerEvaluator {
|
||||
private static JavaPropertyInitializerEvaluator instance;
|
||||
|
||||
@NotNull
|
||||
public static JavaPropertyInitializerEvaluator getInstance() {
|
||||
if (instance == null) {
|
||||
Iterator<JavaPropertyInitializerEvaluator> iterator =
|
||||
ServiceLoader.load(JavaPropertyInitializerEvaluator.class, JavaPropertyInitializerEvaluator.class.getClassLoader()).iterator();
|
||||
assert iterator.hasNext() : "No service found: " + JavaPropertyInitializerEvaluator.class.getName();
|
||||
instance = iterator.next();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
public interface JavaPropertyInitializerEvaluator {
|
||||
@Nullable
|
||||
public abstract CompileTimeConstant<?> getInitializerConstant(@NotNull JavaField field, @NotNull PropertyDescriptor descriptor);
|
||||
CompileTimeConstant<?> getInitializerConstant(@NotNull JavaField field, @NotNull PropertyDescriptor descriptor);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user