diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaToKotlinClassMap.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaToKotlinClassMap.java index 7488f8344a3..67de7758e96 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaToKotlinClassMap.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaToKotlinClassMap.java @@ -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) { diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaToKotlinClassMapBuilder.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaToKotlinClassMapBuilder.java index a1ffb5e3bc8..f27986e17dd 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaToKotlinClassMapBuilder.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaToKotlinClassMapBuilder.java @@ -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); } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/KotlinToJavaTypesMap.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/KotlinToJavaTypesMap.java index 2334a9f9f61..077955d0e85 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/KotlinToJavaTypesMap.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/KotlinToJavaTypesMap.java @@ -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) {