From f6b741674b9b2ffcca6bb8185578d2cf4e9fde81 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 17 Aug 2012 17:34:34 +0400 Subject: [PATCH] fix getJvmInternalName for trait's implemented members --- .../jet/plugin/debugger/JetPositionManager.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java b/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java index 1e8f8c879f8..448739910b2 100644 --- a/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java +++ b/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java @@ -138,7 +138,7 @@ public class JetPositionManager implements PositionManager { PsiElement element = PsiTreeUtil.getParentOfType(sourcePosition.getElementAt(), JetClassOrObject.class, JetFunctionLiteralExpression.class, JetNamedFunction.class); if (element instanceof JetClassOrObject) { - result.set(getJvmInternalName(typeMapper, (JetClassOrObject) element)); + result.set(getJvmInternalNameForImpl(typeMapper, (JetClassOrObject) element)); } else if (element instanceof JetFunctionLiteralExpression) { result.set(typeMapper.getClosureAnnotator().classNameForAnonymousClass((JetFunctionLiteralExpression) element).getInternalName()); @@ -146,7 +146,7 @@ public class JetPositionManager implements PositionManager { else if (element instanceof JetNamedFunction) { PsiElement parent = PsiTreeUtil.getParentOfType(element, JetClassOrObject.class, JetFunctionLiteralExpression.class, JetNamedFunction.class); if (parent instanceof JetClassOrObject) { - result.set(getJvmInternalName(typeMapper, (JetClassOrObject) parent)); + result.set(getJvmInternalNameForImpl(typeMapper, (JetClassOrObject) parent)); } else if (parent instanceof JetFunctionLiteralExpression || parent instanceof JetNamedFunction) { result.set(typeMapper.getClosureAnnotator().classNameForAnonymousClass((JetElement) element).getInternalName()); @@ -172,12 +172,19 @@ public class JetPositionManager implements PositionManager { } @Nullable - private String getJvmInternalName(JetTypeMapper typeMapper, JetClassOrObject jetClass) { + private String getJvmInternalNameForImpl(JetTypeMapper typeMapper, JetClassOrObject jetClass) { final ClassDescriptor classDescriptor = typeMapper.bindingContext.get(BindingContext.CLASS, jetClass); if (classDescriptor == null) { return null; } - return typeMapper.mapType(classDescriptor.getDefaultType(), MapTypeMode.IMPL).getInternalName(); + MapTypeMode mode; + if (jetClass instanceof JetClass && ((JetClass) jetClass).isTrait()) { + mode = MapTypeMode.TRAIT_IMPL; + } + else { + mode = MapTypeMode.IMPL; + } + return typeMapper.mapType(classDescriptor.getDefaultType(), mode).getInternalName(); } private JetTypeMapper prepareTypeMapper(final JetFile file) {