Add JetTypeMapper.mapClass
Should be used instead of "mapType(*.getDefaultType(), IMPL)" pattern
This commit is contained in:
@@ -26,7 +26,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.asm4.Type;
|
||||
import org.jetbrains.jet.codegen.state.GenerationState;
|
||||
import org.jetbrains.jet.codegen.state.GenerationStateAware;
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapperMode;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
@@ -147,7 +146,7 @@ public final class ClassFileFactory extends GenerationStateAware {
|
||||
}
|
||||
|
||||
public ClassBuilder forClassImplementation(ClassDescriptor aClass, PsiFile sourceFile) {
|
||||
Type type = state.getTypeMapper().mapType(aClass.getDefaultType(), JetTypeMapperMode.IMPL);
|
||||
Type type = state.getTypeMapper().mapClass(aClass);
|
||||
if (isPrimitive(type)) {
|
||||
throw new IllegalStateException("Codegen for primitive type is not possible: " + aClass);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,6 @@ import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethod;
|
||||
import org.jetbrains.jet.codegen.signature.JvmMethodSignature;
|
||||
import org.jetbrains.jet.codegen.state.GenerationState;
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapper;
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapperMode;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
@@ -1377,8 +1376,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
||||
|
||||
ClassifierDescriptor captureReceiver = closure.getCaptureReceiver();
|
||||
if (captureReceiver != null) {
|
||||
Type asmType = typeMapper.mapType(captureReceiver.getDefaultType(), JetTypeMapperMode.IMPL);
|
||||
v.load(context.isStatic() ? 0 : 1, asmType);
|
||||
v.load(context.isStatic() ? 0 : 1, typeMapper.mapClass(captureReceiver));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,15 +31,12 @@ import org.jetbrains.asm4.commons.Method;
|
||||
import org.jetbrains.jet.codegen.binding.CodegenBinding;
|
||||
import org.jetbrains.jet.codegen.context.CodegenContext;
|
||||
import org.jetbrains.jet.codegen.context.MethodContext;
|
||||
import org.jetbrains.jet.codegen.context.NamespaceContext;
|
||||
import org.jetbrains.jet.codegen.context.NamespaceFacadeContext;
|
||||
import org.jetbrains.jet.codegen.signature.JvmMethodParameterKind;
|
||||
import org.jetbrains.jet.codegen.signature.JvmMethodParameterSignature;
|
||||
import org.jetbrains.jet.codegen.signature.JvmMethodSignature;
|
||||
import org.jetbrains.jet.codegen.state.GenerationState;
|
||||
import org.jetbrains.jet.codegen.state.GenerationStateAware;
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapper;
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapperMode;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.psi.JetNamedFunction;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
@@ -549,7 +546,7 @@ public class FunctionCodegen extends ParentCodegenAwareImpl {
|
||||
ownerType = state.getTypeMapper().getOwner(functionDescriptor, kind, true);
|
||||
}
|
||||
else if (contextClass instanceof ClassDescriptor) {
|
||||
ownerType = state.getTypeMapper().mapType(((ClassDescriptor) contextClass).getDefaultType(), JetTypeMapperMode.IMPL);
|
||||
ownerType = state.getTypeMapper().mapClass((ClassDescriptor) contextClass);
|
||||
}
|
||||
else if (isLocalNamedFun(functionDescriptor)) {
|
||||
ownerType = asmTypeForAnonymousClass(state.getBindingContext(), functionDescriptor);
|
||||
|
||||
@@ -97,7 +97,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
@Nullable MemberCodegen parentCodegen
|
||||
) {
|
||||
super(aClass, context, v, state, parentCodegen);
|
||||
this.classAsmType = typeMapper.mapType(descriptor.getDefaultType(), JetTypeMapperMode.IMPL);
|
||||
this.classAsmType = typeMapper.mapClass(descriptor);
|
||||
this.functionCodegen = new FunctionCodegen(context, v, state, this);
|
||||
this.propertyCodegen = new PropertyCodegen(context, v, this.functionCodegen, this);
|
||||
}
|
||||
@@ -261,19 +261,15 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static String getOuterClassName(
|
||||
@NotNull ClassDescriptor classDescriptor,
|
||||
@NotNull JetTypeMapper typeMapper
|
||||
) {
|
||||
private static String getOuterClassName(@NotNull ClassDescriptor classDescriptor, @NotNull JetTypeMapper typeMapper) {
|
||||
ClassDescriptor container = DescriptorUtils.getParentOfType(classDescriptor, ClassDescriptor.class);
|
||||
if (container != null) {
|
||||
return typeMapper.mapType(container.getDefaultType(), JetTypeMapperMode.IMPL).getInternalName();
|
||||
}
|
||||
else {
|
||||
JetFile containingFile = BindingContextUtils.getContainingFile(typeMapper.getBindingContext(), classDescriptor);
|
||||
assert containingFile != null : "Containing file should be present for " + classDescriptor;
|
||||
return NamespaceCodegen.getNamespacePartInternalName(containingFile);
|
||||
return typeMapper.mapClass(container).getInternalName();
|
||||
}
|
||||
|
||||
JetFile containingFile = BindingContextUtils.getContainingFile(typeMapper.getBindingContext(), classDescriptor);
|
||||
assert containingFile != null : "Containing file should be present for " + classDescriptor;
|
||||
return NamespaceCodegen.getNamespacePartInternalName(containingFile);
|
||||
}
|
||||
|
||||
private void writeInnerClasses() {
|
||||
@@ -342,7 +338,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
|
||||
@NotNull
|
||||
private String getInternalNameForImpl(@NotNull ClassDescriptor descriptor) {
|
||||
return typeMapper.mapType(descriptor.getDefaultType(), JetTypeMapperMode.IMPL).getInternalName();
|
||||
return typeMapper.mapClass(descriptor).getInternalName();
|
||||
}
|
||||
|
||||
private JvmClassSignature signature() {
|
||||
@@ -416,7 +412,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
assert superClassDescriptor != null;
|
||||
if (!isInterface(superClassDescriptor)) {
|
||||
superClassType = superType;
|
||||
superClassAsmType = typeMapper.mapType(superClassDescriptor.getDefaultType(), JetTypeMapperMode.IMPL);
|
||||
superClassAsmType = typeMapper.mapClass(superClassDescriptor);
|
||||
superCall = specifier;
|
||||
}
|
||||
}
|
||||
@@ -921,23 +917,17 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
private void generateEnumMethods() {
|
||||
if (myEnumConstants.size() > 0) {
|
||||
{
|
||||
Type type =
|
||||
typeMapper.mapType(KotlinBuiltIns.getInstance().getArrayType(descriptor.getDefaultType()),
|
||||
JetTypeMapperMode.IMPL);
|
||||
Type type = typeMapper.mapType(KotlinBuiltIns.getInstance().getArrayType(descriptor.getDefaultType()));
|
||||
|
||||
MethodVisitor mv =
|
||||
v.newMethod(myClass, ACC_PUBLIC | ACC_STATIC, "values", "()" + type.getDescriptor(), null, null);
|
||||
MethodVisitor mv = v.newMethod(myClass, ACC_PUBLIC | ACC_STATIC, "values", "()" + type.getDescriptor(), null, null);
|
||||
mv.visitCode();
|
||||
mv.visitFieldInsn(GETSTATIC, typeMapper.mapType(descriptor).getInternalName(),
|
||||
VALUES,
|
||||
type.getDescriptor());
|
||||
mv.visitFieldInsn(GETSTATIC, classAsmType.getInternalName(), VALUES, type.getDescriptor());
|
||||
mv.visitMethodInsn(INVOKEVIRTUAL, type.getInternalName(), "clone", "()Ljava/lang/Object;");
|
||||
mv.visitTypeInsn(CHECKCAST, type.getInternalName());
|
||||
mv.visitInsn(ARETURN);
|
||||
FunctionCodegen.endVisit(mv, "values()", myClass);
|
||||
}
|
||||
{
|
||||
|
||||
MethodVisitor mv =
|
||||
v.newMethod(myClass, ACC_PUBLIC | ACC_STATIC, "valueOf", "(Ljava/lang/String;)" + classAsmType.getDescriptor(), null,
|
||||
null);
|
||||
@@ -1623,16 +1613,13 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
private void initializeEnumConstants(ExpressionCodegen codegen) {
|
||||
InstructionAdapter iv = codegen.v;
|
||||
int ordinal = -1;
|
||||
JetType myType = descriptor.getDefaultType();
|
||||
Type myAsmType = typeMapper.mapType(myType, JetTypeMapperMode.IMPL);
|
||||
|
||||
assert myEnumConstants.size() > 0;
|
||||
JetType arrayType = KotlinBuiltIns.getInstance().getArrayType(myType);
|
||||
Type arrayAsmType = typeMapper.mapType(arrayType, JetTypeMapperMode.IMPL);
|
||||
v.newField(myClass, ACC_PRIVATE | ACC_STATIC | ACC_FINAL | ACC_SYNTHETIC, "$VALUES", arrayAsmType.getDescriptor(), null, null);
|
||||
Type arrayAsmType = typeMapper.mapType(KotlinBuiltIns.getInstance().getArrayType(descriptor.getDefaultType()));
|
||||
v.newField(myClass, ACC_PRIVATE | ACC_STATIC | ACC_FINAL | ACC_SYNTHETIC, VALUES, arrayAsmType.getDescriptor(), null, null);
|
||||
|
||||
iv.iconst(myEnumConstants.size());
|
||||
iv.newarray(myAsmType);
|
||||
iv.newarray(classAsmType);
|
||||
iv.dup();
|
||||
|
||||
for (JetEnumEntry enumConstant : myEnumConstants) {
|
||||
@@ -1643,14 +1630,14 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
|
||||
ClassDescriptor classDescriptor = bindingContext.get(BindingContext.CLASS, enumConstant);
|
||||
assert classDescriptor != null;
|
||||
String implClass = typeMapper.mapType(classDescriptor.getDefaultType(), JetTypeMapperMode.IMPL).getInternalName();
|
||||
Type implClass = typeMapper.mapClass(classDescriptor);
|
||||
|
||||
List<JetDelegationSpecifier> delegationSpecifiers = enumConstant.getDelegationSpecifiers();
|
||||
if (delegationSpecifiers.size() > 1) {
|
||||
throw new UnsupportedOperationException("multiple delegation specifiers for enum constant not supported");
|
||||
}
|
||||
|
||||
iv.anew(Type.getObjectType(implClass));
|
||||
iv.anew(implClass);
|
||||
iv.dup();
|
||||
|
||||
iv.aconst(enumConstant.getName());
|
||||
@@ -1673,13 +1660,13 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
}
|
||||
}
|
||||
else {
|
||||
iv.invokespecial(implClass, "<init>", "(Ljava/lang/String;I)V");
|
||||
iv.invokespecial(implClass.getInternalName(), "<init>", "(Ljava/lang/String;I)V");
|
||||
}
|
||||
iv.dup();
|
||||
iv.putstatic(myAsmType.getInternalName(), enumConstant.getName(), "L" + myAsmType.getInternalName() + ";");
|
||||
iv.putstatic(classAsmType.getInternalName(), enumConstant.getName(), classAsmType.getDescriptor());
|
||||
iv.astore(OBJECT_TYPE);
|
||||
}
|
||||
iv.putstatic(myAsmType.getInternalName(), "$VALUES", arrayAsmType.getDescriptor());
|
||||
iv.putstatic(classAsmType.getInternalName(), VALUES, arrayAsmType.getDescriptor());
|
||||
}
|
||||
|
||||
public static void generateInitializers(
|
||||
|
||||
@@ -23,8 +23,6 @@ import org.jetbrains.asm4.Type;
|
||||
import org.jetbrains.asm4.commons.InstructionAdapter;
|
||||
import org.jetbrains.jet.codegen.context.CodegenContext;
|
||||
import org.jetbrains.jet.codegen.state.GenerationState;
|
||||
import org.jetbrains.jet.codegen.state.GenerationStateAware;
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapperMode;
|
||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
|
||||
@@ -79,7 +77,7 @@ public class SamWrapperCodegen extends ParentCodegenAwareImpl {
|
||||
cv.visitSource(file.getName(), null);
|
||||
|
||||
// e.g. ASM type for Function2
|
||||
Type functionAsmType = state.getTypeMapper().mapType(functionType, JetTypeMapperMode.VALUE);
|
||||
Type functionAsmType = state.getTypeMapper().mapType(functionType);
|
||||
|
||||
cv.newField(null,
|
||||
ACC_SYNTHETIC | ACC_PRIVATE | ACC_FINAL,
|
||||
|
||||
@@ -73,10 +73,7 @@ public class JetTypeMapper extends BindingTraceAware {
|
||||
}
|
||||
else if (containingDeclaration instanceof ClassDescriptor) {
|
||||
ClassDescriptor classDescriptor = (ClassDescriptor) containingDeclaration;
|
||||
if (kind == OwnerKind.TRAIT_IMPL) {
|
||||
return mapTraitImpl(classDescriptor);
|
||||
}
|
||||
return mapType(classDescriptor.getDefaultType(), JetTypeMapperMode.IMPL);
|
||||
return kind == OwnerKind.TRAIT_IMPL ? mapTraitImpl(classDescriptor) : mapClass(classDescriptor);
|
||||
}
|
||||
else if (containingDeclaration instanceof ScriptDescriptor) {
|
||||
return asmTypeForScriptDescriptor(bindingContext, (ScriptDescriptor) containingDeclaration);
|
||||
@@ -196,10 +193,15 @@ public class JetTypeMapper extends BindingTraceAware {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Type mapType(@NotNull JetType jetType, @NotNull JetTypeMapperMode kind) {
|
||||
private Type mapType(@NotNull JetType jetType, @NotNull JetTypeMapperMode kind) {
|
||||
return mapType(jetType, null, kind);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Type mapClass(@NotNull ClassifierDescriptor classifier) {
|
||||
return mapType(classifier.getDefaultType(), null, JetTypeMapperMode.IMPL);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Type mapType(@NotNull JetType jetType) {
|
||||
return mapType(jetType, null, JetTypeMapperMode.VALUE);
|
||||
@@ -474,8 +476,7 @@ public class JetTypeMapper extends BindingTraceAware {
|
||||
}
|
||||
else if (functionDescriptor instanceof ConstructorDescriptor) {
|
||||
assert !superCall;
|
||||
ClassDescriptor containingClass = (ClassDescriptor) functionParent;
|
||||
owner = mapType(containingClass.getDefaultType(), JetTypeMapperMode.IMPL);
|
||||
owner = mapClass((ClassDescriptor) functionParent);
|
||||
ownerForDefaultImpl = ownerForDefaultParam = owner;
|
||||
invokeOpcode = INVOKESPECIAL;
|
||||
thisClass = null;
|
||||
@@ -911,10 +912,10 @@ public class JetTypeMapper extends BindingTraceAware {
|
||||
@NotNull
|
||||
public CallableMethod mapToCallableMethod(@NotNull ConstructorDescriptor descriptor, @Nullable CalculatedClosure closure) {
|
||||
JvmMethodSignature method = mapConstructorSignature(descriptor, closure);
|
||||
JetType defaultType = descriptor.getContainingDeclaration().getDefaultType();
|
||||
Type owner = mapType(defaultType, JetTypeMapperMode.IMPL);
|
||||
ClassDescriptor container = descriptor.getContainingDeclaration();
|
||||
Type owner = mapClass(container);
|
||||
if (owner.getSort() != Type.OBJECT) {
|
||||
throw new IllegalStateException("type must have been mapped to object: " + defaultType + ", actual: " + owner);
|
||||
throw new IllegalStateException("type must have been mapped to object: " + container.getDefaultType() + ", actual: " + owner);
|
||||
}
|
||||
return new CallableMethod(owner, owner, owner, method, INVOKESPECIAL, null, null, null);
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package org.jetbrains.jet.codegen;
|
||||
|
||||
import com.intellij.testFramework.UsefulTestCase;
|
||||
import gnu.trove.THashSet;
|
||||
import junit.extensions.TestSetup;
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestCase;
|
||||
@@ -34,7 +33,6 @@ import org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler;
|
||||
import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime;
|
||||
import org.jetbrains.jet.codegen.state.GenerationState;
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapper;
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapperMode;
|
||||
import org.jetbrains.jet.config.CommonConfigurationKeys;
|
||||
import org.jetbrains.jet.config.CompilerConfiguration;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
@@ -43,14 +41,11 @@ import org.jetbrains.jet.lang.psi.JetDeclaration;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.Set;
|
||||
|
||||
@SuppressWarnings("JUnitTestCaseWithNoTests")
|
||||
public class TestlibTest extends UsefulTestCase {
|
||||
@@ -123,22 +118,16 @@ public class TestlibTest extends UsefulTestCase {
|
||||
typeMapper = generationState.getTypeMapper();
|
||||
|
||||
for (JetFile jetFile : myEnvironment.getSourceFiles()) {
|
||||
for (JetDeclaration decl : jetFile.getDeclarations()) {
|
||||
if (decl instanceof JetClass) {
|
||||
JetClass jetClass = (JetClass) decl;
|
||||
|
||||
for (JetDeclaration declaration : jetFile.getDeclarations()) {
|
||||
if (declaration instanceof JetClass) {
|
||||
ClassDescriptor descriptor = (ClassDescriptor) generationState.getBindingContext().get(
|
||||
BindingContext.DECLARATION_TO_DESCRIPTOR, jetClass);
|
||||
BindingContext.DECLARATION_TO_DESCRIPTOR, declaration);
|
||||
|
||||
assertNotNull("Descriptor for declaration " + jetClass + " shouldn't be null", descriptor);
|
||||
assertNotNull("Descriptor for declaration " + declaration + " shouldn't be null", descriptor);
|
||||
|
||||
Set<JetType> allSuperTypes = new THashSet<JetType>();
|
||||
DescriptorUtils.addSuperTypes(descriptor.getDefaultType(), allSuperTypes);
|
||||
|
||||
for (JetType type : allSuperTypes) {
|
||||
String internalName = typeMapper.mapType(type, JetTypeMapperMode.IMPL).getInternalName();
|
||||
if (internalName.equals("junit/framework/Test")) {
|
||||
String name = typeMapper.mapType(descriptor.getDefaultType(), JetTypeMapperMode.IMPL).getInternalName();
|
||||
for (ClassDescriptor superClass : DescriptorUtils.getAllSuperClasses(descriptor)) {
|
||||
if ("junit/framework/Test".equals(typeMapper.mapClass(superClass).getInternalName())) {
|
||||
String name = typeMapper.mapClass(descriptor).getInternalName();
|
||||
|
||||
//noinspection UseOfSystemOutOrSystemErr
|
||||
System.out.println(name);
|
||||
@@ -146,10 +135,9 @@ public class TestlibTest extends UsefulTestCase {
|
||||
@SuppressWarnings("unchecked")
|
||||
Class<TestCase> aClass = (Class<TestCase>) classLoader.loadClass(name.replace('/', '.'));
|
||||
|
||||
if ((aClass.getModifiers() & Modifier.ABSTRACT) == 0 && (aClass.getModifiers() & Modifier.PUBLIC) != 0) {
|
||||
if (!Modifier.isAbstract(aClass.getModifiers()) && Modifier.isPublic(aClass.getModifiers())) {
|
||||
try {
|
||||
Constructor<TestCase> constructor = aClass.getConstructor();
|
||||
if ((constructor.getModifiers() & Modifier.PUBLIC) != 0) {
|
||||
if (Modifier.isPublic(aClass.getConstructor().getModifiers())) {
|
||||
suite.addTestSuite(aClass);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,14 +220,6 @@ public class DescriptorUtils {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void addSuperTypes(@NotNull JetType type, @NotNull Set<JetType> set) {
|
||||
set.add(type);
|
||||
|
||||
for (JetType jetType : type.getConstructor().getSupertypes()) {
|
||||
addSuperTypes(jetType, set);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isRootNamespace(@NotNull NamespaceDescriptor namespaceDescriptor) {
|
||||
return namespaceDescriptor.getContainingDeclaration() instanceof ModuleDescriptor;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,6 @@ import org.jetbrains.jet.codegen.ClassBuilderMode;
|
||||
import org.jetbrains.jet.codegen.NamespaceCodegen;
|
||||
import org.jetbrains.jet.codegen.binding.CodegenBinding;
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapper;
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapperMode;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
@@ -174,7 +173,7 @@ public class JetPositionManager implements PositionManager {
|
||||
return typeMapper.mapTraitImpl(classDescriptor).getInternalName();
|
||||
}
|
||||
|
||||
return typeMapper.mapType(classDescriptor.getDefaultType(), JetTypeMapperMode.IMPL).getInternalName();
|
||||
return typeMapper.mapClass(classDescriptor).getInternalName();
|
||||
}
|
||||
|
||||
private JetTypeMapper prepareTypeMapper(final JetFile file) {
|
||||
|
||||
Reference in New Issue
Block a user