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 @Override
/*package*/ void register( /*package*/ void register(
@NotNull Class<?> javaClass, @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 @Override
/*package*/ void register( /*package*/ void register(
@NotNull Class<?> javaClass, @NotNull Class<?> javaClass,
@NotNull ClassDescriptor kotlinDescriptor, @NotNull ClassDescriptor kotlinDescriptor,
@NotNull ClassDescriptor kotlinMutableDescriptor @NotNull ClassDescriptor kotlinMutableDescriptor,
@NotNull Direction direction
) { ) {
FqName javaClassName = getJavaClassFqName(javaClass); if (direction == Direction.BOTH || direction == Direction.JAVA_TO_KOTLIN) {
register(javaClassName, kotlinDescriptor); FqName javaClassName = getJavaClassFqName(javaClass);
registerCovariant(javaClassName, kotlinMutableDescriptor); register(javaClassName, kotlinDescriptor);
registerCovariant(javaClassName, kotlinMutableDescriptor);
}
} }
private void register(@NotNull FqName javaClassName, @NotNull ClassDescriptor kotlinDescriptor) { private void register(@NotNull FqName javaClassName, @NotNull ClassDescriptor kotlinDescriptor) {
@@ -28,6 +28,12 @@ import java.util.*;
*/ */
public abstract class JavaToKotlinClassMapBuilder { public abstract class JavaToKotlinClassMapBuilder {
public enum Direction {
JAVA_TO_KOTLIN,
KOTLIN_TO_JAVA,
BOTH
}
/*package*/ void init() { /*package*/ void init() {
KotlinBuiltIns kotlinBuiltIns = KotlinBuiltIns.getInstance(); KotlinBuiltIns kotlinBuiltIns = KotlinBuiltIns.getInstance();
@@ -50,7 +56,13 @@ public abstract class JavaToKotlinClassMapBuilder {
register(ListIterator.class, kotlinBuiltIns.getListIterator(), kotlinBuiltIns.getMutableListIterator()); 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 @Override
/*package*/ void register( /*package*/ void register(
@NotNull Class<?> javaClass, @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 @Override
/*package*/ void register( /*package*/ void register(
@NotNull Class<?> javaClass, @NotNull Class<?> javaClass,
@NotNull ClassDescriptor kotlinDescriptor, @NotNull ClassDescriptor kotlinDescriptor,
@NotNull ClassDescriptor kotlinMutableDescriptor @NotNull ClassDescriptor kotlinMutableDescriptor,
@NotNull Direction direction
) { ) {
register(javaClass, kotlinDescriptor); if (direction == Direction.BOTH || direction == Direction.KOTLIN_TO_JAVA) {
register(javaClass, kotlinMutableDescriptor); register(javaClass, kotlinDescriptor);
register(javaClass, kotlinMutableDescriptor);
}
} }
private void register(@NotNull ClassDescriptor kotlinDescriptor, @NotNull Type javaType) { private void register(@NotNull ClassDescriptor kotlinDescriptor, @NotNull Type javaType) {