JET-3 Convert Java's raw types into Jet types
+ Default constructors in Java classes loaded from source
This commit is contained in:
@@ -66,7 +66,7 @@ public class JavaClassDescriptor extends MutableDeclarationDescriptor implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasConstructors() {
|
public boolean hasConstructors() {
|
||||||
return constructors.isEmpty();
|
return !constructors.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -78,13 +78,12 @@ public class JavaDescriptorResolver {
|
|||||||
);
|
);
|
||||||
classDescriptor.setName(name);
|
classDescriptor.setName(name);
|
||||||
|
|
||||||
WritableFunctionGroup constructors = new WritableFunctionGroup("<init>");
|
|
||||||
List<JetType> supertypes = new ArrayList<JetType>();
|
List<JetType> supertypes = new ArrayList<JetType>();
|
||||||
classDescriptor.setTypeConstructor(new TypeConstructorImpl(
|
classDescriptor.setTypeConstructor(new TypeConstructorImpl(
|
||||||
classDescriptor,
|
classDescriptor,
|
||||||
Collections.<Annotation>emptyList(), // TODO
|
Collections.<Annotation>emptyList(), // TODO
|
||||||
// TODO
|
// TODO
|
||||||
modifierList == null ? false : modifierList.hasModifierProperty(PsiModifier.FINAL),
|
psiClass.hasModifierProperty(PsiModifier.FINAL),
|
||||||
name,
|
name,
|
||||||
resolveTypeParameters(psiClass.getTypeParameters()),
|
resolveTypeParameters(psiClass.getTypeParameters()),
|
||||||
supertypes
|
supertypes
|
||||||
@@ -95,16 +94,29 @@ public class JavaDescriptorResolver {
|
|||||||
// UGLY HACK
|
// UGLY HACK
|
||||||
supertypes.addAll(getSupertypes(psiClass));
|
supertypes.addAll(getSupertypes(psiClass));
|
||||||
|
|
||||||
// NOTE: this writes into constructors after it is remembered by the classDescriptor
|
|
||||||
PsiMethod[] psiConstructors = psiClass.getConstructors();
|
PsiMethod[] psiConstructors = psiClass.getConstructors();
|
||||||
for (PsiMethod constructor : psiConstructors) {
|
|
||||||
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(
|
if (psiConstructors.length == 0) {
|
||||||
classDescriptor,
|
if (!psiClass.hasModifierProperty(PsiModifier.ABSTRACT) && !psiClass.isInterface()) {
|
||||||
Collections.<Annotation>emptyList(), // TODO
|
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(
|
||||||
false);
|
classDescriptor,
|
||||||
constructorDescriptor.initialize(resolveParameterDescriptors(constructorDescriptor, constructor.getParameterList().getParameters()));
|
Collections.<Annotation>emptyList(),
|
||||||
classDescriptor.addConstructor(constructorDescriptor);
|
false);
|
||||||
semanticServices.getTrace().recordDeclarationResolution(constructor, constructorDescriptor);
|
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);
|
semanticServices.getTrace().recordDeclarationResolution(psiClass, classDescriptor);
|
||||||
|
|||||||
Reference in New Issue
Block a user