Actual ArgumentGenerator.java convertion
This commit is contained in:
@@ -14,73 +14,70 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.codegen;
|
package org.jetbrains.kotlin.codegen
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.kotlin.resolve.calls.model.DefaultValueArgument
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.DefaultValueArgument;
|
import org.jetbrains.kotlin.resolve.calls.model.ExpressionValueArgument
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.ExpressionValueArgument;
|
import org.jetbrains.kotlin.resolve.calls.model.ResolvedValueArgument
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedValueArgument;
|
import org.jetbrains.kotlin.resolve.calls.model.VarargValueArgument
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.VarargValueArgument;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList
|
||||||
import java.util.Collections;
|
import java.util.Collections
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public abstract class ArgumentGenerator {
|
abstract class ArgumentGenerator {
|
||||||
/**
|
/**
|
||||||
* @return a {@code List} of bit masks of default arguments that should be passed as last arguments to $default method, if there were
|
* @return a `List` of bit masks of default arguments that should be passed as last arguments to $default method, if there were
|
||||||
* any default arguments, or an empty {@code List} if there were none
|
* * any default arguments, or an empty `List` if there were none
|
||||||
* @see kotlin.reflect.jvm.internal.KCallableImpl#callBy(Map...)
|
* *
|
||||||
|
* @see kotlin.reflect.jvm.internal.KCallableImpl.callBy
|
||||||
*/
|
*/
|
||||||
@NotNull
|
open fun generate(valueArguments: List<ResolvedValueArgument>): List<Int> {
|
||||||
public List<Integer> generate(@NotNull List<ResolvedValueArgument> valueArguments) {
|
val masks = ArrayList<Int>(1)
|
||||||
List<Integer> masks = new ArrayList<Integer>(1);
|
var mask = 0
|
||||||
int mask = 0;
|
val n = valueArguments.size()
|
||||||
int n = valueArguments.size();
|
for (i in 0..n - 1) {
|
||||||
for (int i = 0; i < n; i++) {
|
|
||||||
if (i != 0 && i % Integer.SIZE == 0) {
|
if (i != 0 && i % Integer.SIZE == 0) {
|
||||||
masks.add(mask);
|
masks.add(mask)
|
||||||
mask = 0;
|
mask = 0
|
||||||
}
|
}
|
||||||
ResolvedValueArgument argument = valueArguments.get(i);
|
val argument = valueArguments.get(i)
|
||||||
if (argument instanceof ExpressionValueArgument) {
|
if (argument is ExpressionValueArgument) {
|
||||||
generateExpression(i, (ExpressionValueArgument) argument);
|
generateExpression(i, argument)
|
||||||
}
|
}
|
||||||
else if (argument instanceof DefaultValueArgument) {
|
else if (argument is DefaultValueArgument) {
|
||||||
mask |= 1 << (i % Integer.SIZE);
|
mask = mask or (1 shl (i % Integer.SIZE))
|
||||||
generateDefault(i, (DefaultValueArgument) argument);
|
generateDefault(i, argument)
|
||||||
}
|
}
|
||||||
else if (argument instanceof VarargValueArgument) {
|
else if (argument is VarargValueArgument) {
|
||||||
generateVararg(i, (VarargValueArgument) argument);
|
generateVararg(i, argument)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
generateOther(i, argument);
|
generateOther(i, argument)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mask == 0 && masks.isEmpty()) {
|
if (mask == 0 && masks.isEmpty()) {
|
||||||
return Collections.emptyList();
|
return emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
masks.add(mask);
|
masks.add(mask)
|
||||||
return masks;
|
return masks
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void generateExpression(int i, @NotNull ExpressionValueArgument argument) {
|
protected open fun generateExpression(i: Int, argument: ExpressionValueArgument) {
|
||||||
throw new UnsupportedOperationException("Unsupported expression value argument #" + i + ": " + argument);
|
throw UnsupportedOperationException("Unsupported expression value argument #$i: $argument")
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void generateDefault(int i, @NotNull DefaultValueArgument argument) {
|
protected open fun generateDefault(i: Int, argument: DefaultValueArgument) {
|
||||||
throw new UnsupportedOperationException("Unsupported default value argument #" + i + ": " + argument);
|
throw UnsupportedOperationException("Unsupported default value argument #$i: $argument")
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void generateVararg(int i, @NotNull VarargValueArgument argument) {
|
protected open fun generateVararg(i: Int, argument: VarargValueArgument) {
|
||||||
throw new UnsupportedOperationException("Unsupported vararg value argument #" + i + ": " + argument);
|
throw UnsupportedOperationException("Unsupported vararg value argument #$i: $argument")
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("MethodMayBeStatic") // is supposed to be overridden
|
@SuppressWarnings("MethodMayBeStatic") // is supposed to be overridden
|
||||||
protected void generateOther(int i, @NotNull ResolvedValueArgument argument) {
|
protected fun generateOther(i: Int, argument: ResolvedValueArgument) {
|
||||||
throw new UnsupportedOperationException("Unsupported value argument #" + i + ": " + argument);
|
throw UnsupportedOperationException("Unsupported value argument #$i: $argument")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class CallBasedArgumentGenerator extends ArgumentGenerator {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public List<Integer> generate(@NotNull List<ResolvedValueArgument> valueArguments) {
|
public List<Integer> generate(@NotNull List<? extends ResolvedValueArgument> valueArguments) {
|
||||||
boolean shouldMarkLineNumbers = codegen.isShouldMarkLineNumbers();
|
boolean shouldMarkLineNumbers = codegen.isShouldMarkLineNumbers();
|
||||||
codegen.setShouldMarkLineNumbers(false);
|
codegen.setShouldMarkLineNumbers(false);
|
||||||
List<Integer> masks = super.generate(valueArguments);
|
List<Integer> masks = super.generate(valueArguments);
|
||||||
|
|||||||
Reference in New Issue
Block a user