Add direction to JavaToKotlinClassMap and KotlinToJavaTypesMap

This commit is contained in:
Natalia.Ukhorskaya
2012-10-18 19:08:52 +04:00
parent 5d2edc53b4
commit f9c1c041d7
3 changed files with 37 additions and 13 deletions
@@ -96,20 +96,26 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements
@Override
/*package*/ void register(
@NotNull Class<?> javaClass,
@NotNull ClassDescriptor kotlinDescriptor
@NotNull ClassDescriptor kotlinDescriptor,
@NotNull Direction direction
) {
register(getJavaClassFqName(javaClass), kotlinDescriptor);
if (direction == Direction.BOTH || direction == Direction.JAVA_TO_KOTLIN) {
register(getJavaClassFqName(javaClass), kotlinDescriptor);
}
}
@Override
/*package*/ void register(
@NotNull Class<?> javaClass,
@NotNull ClassDescriptor kotlinDescriptor,
@NotNull ClassDescriptor kotlinMutableDescriptor
@NotNull ClassDescriptor kotlinMutableDescriptor,
@NotNull Direction direction
) {
FqName javaClassName = getJavaClassFqName(javaClass);
register(javaClassName, kotlinDescriptor);
registerCovariant(javaClassName, kotlinMutableDescriptor);
if (direction == Direction.BOTH || direction == Direction.JAVA_TO_KOTLIN) {
FqName javaClassName = getJavaClassFqName(javaClass);
register(javaClassName, kotlinDescriptor);
registerCovariant(javaClassName, kotlinMutableDescriptor);
}
}
private void register(@NotNull FqName javaClassName, @NotNull ClassDescriptor kotlinDescriptor) {
@@ -28,6 +28,12 @@ import java.util.*;
*/
public abstract class JavaToKotlinClassMapBuilder {
public enum Direction {
JAVA_TO_KOTLIN,
KOTLIN_TO_JAVA,
BOTH
}
/*package*/ void init() {
KotlinBuiltIns kotlinBuiltIns = KotlinBuiltIns.getInstance();
@@ -50,7 +56,13 @@ public abstract class JavaToKotlinClassMapBuilder {
register(ListIterator.class, kotlinBuiltIns.getListIterator(), kotlinBuiltIns.getMutableListIterator());
}
/*package*/ abstract void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor);
/*package*/ void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor) {
register(javaClass, kotlinDescriptor, Direction.BOTH);
}
/*package*/ abstract void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor, @NotNull Direction direction);
/*package*/ abstract void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor, @NotNull ClassDescriptor kotlinMutableDescriptor);
/*package*/ void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor, @NotNull ClassDescriptor kotlinMutableDescriptor) {
register(javaClass, kotlinDescriptor, kotlinMutableDescriptor, Direction.BOTH);
}
/*package*/ abstract void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor, @NotNull ClassDescriptor kotlinMutableDescriptor, @NotNull Direction direction);
}
@@ -87,19 +87,25 @@ public class KotlinToJavaTypesMap extends JavaToKotlinClassMapBuilder {
@Override
/*package*/ void register(
@NotNull Class<?> javaClass,
@NotNull ClassDescriptor kotlinDescriptor
@NotNull ClassDescriptor kotlinDescriptor,
@NotNull Direction direction
) {
register(kotlinDescriptor, AsmTypeConstants.getType(javaClass));
if (direction == Direction.BOTH || direction == Direction.KOTLIN_TO_JAVA) {
register(kotlinDescriptor, AsmTypeConstants.getType(javaClass));
}
}
@Override
/*package*/ void register(
@NotNull Class<?> javaClass,
@NotNull ClassDescriptor kotlinDescriptor,
@NotNull ClassDescriptor kotlinMutableDescriptor
@NotNull ClassDescriptor kotlinMutableDescriptor,
@NotNull Direction direction
) {
register(javaClass, kotlinDescriptor);
register(javaClass, kotlinMutableDescriptor);
if (direction == Direction.BOTH || direction == Direction.KOTLIN_TO_JAVA) {
register(javaClass, kotlinDescriptor);
register(javaClass, kotlinMutableDescriptor);
}
}
private void register(@NotNull ClassDescriptor kotlinDescriptor, @NotNull Type javaType) {