JET-3 Convert Java's raw types into Jet types

+
Default constructors in Java classes loaded from source
This commit is contained in:
Andrey Breslav
2011-05-23 13:29:02 +04:00
parent dd612c74e3
commit 7e5021d746
2 changed files with 24 additions and 12 deletions
@@ -66,7 +66,7 @@ public class JavaClassDescriptor extends MutableDeclarationDescriptor implements
@Override
public boolean hasConstructors() {
return constructors.isEmpty();
return !constructors.isEmpty();
}
@NotNull
@@ -78,13 +78,12 @@ public class JavaDescriptorResolver {
);
classDescriptor.setName(name);
WritableFunctionGroup constructors = new WritableFunctionGroup("<init>");
List<JetType> supertypes = new ArrayList<JetType>();
classDescriptor.setTypeConstructor(new TypeConstructorImpl(
classDescriptor,
Collections.<Annotation>emptyList(), // TODO
// TODO
modifierList == null ? false : modifierList.hasModifierProperty(PsiModifier.FINAL),
psiClass.hasModifierProperty(PsiModifier.FINAL),
name,
resolveTypeParameters(psiClass.getTypeParameters()),
supertypes
@@ -95,16 +94,29 @@ public class JavaDescriptorResolver {
// UGLY HACK
supertypes.addAll(getSupertypes(psiClass));
// NOTE: this writes into constructors after it is remembered by the classDescriptor
PsiMethod[] psiConstructors = psiClass.getConstructors();
for (PsiMethod constructor : psiConstructors) {
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(
classDescriptor,
Collections.<Annotation>emptyList(), // TODO
false);
constructorDescriptor.initialize(resolveParameterDescriptors(constructorDescriptor, constructor.getParameterList().getParameters()));
classDescriptor.addConstructor(constructorDescriptor);
semanticServices.getTrace().recordDeclarationResolution(constructor, constructorDescriptor);
if (psiConstructors.length == 0) {
if (!psiClass.hasModifierProperty(PsiModifier.ABSTRACT) && !psiClass.isInterface()) {
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(
classDescriptor,
Collections.<Annotation>emptyList(),
false);
constructorDescriptor.initialize(Collections.<ValueParameterDescriptor>emptyList());
classDescriptor.addConstructor(constructorDescriptor);
semanticServices.getTrace().recordDeclarationResolution(psiClass, constructorDescriptor);
}
}
else {
for (PsiMethod constructor : psiConstructors) {
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(
classDescriptor,
Collections.<Annotation>emptyList(), // TODO
false);
constructorDescriptor.initialize(resolveParameterDescriptors(constructorDescriptor, constructor.getParameterList().getParameters()));
classDescriptor.addConstructor(constructorDescriptor);
semanticServices.getTrace().recordDeclarationResolution(constructor, constructorDescriptor);
}
}
semanticServices.getTrace().recordDeclarationResolution(psiClass, classDescriptor);