Pulled getUnsubstitutedPrimaryConstructor method to ClassDescriptor.
Removed ClassDescriptorFromSource. Implemented method in inheritors.
This commit is contained in:
+7
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.jet.lang.resolve.java.descriptor;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassKind;
|
||||
import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
@@ -50,6 +51,12 @@ public class ClassDescriptorFromJvmBytecode extends MutableClassDescriptorLite {
|
||||
return scopeForConstructorResolve.getConstructors();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ConstructorDescriptor getUnsubstitutedPrimaryConstructor() {
|
||||
return scopeForConstructorResolve.getPrimaryConstructor();
|
||||
}
|
||||
|
||||
public void setScopeForConstructorResolve(@NotNull JavaClassNonStaticMembersScope scopeForConstructorResolve) {
|
||||
this.scopeForConstructorResolve = scopeForConstructorResolve;
|
||||
}
|
||||
|
||||
+25
-3
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.jet.lang.resolve.java.scope;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
||||
@@ -27,6 +28,7 @@ import java.util.Collection;
|
||||
public final class JavaClassNonStaticMembersScope extends JavaClassMembersScope {
|
||||
|
||||
private Collection<ConstructorDescriptor> constructors = null;
|
||||
private ConstructorDescriptor primaryConstructor = null;
|
||||
@NotNull
|
||||
private final ClassDescriptor descriptor;
|
||||
|
||||
@@ -42,9 +44,29 @@ public final class JavaClassNonStaticMembersScope extends JavaClassMembersScope
|
||||
|
||||
@NotNull
|
||||
public Collection<ConstructorDescriptor> getConstructors() {
|
||||
if (constructors == null) {
|
||||
this.constructors = getResolver().resolveConstructors(declarationProvider, descriptor);
|
||||
}
|
||||
initConstructorsIfNeeded();
|
||||
return constructors;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ConstructorDescriptor getPrimaryConstructor() {
|
||||
initConstructorsIfNeeded();
|
||||
return primaryConstructor;
|
||||
}
|
||||
|
||||
private void initConstructorsIfNeeded() {
|
||||
if (constructors == null) {
|
||||
constructors = getResolver().resolveConstructors(declarationProvider, descriptor);
|
||||
|
||||
for (ConstructorDescriptor constructor : constructors) {
|
||||
if (constructor.isPrimary()) {
|
||||
if (primaryConstructor != null) {
|
||||
throw new IllegalStateException(
|
||||
"Class has more than one primary constructor: " + primaryConstructor + "\n" + constructor);
|
||||
}
|
||||
primaryConstructor = constructor;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user