- aggressive green-ification
- injectors regenerated
This commit is contained in:
Alex Tkachman
2012-09-23 14:13:43 +02:00
parent a255da1904
commit b9c7f607ef
5 changed files with 107 additions and 165 deletions
@@ -18,17 +18,12 @@
package org.jetbrains.jet.di; package org.jetbrains.jet.di;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorSignatureResolver;
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.java.*;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */
@@ -44,7 +39,6 @@ public class InjectorForJavaDescriptorResolver {
private PsiClassFinderImpl psiClassFinder; private PsiClassFinderImpl psiClassFinder;
private JavaTypeTransformer javaTypeTransformer; private JavaTypeTransformer javaTypeTransformer;
private JavaDescriptorSignatureResolver javaDescriptorSignatureResolver; private JavaDescriptorSignatureResolver javaDescriptorSignatureResolver;
private NamespaceFactoryImpl namespaceFactory;
public InjectorForJavaDescriptorResolver( public InjectorForJavaDescriptorResolver(
@NotNull Project project, @NotNull Project project,
@@ -62,7 +56,6 @@ public class InjectorForJavaDescriptorResolver {
this.psiClassFinder = new PsiClassFinderImpl(); this.psiClassFinder = new PsiClassFinderImpl();
this.javaTypeTransformer = new JavaTypeTransformer(); this.javaTypeTransformer = new JavaTypeTransformer();
this.javaDescriptorSignatureResolver = new JavaDescriptorSignatureResolver(); this.javaDescriptorSignatureResolver = new JavaDescriptorSignatureResolver();
this.namespaceFactory = new NamespaceFactoryImpl();
javaBridgeConfiguration.setBuiltinsScopeExtensionMode(builtinsScopeExtensionMode); javaBridgeConfiguration.setBuiltinsScopeExtensionMode(builtinsScopeExtensionMode);
javaBridgeConfiguration.setJavaSemanticServices(javaSemanticServices); javaBridgeConfiguration.setJavaSemanticServices(javaSemanticServices);
@@ -74,7 +67,6 @@ public class InjectorForJavaDescriptorResolver {
this.javaSemanticServices.setTypeTransformer(javaTypeTransformer); this.javaSemanticServices.setTypeTransformer(javaTypeTransformer);
this.javaDescriptorResolver.setJavaDescriptorSignatureResolver(javaDescriptorSignatureResolver); this.javaDescriptorResolver.setJavaDescriptorSignatureResolver(javaDescriptorSignatureResolver);
this.javaDescriptorResolver.setNamespaceFactory(namespaceFactory);
this.javaDescriptorResolver.setProject(project); this.javaDescriptorResolver.setProject(project);
this.javaDescriptorResolver.setPsiClassFinder(psiClassFinder); this.javaDescriptorResolver.setPsiClassFinder(psiClassFinder);
this.javaDescriptorResolver.setSemanticServices(javaSemanticServices); this.javaDescriptorResolver.setSemanticServices(javaSemanticServices);
@@ -88,10 +80,6 @@ public class InjectorForJavaDescriptorResolver {
javaDescriptorSignatureResolver.setJavaDescriptorResolver(javaDescriptorResolver); javaDescriptorSignatureResolver.setJavaDescriptorResolver(javaDescriptorResolver);
javaDescriptorSignatureResolver.setJavaSemanticServices(javaSemanticServices); javaDescriptorSignatureResolver.setJavaSemanticServices(javaSemanticServices);
namespaceFactory.setConfiguration(javaBridgeConfiguration);
namespaceFactory.setModuleDescriptor(moduleDescriptor);
namespaceFactory.setTrace(bindingTrace);
javaBridgeConfiguration.init(); javaBridgeConfiguration.init();
psiClassFinder.initialize(); psiClassFinder.initialize();
@@ -17,18 +17,13 @@
package org.jetbrains.jet.di; package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorSignatureResolver;
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.java.*;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */
@@ -44,7 +39,6 @@ public class InjectorForJavaSemanticServices {
private final Project project; private final Project project;
private JavaTypeTransformer javaTypeTransformer; private JavaTypeTransformer javaTypeTransformer;
private JavaDescriptorSignatureResolver javaDescriptorSignatureResolver; private JavaDescriptorSignatureResolver javaDescriptorSignatureResolver;
private NamespaceFactoryImpl namespaceFactory;
public InjectorForJavaSemanticServices( public InjectorForJavaSemanticServices(
@NotNull BuiltinsScopeExtensionMode builtinsScopeExtensionMode, @NotNull BuiltinsScopeExtensionMode builtinsScopeExtensionMode,
@@ -60,7 +54,6 @@ public class InjectorForJavaSemanticServices {
this.project = project; this.project = project;
this.javaTypeTransformer = new JavaTypeTransformer(); this.javaTypeTransformer = new JavaTypeTransformer();
this.javaDescriptorSignatureResolver = new JavaDescriptorSignatureResolver(); this.javaDescriptorSignatureResolver = new JavaDescriptorSignatureResolver();
this.namespaceFactory = new NamespaceFactoryImpl();
this.javaSemanticServices.setDescriptorResolver(javaDescriptorResolver); this.javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
this.javaSemanticServices.setPsiClassFinder(psiClassFinder); this.javaSemanticServices.setPsiClassFinder(psiClassFinder);
@@ -68,7 +61,6 @@ public class InjectorForJavaSemanticServices {
this.javaSemanticServices.setTypeTransformer(javaTypeTransformer); this.javaSemanticServices.setTypeTransformer(javaTypeTransformer);
this.javaDescriptorResolver.setJavaDescriptorSignatureResolver(javaDescriptorSignatureResolver); this.javaDescriptorResolver.setJavaDescriptorSignatureResolver(javaDescriptorSignatureResolver);
this.javaDescriptorResolver.setNamespaceFactory(namespaceFactory);
this.javaDescriptorResolver.setProject(project); this.javaDescriptorResolver.setProject(project);
this.javaDescriptorResolver.setPsiClassFinder(psiClassFinder); this.javaDescriptorResolver.setPsiClassFinder(psiClassFinder);
this.javaDescriptorResolver.setSemanticServices(javaSemanticServices); this.javaDescriptorResolver.setSemanticServices(javaSemanticServices);
@@ -86,10 +78,6 @@ public class InjectorForJavaSemanticServices {
javaDescriptorSignatureResolver.setJavaDescriptorResolver(javaDescriptorResolver); javaDescriptorSignatureResolver.setJavaDescriptorResolver(javaDescriptorResolver);
javaDescriptorSignatureResolver.setJavaSemanticServices(javaSemanticServices); javaDescriptorSignatureResolver.setJavaSemanticServices(javaSemanticServices);
namespaceFactory.setConfiguration(javaBridgeConfiguration);
namespaceFactory.setModuleDescriptor(moduleDescriptor);
namespaceFactory.setTrace(bindingTrace);
javaBridgeConfiguration.init(); javaBridgeConfiguration.init();
psiClassFinder.initialize(); psiClassFinder.initialize();
@@ -17,39 +17,17 @@
package org.jetbrains.jet.di; package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode; import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
import org.jetbrains.jet.lang.ModuleConfiguration; import org.jetbrains.jet.lang.ModuleConfiguration;
import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.OverloadingConflictResolver; import org.jetbrains.jet.lang.resolve.calls.OverloadingConflictResolver;
import org.jetbrains.jet.lang.resolve.ImportsResolver; import org.jetbrains.jet.lang.resolve.java.*;
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.OverloadResolver;
import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorSignatureResolver;
import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */
@@ -163,7 +141,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.moduleConfiguration.setProject(project); this.moduleConfiguration.setProject(project);
javaDescriptorResolver.setJavaDescriptorSignatureResolver(javaDescriptorSignatureResolver); javaDescriptorResolver.setJavaDescriptorSignatureResolver(javaDescriptorSignatureResolver);
javaDescriptorResolver.setNamespaceFactory(namespaceFactory);
javaDescriptorResolver.setProject(project); javaDescriptorResolver.setProject(project);
javaDescriptorResolver.setPsiClassFinder(psiClassFinder); javaDescriptorResolver.setPsiClassFinder(psiClassFinder);
javaDescriptorResolver.setSemanticServices(javaSemanticServices); javaDescriptorResolver.setSemanticServices(javaSemanticServices);
@@ -100,7 +100,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
final boolean staticMembers; final boolean staticMembers;
final boolean kotlin; final boolean kotlin;
final ClassOrNamespaceDescriptor classOrNamespaceDescriptor; final ClassOrNamespaceDescriptor classOrNamespaceDescriptor;
private List<String> alternativeSignatureErrors;
protected ResolverScopeData(@Nullable PsiClass psiClass, @Nullable PsiPackage psiPackage, @Nullable FqName fqName, boolean staticMembers, @NotNull ClassOrNamespaceDescriptor descriptor) { protected ResolverScopeData(@Nullable PsiClass psiClass, @Nullable PsiPackage psiPackage, @Nullable FqName fqName, boolean staticMembers, @NotNull ClassOrNamespaceDescriptor descriptor) {
checkPsiClassIsNotJet(psiClass); checkPsiClassIsNotJet(psiClass);
@@ -134,29 +133,19 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
this.classOrNamespaceDescriptor = null; this.classOrNamespaceDescriptor = null;
} }
public boolean isPositive() {
return this.classOrNamespaceDescriptor != null;
}
@NotNull @NotNull
public PsiElement getPsiPackageOrPsiClass() { public PsiElement getPsiPackageOrPsiClass() {
if (psiPackage != null) { if (psiPackage != null) {
return psiPackage; return psiPackage;
} }
else { else {
assert psiClass != null;
return psiClass; return psiClass;
} }
} }
private Map<Name, NamedMembers> namedMembersMap; private Map<Name, NamedMembers> namedMembersMap;
public void addAlternativeSignatureError(@NotNull String errorMessage) {
if (alternativeSignatureErrors == null) {
alternativeSignatureErrors = new ArrayList<String>();
}
alternativeSignatureErrors.add(errorMessage);
}
@NotNull @NotNull
public abstract List<TypeParameterDescriptor> getTypeParameters(); public abstract List<TypeParameterDescriptor> getTypeParameters();
} }
@@ -269,7 +258,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
protected Project project; protected Project project;
protected JavaSemanticServices semanticServices; protected JavaSemanticServices semanticServices;
private NamespaceFactory namespaceFactory;
private BindingTrace trace; private BindingTrace trace;
private PsiClassFinder psiClassFinder; private PsiClassFinder psiClassFinder;
private JavaDescriptorSignatureResolver javaDescriptorSignatureResolver; private JavaDescriptorSignatureResolver javaDescriptorSignatureResolver;
@@ -279,11 +267,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
this.project = project; this.project = project;
} }
@Inject
public void setNamespaceFactory(NamespaceFactoryImpl namespaceFactory) {
this.namespaceFactory = namespaceFactory;
}
@Inject @Inject
public void setSemanticServices(JavaSemanticServices semanticServices) { public void setSemanticServices(JavaSemanticServices semanticServices) {
this.semanticServices = semanticServices; this.semanticServices = semanticServices;
@@ -375,9 +358,12 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
@NotNull @NotNull
private ResolverClassData createJavaClassDescriptor(@NotNull final PsiClass psiClass, List<Runnable> taskList) { private ResolverClassData createJavaClassDescriptor(@NotNull final PsiClass psiClass, List<Runnable> taskList) {
FqName fqName = new FqName(psiClass.getQualifiedName()); final String qualifiedName = psiClass.getQualifiedName();
assert qualifiedName != null;
FqName fqName = new FqName(qualifiedName);
if (classDescriptorCache.containsKey(fqName)) { if (classDescriptorCache.containsKey(fqName)) {
throw new IllegalStateException(psiClass.getQualifiedName()); throw new IllegalStateException(qualifiedName);
} }
checkPsiClassIsNotJet(psiClass); checkPsiClassIsNotJet(psiClass);
@@ -423,7 +409,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
classData.classDescriptor.createTypeConstructor(); classData.classDescriptor.createTypeConstructor();
classData.classDescriptor.setScopeForMemberLookup(new JavaClassMembersScope(semanticServices, classData)); classData.classDescriptor.setScopeForMemberLookup(new JavaClassMembersScope(semanticServices, classData));
javaDescriptorSignatureResolver.initializeTypeParameters(classData.typeParameters, classData.classDescriptor, "class " + psiClass.getQualifiedName()); javaDescriptorSignatureResolver.initializeTypeParameters(classData.typeParameters, classData.classDescriptor, "class " + qualifiedName);
// TODO: ugly hack: tests crash if initializeTypeParameters called with class containing proper supertypes // TODO: ugly hack: tests crash if initializeTypeParameters called with class containing proper supertypes
supertypes.addAll(getSupertypes(new PsiClassWrapper(psiClass), classData, classData.getTypeParameters())); supertypes.addAll(getSupertypes(new PsiClassWrapper(psiClass), classData, classData.getTypeParameters()));
@@ -447,6 +433,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
PsiClass psiClass = classData.psiClass; PsiClass psiClass = classData.psiClass;
ClassDescriptorFromJvmBytecode containingClass = classData.classDescriptor; ClassDescriptorFromJvmBytecode containingClass = classData.classDescriptor;
assert psiClass != null;
TypeVariableResolver resolverForTypeParameters = TypeVariableResolvers.classTypeVariableResolver( TypeVariableResolver resolverForTypeParameters = TypeVariableResolvers.classTypeVariableResolver(
containingClass, "class " + psiClass.getQualifiedName()); containingClass, "class " + psiClass.getQualifiedName());
@@ -497,6 +484,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
varargElementType = semanticServices.getTypeTransformer().transformToType(((PsiArrayType) returnType).getComponentType(), resolverForTypeParameters); varargElementType = semanticServices.getTypeTransformer().transformToType(((PsiArrayType) returnType).getComponentType(), resolverForTypeParameters);
} }
assert returnType != null;
valueParameters.add(new ValueParameterDescriptorImpl( valueParameters.add(new ValueParameterDescriptorImpl(
constructorDescriptor, constructorDescriptor,
i, i,
@@ -534,6 +522,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
private ConstructorDescriptor resolveConstructor(PsiClass psiClass, ResolverClassData classData, boolean aStatic, PsiMethod psiConstructor) { private ConstructorDescriptor resolveConstructor(PsiClass psiClass, ResolverClassData classData, boolean aStatic, PsiMethod psiConstructor) {
PsiMethodWrapper constructor = new PsiMethodWrapper(psiConstructor); PsiMethodWrapper constructor = new PsiMethodWrapper(psiConstructor);
//noinspection deprecation
if (constructor.getJetConstructor().hidden()) { if (constructor.getJetConstructor().hidden()) {
return null; return null;
} }
@@ -564,7 +553,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
} }
@Nullable @Nullable
private PsiClass getInnerClassClassObject(@NotNull PsiClass outer) { private static PsiClass getInnerClassClassObject(@NotNull PsiClass outer) {
for (PsiClass inner : outer.getInnerClasses()) { for (PsiClass inner : outer.getInnerClasses()) {
if (inner.getName().equals(JvmAbi.CLASS_OBJECT_CLASS_NAME)) { if (inner.getName().equals(JvmAbi.CLASS_OBJECT_CLASS_NAME)) {
return inner; return inner;
@@ -575,7 +564,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
/** /**
* TODO * TODO
* @see #createJavaNamespaceDescriptor(com.intellij.psi.PsiClass) //* @see #createJavaNamespaceDescriptor(PsiClass)
*/ */
@Nullable @Nullable
private MutableClassDescriptorLite createClassObjectDescriptor(@NotNull ClassDescriptor containing, @NotNull PsiClass psiClass) { private MutableClassDescriptorLite createClassObjectDescriptor(@NotNull ClassDescriptor containing, @NotNull PsiClass psiClass) {
@@ -601,7 +590,9 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
return null; return null;
} }
FqName fqName = new FqName(classObjectPsiClass.getQualifiedName()); final String qualifiedName = classObjectPsiClass.getQualifiedName();
assert qualifiedName != null;
FqName fqName = new FqName(qualifiedName);
ResolverClassData classData = new ClassDescriptorFromJvmBytecode( ResolverClassData classData = new ClassDescriptorFromJvmBytecode(
containing, ClassKind.CLASS_OBJECT, classObjectPsiClass, fqName, this) containing, ClassKind.CLASS_OBJECT, classObjectPsiClass, fqName, this)
.getResolverBinaryClassData(); .getResolverBinaryClassData();
@@ -677,11 +668,15 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
@NotNull @NotNull
private ClassOrNamespaceDescriptor resolveParentDescriptor(@NotNull PsiClass psiClass) { private ClassOrNamespaceDescriptor resolveParentDescriptor(@NotNull PsiClass psiClass) {
FqName fqName = new FqName(psiClass.getQualifiedName()); final String qualifiedName = psiClass.getQualifiedName();
assert qualifiedName != null;
FqName fqName = new FqName(qualifiedName);
PsiClass containingClass = psiClass.getContainingClass(); PsiClass containingClass = psiClass.getContainingClass();
if (containingClass != null) { if (containingClass != null) {
FqName containerFqName = new FqName(containingClass.getQualifiedName()); final String containingClassQualifiedName = containingClass.getQualifiedName();
assert containingClassQualifiedName != null;
FqName containerFqName = new FqName(containingClassQualifiedName);
ClassDescriptor clazz = resolveClass(containerFqName, DescriptorSearchRule.INCLUDE_KOTLIN); ClassDescriptor clazz = resolveClass(containerFqName, DescriptorSearchRule.INCLUDE_KOTLIN);
if (clazz == null) { if (clazz == null) {
throw new IllegalStateException("PsiClass not found by name " + containerFqName + ", required to be container declaration of " + fqName); throw new IllegalStateException("PsiClass not found by name " + containerFqName + ", required to be container declaration of " + fqName);
@@ -773,8 +768,12 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
private void transformSupertypeList(List<JetType> result, PsiClassType[] extendsListTypes, TypeVariableResolver typeVariableResolver) { private void transformSupertypeList(List<JetType> result, PsiClassType[] extendsListTypes, TypeVariableResolver typeVariableResolver) {
for (PsiClassType type : extendsListTypes) { for (PsiClassType type : extendsListTypes) {
PsiClass resolved = type.resolve(); PsiClass resolved = type.resolve();
if (resolved != null && JvmStdlibNames.JET_OBJECT.getFqName().equalsTo(resolved.getQualifiedName())) { if (resolved != null) {
continue; final String qualifiedName = resolved.getQualifiedName();
assert qualifiedName != null;
if (JvmStdlibNames.JET_OBJECT.getFqName().equalsTo(qualifiedName)) {
continue;
}
} }
JetType transform = semanticServices.getTypeTransformer().transformToType(type, JavaTypeTransformer.TypeUsage.SUPERTYPE, typeVariableResolver); JetType transform = semanticServices.getTypeTransformer().transformToType(type, JavaTypeTransformer.TypeUsage.SUPERTYPE, typeVariableResolver);
@@ -931,25 +930,27 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
private final JvmMethodParameterKind kind; private final JvmMethodParameterKind kind;
private final JetType receiverType; private final JetType receiverType;
private final ValueParameterDescriptor valueParameterDescriptor; private final ValueParameterDescriptor valueParameterDescriptor;
private final Object typeInfo;
private JvmMethodParameterMeaning(JvmMethodParameterKind kind, JetType receiverType, ValueParameterDescriptor valueParameterDescriptor, Object typeInfo) { private JvmMethodParameterMeaning(
JvmMethodParameterKind kind,
JetType receiverType,
ValueParameterDescriptor valueParameterDescriptor
) {
this.kind = kind; this.kind = kind;
this.receiverType = receiverType; this.receiverType = receiverType;
this.valueParameterDescriptor = valueParameterDescriptor; this.valueParameterDescriptor = valueParameterDescriptor;
this.typeInfo = typeInfo;
} }
public static JvmMethodParameterMeaning receiver(@NotNull JetType receiverType) { public static JvmMethodParameterMeaning receiver(@NotNull JetType receiverType) {
return new JvmMethodParameterMeaning(JvmMethodParameterKind.RECEIVER, receiverType, null, null); return new JvmMethodParameterMeaning(JvmMethodParameterKind.RECEIVER, receiverType, null);
} }
public static JvmMethodParameterMeaning regular(@NotNull ValueParameterDescriptor valueParameterDescriptor) { public static JvmMethodParameterMeaning regular(@NotNull ValueParameterDescriptor valueParameterDescriptor) {
return new JvmMethodParameterMeaning(JvmMethodParameterKind.REGULAR, null, valueParameterDescriptor, null); return new JvmMethodParameterMeaning(JvmMethodParameterKind.REGULAR, null, valueParameterDescriptor);
} }
public static JvmMethodParameterMeaning typeInfo(@NotNull Object typeInfo) { public static JvmMethodParameterMeaning typeInfo() {
return new JvmMethodParameterMeaning(JvmMethodParameterKind.TYPE_INFO, null, null, typeInfo); return new JvmMethodParameterMeaning(JvmMethodParameterKind.TYPE_INFO, null, null);
} }
} }
@@ -958,7 +959,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
PsiParameterWrapper parameter, TypeVariableResolver typeVariableResolver) { PsiParameterWrapper parameter, TypeVariableResolver typeVariableResolver) {
if (parameter.getJetTypeParameter().isDefined()) { if (parameter.getJetTypeParameter().isDefined()) {
return JvmMethodParameterMeaning.typeInfo(new Object()); return JvmMethodParameterMeaning.typeInfo();
} }
PsiType psiType = parameter.getPsiParameter().getType(); PsiType psiType = parameter.getPsiParameter().getType();
@@ -1018,7 +1019,8 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
public Set<VariableDescriptor> resolveFieldGroupByName(@NotNull Name fieldName, @NotNull ResolverScopeData scopeData) { public Set<VariableDescriptor> resolveFieldGroupByName(@NotNull Name fieldName, @NotNull ResolverScopeData scopeData) {
if (scopeData.psiClass == null) { final PsiClass psiClass = scopeData.psiClass;
if (psiClass == null) {
return Collections.emptySet(); return Collections.emptySet();
} }
@@ -1029,8 +1031,9 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
return Collections.emptySet(); return Collections.emptySet();
} }
final String qualifiedName = psiClass.getQualifiedName();
resolveNamedGroupProperties(scopeData.classOrNamespaceDescriptor, scopeData, namedMembers, fieldName, resolveNamedGroupProperties(scopeData.classOrNamespaceDescriptor, scopeData, namedMembers, fieldName,
"class or namespace " + scopeData.psiClass.getQualifiedName()); "class or namespace " + qualifiedName);
return namedMembers.propertyDescriptors; return namedMembers.propertyDescriptors;
} }
@@ -1039,6 +1042,8 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
public Set<VariableDescriptor> resolveFieldGroup(@NotNull ResolverScopeData scopeData) { public Set<VariableDescriptor> resolveFieldGroup(@NotNull ResolverScopeData scopeData) {
getResolverScopeData(scopeData); getResolverScopeData(scopeData);
final PsiClass psiClass = scopeData.psiClass;
assert psiClass != null;
Set<VariableDescriptor> descriptors = Sets.newHashSet(); Set<VariableDescriptor> descriptors = Sets.newHashSet();
Map<Name, NamedMembers> membersForProperties = scopeData.namedMembersMap; Map<Name, NamedMembers> membersForProperties = scopeData.namedMembersMap;
@@ -1046,14 +1051,15 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
NamedMembers namedMembers = entry.getValue(); NamedMembers namedMembers = entry.getValue();
Name propertyName = entry.getKey(); Name propertyName = entry.getKey();
resolveNamedGroupProperties(scopeData.classOrNamespaceDescriptor, scopeData, namedMembers, propertyName, "class or namespace " + scopeData.psiClass.getQualifiedName()); resolveNamedGroupProperties(scopeData.classOrNamespaceDescriptor, scopeData, namedMembers, propertyName,
"class or namespace " + psiClass.getQualifiedName());
descriptors.addAll(namedMembers.propertyDescriptors); descriptors.addAll(namedMembers.propertyDescriptors);
} }
return descriptors; return descriptors;
} }
private Object key(TypeSource typeSource) { private static Object key(TypeSource typeSource) {
if (typeSource == null) { if (typeSource == null) {
return ""; return "";
} }
@@ -1065,7 +1071,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
} }
} }
private Object psiTypeToKey(PsiType psiType) { private static Object psiTypeToKey(PsiType psiType) {
if (psiType instanceof PsiClassType) { if (psiType instanceof PsiClassType) {
return ((PsiClassType) psiType).getClassName(); return ((PsiClassType) psiType).getClassName();
} }
@@ -1076,11 +1082,11 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
return Pair.create("[", psiTypeToKey(((PsiArrayType) psiType).getComponentType())); return Pair.create("[", psiTypeToKey(((PsiArrayType) psiType).getComponentType()));
} }
else { else {
throw new IllegalStateException("" + psiType.getClass()); throw new IllegalStateException(psiType.getClass().toString());
} }
} }
private Object propertyKeyForGrouping(PropertyAccessorData propertyAccessor) { private static Object propertyKeyForGrouping(PropertyAccessorData propertyAccessor) {
Object type = key(propertyAccessor.getType()); Object type = key(propertyAccessor.getType());
Object receiverType = key(propertyAccessor.getReceiverType()); Object receiverType = key(propertyAccessor.getReceiverType());
return Pair.create(type, receiverType); return Pair.create(type, receiverType);
@@ -1368,17 +1374,28 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
@NotNull ResolverScopeData scopeData, @NotNull ResolverScopeData scopeData,
boolean isStatic boolean isStatic
) { ) {
boolean isEnum = scopeData.psiClass.isEnum(); final PsiClass psiClass = scopeData.psiClass;
assert psiClass != null;
boolean isEnum = psiClass.isEnum();
if (isEnum && isStatic) { if (isEnum && isStatic) {
return resolveClass(new FqName(scopeData.psiClass.getQualifiedName())).getClassObjectDescriptor(); final String qualifiedName = psiClass.getQualifiedName();
assert qualifiedName != null;
final ClassDescriptor classDescriptor = resolveClass(new FqName(qualifiedName));
assert classDescriptor != null;
final ClassDescriptor classObjectDescriptor = classDescriptor.getClassObjectDescriptor();
assert classObjectDescriptor != null;
return classObjectDescriptor;
} }
else { else {
return owner; return owner;
} }
} }
private void resolveNamedGroupFunctions(@NotNull ClassOrNamespaceDescriptor owner, PsiClass psiClass, private void resolveNamedGroupFunctions(
TypeSubstitutor typeSubstitutorForGenericSuperclasses, NamedMembers namedMembers, Name methodName, ResolverScopeData scopeData) { @NotNull ClassOrNamespaceDescriptor owner, PsiClass psiClass,
NamedMembers namedMembers, Name methodName, ResolverScopeData scopeData
) {
if (namedMembers.functionDescriptors != null) { if (namedMembers.functionDescriptors != null) {
return; return;
} }
@@ -1434,7 +1451,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
} }
} }
private Set<SimpleFunctionDescriptor> getFunctionsFromSupertypes(ResolverScopeData scopeData, Name methodName) { private static Set<SimpleFunctionDescriptor> getFunctionsFromSupertypes(ResolverScopeData scopeData, Name methodName) {
Set<SimpleFunctionDescriptor> r = Sets.newLinkedHashSet(); Set<SimpleFunctionDescriptor> r = Sets.newLinkedHashSet();
for (JetType supertype : getSupertypes(scopeData)) { for (JetType supertype : getSupertypes(scopeData)) {
for (FunctionDescriptor function : supertype.getMemberScope().getFunctions(methodName)) { for (FunctionDescriptor function : supertype.getMemberScope().getFunctions(methodName)) {
@@ -1444,7 +1461,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
return r; return r;
} }
private Set<PropertyDescriptor> getPropertiesFromSupertypes(ResolverScopeData scopeData, Name propertyName) { private static Set<PropertyDescriptor> getPropertiesFromSupertypes(ResolverScopeData scopeData, Name propertyName) {
Set<PropertyDescriptor> r = new HashSet<PropertyDescriptor>(); Set<PropertyDescriptor> r = new HashSet<PropertyDescriptor>();
for (JetType supertype : getSupertypes(scopeData)) { for (JetType supertype : getSupertypes(scopeData)) {
for (VariableDescriptor property : supertype.getMemberScope().getProperties(propertyName)) { for (VariableDescriptor property : supertype.getMemberScope().getProperties(propertyName)) {
@@ -1454,7 +1471,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
return r; return r;
} }
private void getResolverScopeData(@NotNull ResolverScopeData scopeData) { private static void getResolverScopeData(@NotNull ResolverScopeData scopeData) {
if (scopeData.namedMembersMap == null) { if (scopeData.namedMembersMap == null) {
scopeData.namedMembersMap = JavaDescriptorResolverHelper.getNamedMembers(scopeData); scopeData.namedMembersMap = JavaDescriptorResolverHelper.getNamedMembers(scopeData);
} }
@@ -1469,9 +1486,8 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
NamedMembers namedMembers = namedMembersMap.get(methodName); NamedMembers namedMembers = namedMembersMap.get(methodName);
if (namedMembers != null && namedMembers.methods != null) { if (namedMembers != null && namedMembers.methods != null) {
TypeSubstitutor typeSubstitutor = typeSubstitutorForGenericSupertypes(scopeData);
resolveNamedGroupFunctions(scopeData.classOrNamespaceDescriptor, scopeData.psiClass, typeSubstitutor, namedMembers, methodName, scopeData); resolveNamedGroupFunctions(scopeData.classOrNamespaceDescriptor, scopeData.psiClass, namedMembers, methodName, scopeData);
return namedMembers.functionDescriptors; return namedMembers.functionDescriptors;
} }
@@ -1480,17 +1496,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
} }
} }
private TypeSubstitutor createSubstitutorForGenericSupertypes(@Nullable ClassDescriptor classDescriptor) {
TypeSubstitutor typeSubstitutor;
if (classDescriptor != null) {
typeSubstitutor = SubstitutionUtils.buildDeepSubstitutor(classDescriptor.getDefaultType());
}
else {
typeSubstitutor = TypeSubstitutor.EMPTY;
}
return typeSubstitutor;
}
private ValueParameterDescriptors resolveParameterDescriptors(DeclarationDescriptor containingDeclaration, private ValueParameterDescriptors resolveParameterDescriptors(DeclarationDescriptor containingDeclaration,
List<PsiParameterWrapper> parameters, TypeVariableResolver typeVariableResolver) { List<PsiParameterWrapper> parameters, TypeVariableResolver typeVariableResolver) {
List<ValueParameterDescriptor> result = new ArrayList<ValueParameterDescriptor>(); List<ValueParameterDescriptor> result = new ArrayList<ValueParameterDescriptor>();
@@ -1534,9 +1539,12 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
return null; return null;
} }
final PsiMethod psiMethod = method.getPsiMethod();
final PsiClass containingClass = psiMethod.getContainingClass();
if (scopeData.kotlin) { if (scopeData.kotlin) {
// TODO: unless maybe class explicitly extends Object // TODO: unless maybe class explicitly extends Object
String ownerClassName = method.getPsiMethod().getContainingClass().getQualifiedName(); assert containingClass != null;
String ownerClassName = containingClass.getQualifiedName();
if (OBJECT_FQ_NAME.getFqName().equals(ownerClassName)) { if (OBJECT_FQ_NAME.getFqName().equals(ownerClassName)) {
return null; return null;
} }
@@ -1544,16 +1552,19 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
SimpleFunctionDescriptorImpl functionDescriptorImpl = new SimpleFunctionDescriptorImpl( SimpleFunctionDescriptorImpl functionDescriptorImpl = new SimpleFunctionDescriptorImpl(
scopeData.classOrNamespaceDescriptor, scopeData.classOrNamespaceDescriptor,
resolveAnnotations(method.getPsiMethod()), resolveAnnotations(psiMethod),
Name.identifier(method.getName()), Name.identifier(method.getName()),
DescriptorKindUtils.flagsToKind(method.getJetMethod().kind()) DescriptorKindUtils.flagsToKind(method.getJetMethod().kind())
); );
String context = "method " + method.getName() + " in class " + psiClass.getQualifiedName(); String context = "method " + method.getName() + " in class " + psiClass.getQualifiedName();
List<TypeParameterDescriptor> methodTypeParameters = javaDescriptorSignatureResolver.resolveMethodTypeParameters(method, functionDescriptorImpl); List<TypeParameterDescriptor> methodTypeParameters = javaDescriptorSignatureResolver.resolveMethodTypeParameters(method,
functionDescriptorImpl);
TypeVariableResolver methodTypeVariableResolver = TypeVariableResolvers.typeVariableResolverFromTypeParameters(methodTypeParameters, functionDescriptorImpl, context); TypeVariableResolver methodTypeVariableResolver = TypeVariableResolvers.typeVariableResolverFromTypeParameters(methodTypeParameters,
functionDescriptorImpl,
context);
ValueParameterDescriptors valueParameterDescriptors = resolveParameterDescriptors(functionDescriptorImpl, method.getParameters(), methodTypeVariableResolver); ValueParameterDescriptors valueParameterDescriptors = resolveParameterDescriptors(functionDescriptorImpl, method.getParameters(), methodTypeVariableResolver);
@@ -1575,21 +1586,21 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
valueParameterDescriptors.descriptors, valueParameterDescriptors.descriptors,
returnType, returnType,
resolveModality(method, method.isFinal()), resolveModality(method, method.isFinal()),
resolveVisibility(method.getPsiMethod(), method.getJetMethod()), resolveVisibility(psiMethod, method.getJetMethod()),
/*isInline = */ false /*isInline = */ false
); );
if (functionDescriptorImpl.getKind() == CallableMemberDescriptor.Kind.DECLARATION) { if (functionDescriptorImpl.getKind() == CallableMemberDescriptor.Kind.DECLARATION) {
BindingContextUtils.recordFunctionDeclarationToDescriptor(tempTrace, method.getPsiMethod(), functionDescriptorImpl); BindingContextUtils.recordFunctionDeclarationToDescriptor(tempTrace, psiMethod, functionDescriptorImpl);
} }
if (method.getPsiMethod().getContainingClass() != psiClass && !method.isStatic()) { if (containingClass != psiClass && !method.isStatic()) {
throw new IllegalStateException("non-static method in subclass"); throw new IllegalStateException("non-static method in subclass");
} }
return functionDescriptorImpl; return functionDescriptorImpl;
} }
private boolean isEnumSpecialMethod(@NotNull FunctionDescriptor functionDescriptor) { private static boolean isEnumSpecialMethod(@NotNull FunctionDescriptor functionDescriptor) {
List<ValueParameterDescriptor> methodTypeParameters = functionDescriptor.getValueParameters(); List<ValueParameterDescriptor> methodTypeParameters = functionDescriptor.getValueParameters();
String methodName = functionDescriptor.getName().getName(); String methodName = functionDescriptor.getName().getName();
JetType nullableString = TypeUtils.makeNullable(JetStandardLibrary.getInstance().getStringType()); JetType nullableString = TypeUtils.makeNullable(JetStandardLibrary.getInstance().getStringType());
@@ -1791,7 +1802,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
} }
@Nullable @Nullable
private CompileTimeConstant<?> getCompileTimeConstFromLiteralExpression(PsiLiteralExpression value) { private static CompileTimeConstant<?> getCompileTimeConstFromLiteralExpression(PsiLiteralExpression value) {
Object literalValue = value.getValue(); Object literalValue = value.getValue();
if (literalValue instanceof String) { if (literalValue instanceof String) {
return new StringValue((String) literalValue); return new StringValue((String) literalValue);
@@ -1827,14 +1838,12 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
getResolverScopeData(scopeData); getResolverScopeData(scopeData);
TypeSubstitutor substitutorForGenericSupertypes = typeSubstitutorForGenericSupertypes(scopeData);
List<FunctionDescriptor> functions = new ArrayList<FunctionDescriptor>(); List<FunctionDescriptor> functions = new ArrayList<FunctionDescriptor>();
for (Map.Entry<Name, NamedMembers> entry : scopeData.namedMembersMap.entrySet()) { for (Map.Entry<Name, NamedMembers> entry : scopeData.namedMembersMap.entrySet()) {
Name methodName = entry.getKey(); Name methodName = entry.getKey();
NamedMembers namedMembers = entry.getValue(); NamedMembers namedMembers = entry.getValue();
resolveNamedGroupFunctions(scopeData.classOrNamespaceDescriptor, scopeData.psiClass, substitutorForGenericSupertypes, resolveNamedGroupFunctions(scopeData.classOrNamespaceDescriptor, scopeData.psiClass,
namedMembers, methodName, scopeData); namedMembers, methodName, scopeData);
functions.addAll(namedMembers.functionDescriptors); functions.addAll(namedMembers.functionDescriptors);
} }
@@ -1842,7 +1851,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
return functions; return functions;
} }
private Collection<JetType> getSupertypes(ResolverScopeData scope) { private static Collection<JetType> getSupertypes(ResolverScopeData scope) {
if (scope instanceof ResolverClassData) { if (scope instanceof ResolverClassData) {
return ((ResolverClassData) scope).classDescriptor.getSupertypes(); return ((ResolverClassData) scope).classDescriptor.getSupertypes();
} }
@@ -1854,15 +1863,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
} }
} }
private TypeSubstitutor typeSubstitutorForGenericSupertypes(ResolverScopeData scopeData) {
if (scopeData instanceof ResolverClassData) {
return createSubstitutorForGenericSupertypes(((ResolverClassData) scopeData).getClassDescriptor());
}
else {
return TypeSubstitutor.EMPTY;
}
}
private JetType makeReturnType(PsiType returnType, PsiMethodWrapper method, private JetType makeReturnType(PsiType returnType, PsiMethodWrapper method,
@NotNull TypeVariableResolver typeVariableResolver) { @NotNull TypeVariableResolver typeVariableResolver) {
@@ -18,7 +18,7 @@ package org.jetbrains.jet.lang.resolve.java;
import com.intellij.psi.PsiField; import com.intellij.psi.PsiField;
import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiMethod;
import com.intellij.psi.PsiParameter; import com.intellij.psi.PsiType;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.resolve.java.prop.PropertyNameUtils; import org.jetbrains.jet.lang.resolve.java.prop.PropertyNameUtils;
import org.jetbrains.jet.lang.resolve.java.prop.PropertyParseResult; import org.jetbrains.jet.lang.resolve.java.prop.PropertyParseResult;
@@ -40,7 +40,7 @@ class JavaDescriptorResolverHelper {
private final boolean staticMembers; private final boolean staticMembers;
private final boolean kotlin; private final boolean kotlin;
private Map<Name, NamedMembers> namedMembersMap = new HashMap<Name, NamedMembers>(); private final Map<Name, NamedMembers> namedMembersMap = new HashMap<Name, NamedMembers>();
private Builder(PsiClassWrapper psiClass, boolean staticMembers, boolean kotlin) { private Builder(PsiClassWrapper psiClass, boolean staticMembers, boolean kotlin) {
this.psiClass = psiClass; this.psiClass = psiClass;
@@ -156,17 +156,12 @@ class JavaDescriptorResolverHelper {
} }
// TODO: what if returnType == null? // TODO: what if returnType == null?
TypeSource propertyType = new TypeSource(method.getJetMethod().propertyType(), method.getReturnType(), method.getPsiMethod()); final PsiType returnType = method.getReturnType();
assert returnType != null;
TypeSource propertyType = new TypeSource(method.getJetMethod().propertyType(), returnType, method.getPsiMethod());
members.addPropertyAccessor(new PropertyAccessorData(method, true, propertyType, receiverType)); members.addPropertyAccessor(new PropertyAccessorData(method, true, propertyType, receiverType));
} }
else if (!kotlin && false) {
if (method.getParameters().size() == 0) {
TypeSource propertyType = new TypeSource("", method.getReturnType(), method.getPsiMethod());
members.addPropertyAccessor(new PropertyAccessorData(method, true, propertyType, null));
}
}
} }
else if (propertyParseResult != null && !propertyParseResult.isGetter()) { else if (propertyParseResult != null && !propertyParseResult.isGetter()) {
@@ -201,13 +196,6 @@ class JavaDescriptorResolverHelper {
members.addPropertyAccessor(new PropertyAccessorData(method, false, propertyType, receiverType)); members.addPropertyAccessor(new PropertyAccessorData(method, false, propertyType, receiverType));
} }
else if (!kotlin && false) {
if (method.getParameters().size() == 1) {
PsiParameter psiParameter = method.getParameters().get(0).getPsiParameter();
TypeSource propertyType = new TypeSource("", psiParameter.getType(), psiParameter);
members.addPropertyAccessor(new PropertyAccessorData(method, false, propertyType, null));
}
}
} }
if (!method.getJetMethod().hasPropertyFlag()) { if (!method.getJetMethod().hasPropertyFlag()) {
@@ -222,6 +210,7 @@ class JavaDescriptorResolverHelper {
@NotNull @NotNull
static Map<Name, NamedMembers> getNamedMembers(@NotNull JavaDescriptorResolver.ResolverScopeData resolverScopeData) { static Map<Name, NamedMembers> getNamedMembers(@NotNull JavaDescriptorResolver.ResolverScopeData resolverScopeData) {
if (resolverScopeData.psiClass != null) { if (resolverScopeData.psiClass != null) {
@SuppressWarnings("ConstantConditions")
Builder builder = new Builder(new PsiClassWrapper(resolverScopeData.psiClass), resolverScopeData.staticMembers, resolverScopeData.kotlin); Builder builder = new Builder(new PsiClassWrapper(resolverScopeData.psiClass), resolverScopeData.staticMembers, resolverScopeData.kotlin);
builder.run(); builder.run();
return builder.namedMembersMap; return builder.namedMembersMap;