KT-1558 Exception while analyzing
KT-1558 Fixed
This commit is contained in:
+1
-32
@@ -26,7 +26,6 @@ import org.jetbrains.jet.lang.psi.*;
|
|||||||
import org.jetbrains.jet.lang.resolve.TemporaryBindingTrace;
|
import org.jetbrains.jet.lang.resolve.TemporaryBindingTrace;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -80,9 +79,7 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
|
|||||||
|
|
||||||
D candidate = candidateCall.getCandidateDescriptor();
|
D candidate = candidateCall.getCandidateDescriptor();
|
||||||
|
|
||||||
D base = getDescriptorForValueArgumentsResolving(candidate);
|
List<ValueParameterDescriptor> valueParameters = candidate.getValueParameters();
|
||||||
|
|
||||||
List<ValueParameterDescriptor> valueParameters = base.getValueParameters();
|
|
||||||
|
|
||||||
Map<String, ValueParameterDescriptor> parameterByName = Maps.newHashMap();
|
Map<String, ValueParameterDescriptor> parameterByName = Maps.newHashMap();
|
||||||
for (ValueParameterDescriptor valueParameter : valueParameters) {
|
for (ValueParameterDescriptor valueParameter : valueParameters) {
|
||||||
@@ -242,32 +239,4 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap
|
|||||||
}
|
}
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Descriptor used to resolve parameter names and default parameter values.
|
|
||||||
*/
|
|
||||||
@NotNull
|
|
||||||
private static <D extends CallableDescriptor> D getDescriptorForValueArgumentsResolving(D descriptor) {
|
|
||||||
Set<D> allBases = new HashSet<D>();
|
|
||||||
getAllDescriptorsForValueArgumentsResolving(descriptor, allBases);
|
|
||||||
|
|
||||||
if (allBases.size() == 1) {
|
|
||||||
return allBases.iterator().next();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// TODO remove parameter names and parameter default values
|
|
||||||
return descriptor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static <D extends CallableDescriptor> void getAllDescriptorsForValueArgumentsResolving(D descriptor, Set<D> dest) {
|
|
||||||
if (descriptor.getOverriddenDescriptors().isEmpty()) {
|
|
||||||
dest.add(descriptor);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
for (CallableDescriptor overridden : descriptor.getOverriddenDescriptors()) {
|
|
||||||
getAllDescriptorsForValueArgumentsResolving((D) overridden, dest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import java.util.List
|
||||||
|
|
||||||
|
fun testArrays(ci : List<Int>) {
|
||||||
|
ci.toArray<Int>(<!UNRESOLVED_REFERENCE!>x<!>)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user