Make Array<T>(size, init) a constructor of Array

It's not marked as inline, this is why 'crossinline' was added in
jaggedArray.kt/jaggedDeep.kt. Will be fixed in the following commits
This commit is contained in:
Alexander Udalov
2016-01-21 22:22:00 +03:00
parent 18238bd6f3
commit 04026dbe84
15 changed files with 123 additions and 380 deletions
@@ -3439,6 +3439,20 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
public CallableDescriptor getResultingDescriptor() {
return descriptor;
}
@NotNull
@Override
public Map<TypeParameterDescriptor, KotlinType> getTypeArguments() {
Map<TypeParameterDescriptor, KotlinType> originalArgs = super.getTypeArguments();
if (originalArgs.isEmpty()) return originalArgs;
assert originalArgs.size() == 1 : "Unknown constructor called: " + originalArgs.size() + " type arguments";
return Collections.singletonMap(
CollectionsKt.single(descriptor.getTypeParameters()),
CollectionsKt.single(originalArgs.values())
);
}
};
return invokeFunction(fakeResolvedCall, StackValue.singleton(intrinsicConstructors, typeMapper));