- clean to green
- injectors regenerated
This commit is contained in:
Alex Tkachman
2012-09-23 14:36:29 +02:00
parent dfba534e2e
commit 4768db3b56
4 changed files with 29 additions and 35 deletions
@@ -77,7 +77,6 @@ public class InjectorForJavaDescriptorResolver {
javaTypeTransformer.setJavaSemanticServices(javaSemanticServices); javaTypeTransformer.setJavaSemanticServices(javaSemanticServices);
javaTypeTransformer.setResolver(javaDescriptorResolver); javaTypeTransformer.setResolver(javaDescriptorResolver);
javaDescriptorSignatureResolver.setJavaDescriptorResolver(javaDescriptorResolver);
javaDescriptorSignatureResolver.setJavaSemanticServices(javaSemanticServices); javaDescriptorSignatureResolver.setJavaSemanticServices(javaSemanticServices);
javaBridgeConfiguration.init(); javaBridgeConfiguration.init();
@@ -75,7 +75,6 @@ public class InjectorForJavaSemanticServices {
javaTypeTransformer.setJavaSemanticServices(javaSemanticServices); javaTypeTransformer.setJavaSemanticServices(javaSemanticServices);
javaTypeTransformer.setResolver(javaDescriptorResolver); javaTypeTransformer.setResolver(javaDescriptorResolver);
javaDescriptorSignatureResolver.setJavaDescriptorResolver(javaDescriptorResolver);
javaDescriptorSignatureResolver.setJavaSemanticServices(javaSemanticServices); javaDescriptorSignatureResolver.setJavaSemanticServices(javaSemanticServices);
javaBridgeConfiguration.init(); javaBridgeConfiguration.init();
@@ -214,7 +214,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
javaTypeTransformer.setJavaSemanticServices(javaSemanticServices); javaTypeTransformer.setJavaSemanticServices(javaSemanticServices);
javaTypeTransformer.setResolver(javaDescriptorResolver); javaTypeTransformer.setResolver(javaDescriptorResolver);
javaDescriptorSignatureResolver.setJavaDescriptorResolver(javaDescriptorResolver);
javaDescriptorSignatureResolver.setJavaSemanticServices(javaSemanticServices); javaDescriptorSignatureResolver.setJavaSemanticServices(javaSemanticServices);
moduleConfiguration.init(); moduleConfiguration.init();
@@ -47,23 +47,14 @@ import java.util.List;
*/ */
public class JavaDescriptorSignatureResolver { public class JavaDescriptorSignatureResolver {
@NotNull
private JavaDescriptorResolver javaDescriptorResolver;
@NotNull @NotNull
private JavaSemanticServices semanticServices; private JavaSemanticServices semanticServices;
@Inject
public void setJavaDescriptorResolver(@NotNull JavaDescriptorResolver javaDescriptorResolver) {
this.javaDescriptorResolver = javaDescriptorResolver;
}
@Inject @Inject
public void setJavaSemanticServices(@NotNull JavaSemanticServices javaSemanticServices) { public void setJavaSemanticServices(@NotNull JavaSemanticServices javaSemanticServices) {
this.semanticServices = javaSemanticServices; this.semanticServices = javaSemanticServices;
} }
private enum TypeParameterDescriptorOrigin { private enum TypeParameterDescriptorOrigin {
JAVA, JAVA,
KOTLIN, KOTLIN,
@@ -77,24 +68,22 @@ public class JavaDescriptorSignatureResolver {
final PsiTypeParameter psiTypeParameter; final PsiTypeParameter psiTypeParameter;
@Nullable @Nullable
private final List<JetType> upperBoundsForKotlin; private final List<JetType> upperBoundsForKotlin;
@Nullable
private final List<JetType> lowerBoundsForKotlin;
private TypeParameterDescriptorInitialization(@NotNull TypeParameterDescriptorImpl descriptor, @NotNull PsiTypeParameter psiTypeParameter) { private TypeParameterDescriptorInitialization(@NotNull TypeParameterDescriptorImpl descriptor, @NotNull PsiTypeParameter psiTypeParameter) {
this.origin = TypeParameterDescriptorOrigin.JAVA; this.origin = TypeParameterDescriptorOrigin.JAVA;
this.descriptor = descriptor; this.descriptor = descriptor;
this.psiTypeParameter = psiTypeParameter; this.psiTypeParameter = psiTypeParameter;
this.upperBoundsForKotlin = null; this.upperBoundsForKotlin = null;
this.lowerBoundsForKotlin = null;
} }
private TypeParameterDescriptorInitialization(@NotNull TypeParameterDescriptorImpl descriptor, @NotNull PsiTypeParameter psiTypeParameter, private TypeParameterDescriptorInitialization(
List<JetType> upperBoundsForKotlin, List<JetType> lowerBoundsForKotlin) { @NotNull TypeParameterDescriptorImpl descriptor, @NotNull PsiTypeParameter psiTypeParameter,
List<JetType> upperBoundsForKotlin
) {
this.origin = TypeParameterDescriptorOrigin.KOTLIN; this.origin = TypeParameterDescriptorOrigin.KOTLIN;
this.descriptor = descriptor; this.descriptor = descriptor;
this.psiTypeParameter = psiTypeParameter; this.psiTypeParameter = psiTypeParameter;
this.upperBoundsForKotlin = upperBoundsForKotlin; this.upperBoundsForKotlin = upperBoundsForKotlin;
this.lowerBoundsForKotlin = lowerBoundsForKotlin;
} }
} }
@@ -137,7 +126,6 @@ public class JavaDescriptorSignatureResolver {
} }
List<JetType> upperBounds = new ArrayList<JetType>(); List<JetType> upperBounds = new ArrayList<JetType>();
List<JetType> lowerBounds = new ArrayList<JetType>();
@Override @Override
public JetSignatureVisitor visitClassBound() { public JetSignatureVisitor visitClassBound() {
@@ -165,7 +153,7 @@ public class JavaDescriptorSignatureResolver {
@Override @Override
public void visitFormalTypeParameterEnd() { public void visitFormalTypeParameterEnd() {
PsiTypeParameter psiTypeParameter = getPsiTypeParameterByName(psiOwner, name); PsiTypeParameter psiTypeParameter = getPsiTypeParameterByName(psiOwner, name);
TypeParameterDescriptorInitialization typeParameterDescriptorInitialization = new TypeParameterDescriptorInitialization(typeParameterDescriptor, psiTypeParameter, upperBounds, lowerBounds); TypeParameterDescriptorInitialization typeParameterDescriptorInitialization = new TypeParameterDescriptorInitialization(typeParameterDescriptor, psiTypeParameter, upperBounds);
done(typeParameterDescriptorInitialization); done(typeParameterDescriptorInitialization);
} }
@@ -221,7 +209,7 @@ public class JavaDescriptorSignatureResolver {
} }
/** /**
* @see #resolveMethodTypeParametersFromJetSignature(String, com.intellij.psi.PsiMethod, org.jetbrains.jet.lang.descriptors.DeclarationDescriptor) * @see #resolveMethodTypeParametersFromJetSignature(String, PsiMethod, DeclarationDescriptor)
*/ */
private List<TypeParameterDescriptorInitialization> resolveClassTypeParametersFromJetSignature(String jetSignature, private List<TypeParameterDescriptorInitialization> resolveClassTypeParametersFromJetSignature(String jetSignature,
final PsiClass clazz, final ClassDescriptor classDescriptor) { final PsiClass clazz, final ClassDescriptor classDescriptor) {
@@ -244,7 +232,10 @@ public class JavaDescriptorSignatureResolver {
} }
private List<TypeParameterDescriptorInitialization> makeUninitializedTypeParameters(@NotNull DeclarationDescriptor containingDeclaration, @NotNull PsiTypeParameter[] typeParameters) { private static List<TypeParameterDescriptorInitialization> makeUninitializedTypeParameters(
@NotNull DeclarationDescriptor containingDeclaration,
@NotNull PsiTypeParameter[] typeParameters
) {
List<TypeParameterDescriptorInitialization> result = Lists.newArrayList(); List<TypeParameterDescriptorInitialization> result = Lists.newArrayList();
for (PsiTypeParameter typeParameter : typeParameters) { for (PsiTypeParameter typeParameter : typeParameters) {
TypeParameterDescriptorInitialization typeParameterDescriptor = makeUninitializedTypeParameter(containingDeclaration, typeParameter); TypeParameterDescriptorInitialization typeParameterDescriptor = makeUninitializedTypeParameter(containingDeclaration, typeParameter);
@@ -254,7 +245,10 @@ public class JavaDescriptorSignatureResolver {
} }
@NotNull @NotNull
private TypeParameterDescriptorInitialization makeUninitializedTypeParameter(@NotNull DeclarationDescriptor containingDeclaration, @NotNull PsiTypeParameter psiTypeParameter) { private static TypeParameterDescriptorInitialization makeUninitializedTypeParameter(
@NotNull DeclarationDescriptor containingDeclaration,
@NotNull PsiTypeParameter psiTypeParameter
) {
TypeParameterDescriptorImpl typeParameterDescriptor = TypeParameterDescriptorImpl.createForFurtherModification( TypeParameterDescriptorImpl typeParameterDescriptor = TypeParameterDescriptorImpl.createForFurtherModification(
containingDeclaration, containingDeclaration,
Collections.<AnnotationDescriptor>emptyList(), // TODO Collections.<AnnotationDescriptor>emptyList(), // TODO
@@ -269,12 +263,13 @@ public class JavaDescriptorSignatureResolver {
private void initializeTypeParameter(TypeParameterDescriptorInitialization typeParameter, TypeVariableResolver typeVariableByPsiResolver) { private void initializeTypeParameter(TypeParameterDescriptorInitialization typeParameter, TypeVariableResolver typeVariableByPsiResolver) {
TypeParameterDescriptorImpl typeParameterDescriptor = typeParameter.descriptor; TypeParameterDescriptorImpl typeParameterDescriptor = typeParameter.descriptor;
if (typeParameter.origin == TypeParameterDescriptorOrigin.KOTLIN) { if (typeParameter.origin == TypeParameterDescriptorOrigin.KOTLIN) {
List<?> upperBounds = typeParameter.upperBoundsForKotlin; final List<JetType> upperBoundsForKotlin = typeParameter.upperBoundsForKotlin;
if (upperBounds.size() == 0){ assert upperBoundsForKotlin != null;
if (upperBoundsForKotlin.size() == 0){
typeParameterDescriptor.addUpperBound(JetStandardClasses.getNullableAnyType()); typeParameterDescriptor.addUpperBound(JetStandardClasses.getNullableAnyType());
} }
else { else {
for (JetType upperBound : typeParameter.upperBoundsForKotlin) { for (JetType upperBound : upperBoundsForKotlin) {
typeParameterDescriptor.addUpperBound(upperBound); typeParameterDescriptor.addUpperBound(upperBound);
} }
} }
@@ -299,7 +294,7 @@ public class JavaDescriptorSignatureResolver {
} }
void initializeTypeParameters(List<TypeParameterDescriptorInitialization> typeParametersInitialization, @NotNull DeclarationDescriptor typeParametersOwner, @NotNull String context) { void initializeTypeParameters(List<TypeParameterDescriptorInitialization> typeParametersInitialization, @NotNull DeclarationDescriptor typeParametersOwner, @NotNull String context) {
List<TypeParameterDescriptor> prevTypeParameters = new ArrayList<TypeParameterDescriptor>(); List<TypeParameterDescriptor> prevTypeParameters = Lists.newArrayList();
List<TypeParameterDescriptor> typeParameters = Lists.newArrayList(); List<TypeParameterDescriptor> typeParameters = Lists.newArrayList();
for (TypeParameterDescriptorInitialization typeParameterDescriptor : typeParametersInitialization) { for (TypeParameterDescriptorInitialization typeParameterDescriptor : typeParametersInitialization) {
@@ -331,15 +326,18 @@ public class JavaDescriptorSignatureResolver {
@NotNull DeclarationDescriptor functionDescriptor) { @NotNull DeclarationDescriptor functionDescriptor) {
List<TypeParameterDescriptorInitialization> typeParametersIntialization; List<TypeParameterDescriptorInitialization> typeParametersIntialization;
final PsiMethod psiMethod = method.getPsiMethod();
if (method.getJetMethod().typeParameters().length() > 0) { if (method.getJetMethod().typeParameters().length() > 0) {
typeParametersIntialization = resolveMethodTypeParametersFromJetSignature( typeParametersIntialization = resolveMethodTypeParametersFromJetSignature(
method.getJetMethod().typeParameters(), method.getPsiMethod(), functionDescriptor); method.getJetMethod().typeParameters(), psiMethod, functionDescriptor);
} }
else { else {
typeParametersIntialization = makeUninitializedTypeParameters(functionDescriptor, method.getPsiMethod().getTypeParameters()); typeParametersIntialization = makeUninitializedTypeParameters(functionDescriptor, psiMethod.getTypeParameters());
} }
String context = "method " + method.getName() + " in class " + method.getPsiMethod().getContainingClass().getQualifiedName(); final PsiClass psiMethodContainingClass = psiMethod.getContainingClass();
assert psiMethodContainingClass != null;
String context = "method " + method.getName() + " in class " + psiMethodContainingClass.getQualifiedName();
initializeTypeParameters(typeParametersIntialization, functionDescriptor, context); initializeTypeParameters(typeParametersIntialization, functionDescriptor, context);
List<TypeParameterDescriptor> typeParameters = Lists.newArrayListWithCapacity(typeParametersIntialization.size()); List<TypeParameterDescriptor> typeParameters = Lists.newArrayListWithCapacity(typeParametersIntialization.size());
@@ -352,18 +350,17 @@ public class JavaDescriptorSignatureResolver {
} }
/** /**
* @see #resolveClassTypeParametersFromJetSignature(String, com.intellij.psi.PsiClass, org.jetbrains.jet.lang.descriptors.ClassDescriptor) * @see #resolveClassTypeParametersFromJetSignature(String, PsiClass, ClassDescriptor)
*/ */
private List<TypeParameterDescriptorInitialization> resolveMethodTypeParametersFromJetSignature(String jetSignature, private List<TypeParameterDescriptorInitialization> resolveMethodTypeParametersFromJetSignature(String jetSignature,
final PsiMethod method, final DeclarationDescriptor functionDescriptor) final PsiMethod method, final DeclarationDescriptor functionDescriptor)
{ {
String context = "method " + method.getName() + " in class " + method.getContainingClass().getQualifiedName(); final PsiClass methodContainingClass = method.getContainingClass();
assert methodContainingClass != null;
String context = "method " + method.getName() + " in class " + methodContainingClass.getQualifiedName();
JetSignatureTypeParametersVisitor jetSignatureTypeParametersVisitor = new JetSignatureTypeParametersVisitor(functionDescriptor, method, context); JetSignatureTypeParametersVisitor jetSignatureTypeParametersVisitor = new JetSignatureTypeParametersVisitor(functionDescriptor, method, context);
new JetSignatureReader(jetSignature).acceptFormalTypeParametersOnly(jetSignatureTypeParametersVisitor); new JetSignatureReader(jetSignature).acceptFormalTypeParametersOnly(jetSignatureTypeParametersVisitor);
return jetSignatureTypeParametersVisitor.r; return jetSignatureTypeParametersVisitor.r;
} }
} }