Minor. More strict precondition for SAM adapter creation

Descriptor should be initialized before creating SAM adapter
This commit is contained in:
Denis Zharkov
2015-07-17 18:56:29 +03:00
parent 58e7923218
commit 53edb83a56
@@ -197,7 +197,7 @@ public class SingleAbstractMethodUtils {
public void initialize( public void initialize(
@NotNull List<TypeParameterDescriptor> typeParameters, @NotNull List<TypeParameterDescriptor> typeParameters,
@NotNull List<ValueParameterDescriptor> valueParameters, @NotNull List<ValueParameterDescriptor> valueParameters,
@Nullable JetType returnType @NotNull JetType returnType
) { ) {
result.initialize( result.initialize(
null, null,
@@ -220,7 +220,7 @@ public class SingleAbstractMethodUtils {
public void initialize( public void initialize(
@NotNull List<TypeParameterDescriptor> typeParameters, @NotNull List<TypeParameterDescriptor> typeParameters,
@NotNull List<ValueParameterDescriptor> valueParameters, @NotNull List<ValueParameterDescriptor> valueParameters,
@Nullable JetType returnType @NotNull JetType returnType
) { ) {
result.initialize(typeParameters, valueParameters, original.getVisibility()); result.initialize(typeParameters, valueParameters, original.getVisibility());
result.setReturnType(returnType); result.setReturnType(returnType);
@@ -237,15 +237,12 @@ public class SingleAbstractMethodUtils {
TypeParameters typeParameters = recreateAndInitializeTypeParameters(original.getTypeParameters(), adapter); TypeParameters typeParameters = recreateAndInitializeTypeParameters(original.getTypeParameters(), adapter);
JetType returnTypeUnsubstituted = original.getReturnType(); JetType returnTypeUnsubstituted = original.getReturnType();
JetType returnType; assert returnTypeUnsubstituted != null : "Creating SAM adapter for not initialized original: " + original;
if (returnTypeUnsubstituted == null) { // return type may be null for not yet initialized constructors
returnType = null; JetType returnType = typeParameters.substitutor.substitute(returnTypeUnsubstituted, Variance.OUT_VARIANCE);
} assert returnType != null : "couldn't substitute type: " + returnTypeUnsubstituted +
else {
returnType = typeParameters.substitutor.substitute(returnTypeUnsubstituted, Variance.OUT_VARIANCE);
assert returnType != null : "couldn't substitute type: " + returnTypeUnsubstituted +
", substitutor = " + typeParameters.substitutor; ", substitutor = " + typeParameters.substitutor;
}
List<ValueParameterDescriptor> originalValueParameters = original.getValueParameters(); List<ValueParameterDescriptor> originalValueParameters = original.getValueParameters();
List<ValueParameterDescriptor> valueParameters = new ArrayList<ValueParameterDescriptor>(originalValueParameters.size()); List<ValueParameterDescriptor> valueParameters = new ArrayList<ValueParameterDescriptor>(originalValueParameters.size());
@@ -330,7 +327,7 @@ public class SingleAbstractMethodUtils {
public abstract void initialize( public abstract void initialize(
@NotNull List<TypeParameterDescriptor> typeParameters, @NotNull List<TypeParameterDescriptor> typeParameters,
@NotNull List<ValueParameterDescriptor> valueParameters, @NotNull List<ValueParameterDescriptor> valueParameters,
@Nullable JetType returnType @NotNull JetType returnType
); );
} }