JetPositionManager: add tests
This commit is contained in:
@@ -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
|
||||
}()
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user