JetPositionManager: add tests

This commit is contained in:
Natalia Ukhorskaya
2014-08-20 13:47:23 +04:00
parent e7ebf6fda2
commit 6b28ccbc9b
7 changed files with 60 additions and 3 deletions
@@ -158,7 +158,7 @@ public class JetPositionManager implements PositionManager {
@NotNull JetFile file,
boolean isInLibrary
) {
PsiElement element = PsiTreeUtil.getParentOfType(notPositionedElement, JetClassOrObject.class, JetFunctionLiteral.class, JetNamedFunction.class);
PsiElement element = getElementToCalculateClassName(notPositionedElement);
if (element instanceof JetClassOrObject) {
return getJvmInternalNameForImpl(typeMapper, (JetClassOrObject) element);
@@ -172,11 +172,11 @@ public class JetPositionManager implements PositionManager {
}
}
else if (element instanceof JetNamedFunction) {
PsiElement parent = PsiTreeUtil.getParentOfType(element, JetClassOrObject.class, JetFunctionLiteralExpression.class, JetNamedFunction.class);
PsiElement parent = getElementToCalculateClassName(element);
if (parent instanceof JetClassOrObject) {
return getJvmInternalNameForImpl(typeMapper, (JetClassOrObject) parent);
}
else if (parent instanceof JetFunctionLiteralExpression || parent instanceof JetNamedFunction) {
else if (parent != null) {
Type asmType = asmTypeForAnonymousClass(typeMapper.getBindingContext(), (JetElement) element);
return asmType.getInternalName();
}
@@ -192,6 +192,11 @@ public class JetPositionManager implements PositionManager {
return PackagePartClassUtils.getPackagePartInternalName(file);
}
@Nullable
private static JetNamedDeclaration getElementToCalculateClassName(@Nullable PsiElement notPositionedElement) {
//noinspection unchecked
return PsiTreeUtil.getParentOfType(notPositionedElement, JetClassOrObject.class, JetFunctionLiteral.class, JetNamedFunction.class);
}
@Nullable
private static JetElement getElementToCreateTypeMapperForLibraryFile(@Nullable PsiElement notPositionedElement) {