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) {
@@ -0,0 +1,7 @@
package insertInBlock
fun foo() {
val lambda = {
val a = 1 // insertInBlock/InsertInBlockPackage$foo$lambda$1
}()
}
+10
View File
@@ -0,0 +1,10 @@
class A {
fun foo() {
{
fun innerFoo() {
"" // A$foo$1$1
}
innerFoo()
}()
}
}
@@ -0,0 +1,10 @@
class A {
fun foo() {
val a = {
fun innerFoo() {
val b = {} // A$foo$a$1$1
}
innerFoo()
}()
}
}
@@ -0,0 +1,3 @@
class A {
val foo: Int = 5 // A
}
@@ -0,0 +1,3 @@
package prop
val foo: Int = 5 // prop/PropPackage-topLevelPropertyInitializer
@@ -63,6 +63,17 @@ public class JetPositionManagerTest extends PositionManagerTestCase {
public void testAnonymousFunction() {
doTest();
}
public void testAnonymousNamedFunction() {
doTest();
}
public void testFunctionLiteral() {
doTest();
}
public void testFunctionLiteralInVal() {
doTest();
}
public void testClass() {
doTest();
@@ -108,6 +119,14 @@ public class JetPositionManagerTest extends PositionManagerTestCase {
doTest();
}
public void testPropertyInitializer() {
doTest();
}
public void testTopLevelPropertyInitializer() {
doTest();
}
public void testTrait() {
doTest();
}