Minor, add assertion messages, fix warnings

This commit is contained in:
Alexander Udalov
2014-03-17 17:58:39 +04:00
parent 338bc2f9ec
commit 7d6423fcf1
6 changed files with 20 additions and 19 deletions
@@ -47,7 +47,6 @@ import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils;
import org.jetbrains.jet.lang.evaluate.EvaluatePackage; import org.jetbrains.jet.lang.evaluate.EvaluatePackage;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.calls.model.*; import org.jetbrains.jet.lang.resolve.calls.model.*;
import org.jetbrains.jet.lang.resolve.calls.util.CallMaker; import org.jetbrains.jet.lang.resolve.calls.util.CallMaker;
@@ -1356,7 +1355,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
//noinspection SuspiciousMethodCalls //noinspection SuspiciousMethodCalls
CallableMethod superCallable = typeMapper.mapToCallableMethod(superConstructor); CallableMethod superCallable = typeMapper.mapToCallableMethod(superConstructor);
Type[] argumentTypes = superCallable.getAsmMethod().getArgumentTypes(); Type[] argumentTypes = superCallable.getAsmMethod().getArgumentTypes();
ResolvedCall resolvedCall = bindingContext.get(BindingContext.RESOLVED_CALL, superCall.getCalleeExpression()); ResolvedCall<?> resolvedCall = bindingContext.get(BindingContext.RESOLVED_CALL, superCall.getCalleeExpression());
assert resolvedCall != null; assert resolvedCall != null;
pushMethodArguments(resolvedCall, Arrays.asList(argumentTypes), defaulCallGenerator); pushMethodArguments(resolvedCall, Arrays.asList(argumentTypes), defaulCallGenerator);
} }
@@ -1734,7 +1733,6 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
if (descriptor instanceof ValueParameterDescriptor && descriptor.getContainingDeclaration() instanceof ScriptDescriptor) { if (descriptor instanceof ValueParameterDescriptor && descriptor.getContainingDeclaration() instanceof ScriptDescriptor) {
ScriptDescriptor scriptDescriptor = (ScriptDescriptor) descriptor.getContainingDeclaration(); ScriptDescriptor scriptDescriptor = (ScriptDescriptor) descriptor.getContainingDeclaration();
assert scriptDescriptor != null;
Type scriptClassType = asmTypeForScriptDescriptor(bindingContext, scriptDescriptor); Type scriptClassType = asmTypeForScriptDescriptor(bindingContext, scriptDescriptor);
ValueParameterDescriptor valueParameterDescriptor = (ValueParameterDescriptor) descriptor; ValueParameterDescriptor valueParameterDescriptor = (ValueParameterDescriptor) descriptor;
ClassDescriptor scriptClass = bindingContext.get(CLASS_FOR_SCRIPT, scriptDescriptor); ClassDescriptor scriptClass = bindingContext.get(CLASS_FOR_SCRIPT, scriptDescriptor);
@@ -1931,7 +1929,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
) { ) {
List<ResolvedValueArgument> arguments = resolvedCall.getValueArgumentsByIndex(); List<ResolvedValueArgument> arguments = resolvedCall.getValueArgumentsByIndex();
if (arguments == null) { if (arguments == null) {
throw new IllegalStateException("Failed to arrange value arguments by index"); throw new IllegalStateException("Failed to arrange value arguments by index: " + resolvedCall.getResultingDescriptor());
} }
ResolvedValueArgument argument = arguments.get(0); ResolvedValueArgument argument = arguments.get(0);
if (!(argument instanceof ExpressionValueArgument)) { if (!(argument instanceof ExpressionValueArgument)) {
@@ -2320,21 +2318,20 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
return false; return false;
} }
public int pushMethodArguments(@NotNull ResolvedCall resolvedCall, List<Type> valueParameterTypes, @NotNull CallGenerator callGenerator) { public int pushMethodArguments(@NotNull ResolvedCall<?> resolvedCall, List<Type> valueParameterTypes, @NotNull CallGenerator callGenerator) {
return pushMethodArguments(resolvedCall, valueParameterTypes, false, callGenerator); return pushMethodArguments(resolvedCall, valueParameterTypes, false, callGenerator);
} }
private int pushMethodArguments(@NotNull ResolvedCall resolvedCall, List<Type> valueParameterTypes, boolean skipLast, @NotNull CallGenerator callGenerator) { private int pushMethodArguments(@NotNull ResolvedCall<?> resolvedCall, List<Type> valueParameterTypes, boolean skipLast, @NotNull CallGenerator callGenerator) {
@SuppressWarnings("unchecked")
List<ResolvedValueArgument> valueArguments = resolvedCall.getValueArgumentsByIndex(); List<ResolvedValueArgument> valueArguments = resolvedCall.getValueArgumentsByIndex();
if (valueArguments == null) {
throw new IllegalStateException("Failed to arrange value arguments by index");
}
CallableDescriptor fd = resolvedCall.getResultingDescriptor(); CallableDescriptor fd = resolvedCall.getResultingDescriptor();
if (valueArguments == null) {
throw new IllegalStateException("Failed to arrange value arguments by index: " + fd);
}
List<ValueParameterDescriptor> valueParameters = fd.getValueParameters(); List<ValueParameterDescriptor> valueParameters = fd.getValueParameters();
if (valueParameters.size() != valueArguments.size()) { if (valueParameters.size() != valueArguments.size()) {
throw new IllegalStateException(); throw new IllegalStateException("Parameters and arguments size mismatch: " + valueParameters.size() + " != " + valueArguments.size());
} }
int mask = 0; int mask = 0;
@@ -2374,6 +2371,9 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
private static boolean hasDefaultArguments(@NotNull ResolvedCall<?> resolvedCall) { private static boolean hasDefaultArguments(@NotNull ResolvedCall<?> resolvedCall) {
List<ResolvedValueArgument> valueArguments = resolvedCall.getValueArgumentsByIndex(); List<ResolvedValueArgument> valueArguments = resolvedCall.getValueArgumentsByIndex();
CallableDescriptor fd = resolvedCall.getResultingDescriptor(); CallableDescriptor fd = resolvedCall.getResultingDescriptor();
if (valueArguments == null) {
throw new IllegalStateException("Failed to arrange value arguments by index: " + resolvedCall.getResultingDescriptor());
}
for (ValueParameterDescriptor valueParameter : fd.getValueParameters()) { for (ValueParameterDescriptor valueParameter : fd.getValueParameters()) {
ResolvedValueArgument resolvedValueArgument = valueArguments.get(valueParameter.getIndex()); ResolvedValueArgument resolvedValueArgument = valueArguments.get(valueParameter.getIndex());
@@ -2835,7 +2835,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
private boolean isIntZero(JetExpression expr, Type exprType) { private boolean isIntZero(JetExpression expr, Type exprType) {
CompileTimeConstant<?> exprValue = getCompileTimeConstant(expr, bindingContext); CompileTimeConstant<?> exprValue = getCompileTimeConstant(expr, bindingContext);
return isIntPrimitive(exprType) && exprValue != null && exprValue.getValue().equals(0); return isIntPrimitive(exprType) && exprValue != null && Integer.valueOf(0).equals(exprValue.getValue());
} }
private StackValue genCmpWithZero(JetExpression exp, Type expType, IElementType opToken) { private StackValue genCmpWithZero(JetExpression exp, Type expType, IElementType opToken) {
@@ -66,12 +66,12 @@ public class TailRecursionCodegen {
public void generateTailRecursion(ResolvedCall<? extends CallableDescriptor> resolvedCall) { public void generateTailRecursion(ResolvedCall<? extends CallableDescriptor> resolvedCall) {
CallableDescriptor fd = resolvedCall.getResultingDescriptor(); CallableDescriptor fd = resolvedCall.getResultingDescriptor();
assert fd instanceof FunctionDescriptor : "the resolved call is not refer to the function descriptor so why do we use generateTailRecursion for something strange?"; assert fd instanceof FunctionDescriptor : "Resolved call doesn't refer to the function descriptor: " + fd;
CallableMethod callable = (CallableMethod) codegen.resolveToCallable((FunctionDescriptor) fd, false); CallableMethod callable = (CallableMethod) codegen.resolveToCallable((FunctionDescriptor) fd, false);
List<ResolvedValueArgument> arguments = resolvedCall.getValueArgumentsByIndex(); List<ResolvedValueArgument> arguments = resolvedCall.getValueArgumentsByIndex();
if (arguments == null) { if (arguments == null) {
throw new IllegalStateException("Failed to arrange value arguments by index"); throw new IllegalStateException("Failed to arrange value arguments by index: " + fd);
} }
assignParameterValues(fd, callable, arguments); assignParameterValues(fd, callable, arguments);
if (callable.getReceiverClass() != null) { if (callable.getReceiverClass() != null) {
@@ -422,7 +422,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid {
} }
List<ResolvedValueArgument> valueArguments = call.getValueArgumentsByIndex(); List<ResolvedValueArgument> valueArguments = call.getValueArgumentsByIndex();
if (valueArguments == null) { if (valueArguments == null) {
throw new IllegalStateException("Failed to arrange value arguments by index"); throw new IllegalStateException("Failed to arrange value arguments by index: " + descriptor);
} }
for (ValueParameterDescriptor valueParameter : original.getValueParameters()) { for (ValueParameterDescriptor valueParameter : original.getValueParameters()) {
JavaClassDescriptor samInterface = getInterfaceIfSamType(valueParameter.getType()); JavaClassDescriptor samInterface = getInterfaceIfSamType(valueParameter.getType());
@@ -100,10 +100,11 @@ public class ArrayAccessTranslator extends AbstractTranslator implements AccessT
List<ResolvedValueArgument> arguments = resolvedCall.getValueArgumentsByIndex(); List<ResolvedValueArgument> arguments = resolvedCall.getValueArgumentsByIndex();
if (arguments == null) { if (arguments == null) {
throw new IllegalStateException("Failed to arrange value arguments by index"); throw new IllegalStateException("Failed to arrange value arguments by index: " + resolvedCall.getResultingDescriptor());
} }
ResolvedValueArgument lastArgument = arguments.get(arguments.size() - 1); ResolvedValueArgument lastArgument = arguments.get(arguments.size() - 1);
assert lastArgument instanceof ExpressionValueArgument: "Last argument of array-like setter must be ExpressionValueArgument"; assert lastArgument instanceof ExpressionValueArgument:
"Last argument of array-like setter must be ExpressionValueArgument: " + lastArgument;
ValueArgument valueArgument = ((ExpressionValueArgument) lastArgument).getValueArgument(); ValueArgument valueArgument = ((ExpressionValueArgument) lastArgument).getValueArgument();
assert valueArgument != null; assert valueArgument != null;
@@ -160,7 +160,7 @@ public class CallArgumentTranslator extends AbstractTranslator {
List<JsExpression> result = new ArrayList<JsExpression>(valueParameters.size()); List<JsExpression> result = new ArrayList<JsExpression>(valueParameters.size());
List<ResolvedValueArgument> valueArgumentsByIndex = resolvedCall.getValueArgumentsByIndex(); List<ResolvedValueArgument> valueArgumentsByIndex = resolvedCall.getValueArgumentsByIndex();
if (valueArgumentsByIndex == null) { if (valueArgumentsByIndex == null) {
throw new IllegalStateException("Failed to arrange value arguments by index"); throw new IllegalStateException("Failed to arrange value arguments by index: " + resolvedCall.getResultingDescriptor());
} }
List<JsExpression> argsBeforeVararg = null; List<JsExpression> argsBeforeVararg = null;
for (ValueParameterDescriptor parameterDescriptor : valueParameters) { for (ValueParameterDescriptor parameterDescriptor : valueParameters) {
@@ -148,7 +148,7 @@ public final class InlinedCallExpressionTranslator extends AbstractCallExpressio
private TemporaryVariable createAliasForArgument(@NotNull ValueParameterDescriptor parameterDescriptor) { private TemporaryVariable createAliasForArgument(@NotNull ValueParameterDescriptor parameterDescriptor) {
List<ResolvedValueArgument> actualArguments = resolvedCall.getValueArgumentsByIndex(); List<ResolvedValueArgument> actualArguments = resolvedCall.getValueArgumentsByIndex();
if (actualArguments == null) { if (actualArguments == null) {
throw new IllegalStateException("Failed to arrange value arguments by index"); throw new IllegalStateException("Failed to arrange value arguments by index: " + resolvedCall.getResultingDescriptor());
} }
ResolvedValueArgument actualArgument = actualArguments.get(parameterDescriptor.getIndex()); ResolvedValueArgument actualArgument = actualArguments.get(parameterDescriptor.getIndex());
JsExpression translatedArgument = translateArgument(actualArgument); JsExpression translatedArgument = translateArgument(actualArgument);