Minor, add assertion messages, fix warnings
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
+1
-1
@@ -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());
|
||||||
|
|||||||
+3
-2
@@ -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;
|
||||||
|
|||||||
+1
-1
@@ -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) {
|
||||||
|
|||||||
+1
-1
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user