JetPositionManager: add tests
This commit is contained in:
@@ -158,7 +158,7 @@ public class JetPositionManager implements PositionManager {
|
|||||||
@NotNull JetFile file,
|
@NotNull JetFile file,
|
||||||
boolean isInLibrary
|
boolean isInLibrary
|
||||||
) {
|
) {
|
||||||
PsiElement element = PsiTreeUtil.getParentOfType(notPositionedElement, JetClassOrObject.class, JetFunctionLiteral.class, JetNamedFunction.class);
|
PsiElement element = getElementToCalculateClassName(notPositionedElement);
|
||||||
|
|
||||||
if (element instanceof JetClassOrObject) {
|
if (element instanceof JetClassOrObject) {
|
||||||
return getJvmInternalNameForImpl(typeMapper, (JetClassOrObject) element);
|
return getJvmInternalNameForImpl(typeMapper, (JetClassOrObject) element);
|
||||||
@@ -172,11 +172,11 @@ public class JetPositionManager implements PositionManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (element instanceof JetNamedFunction) {
|
else if (element instanceof JetNamedFunction) {
|
||||||
PsiElement parent = PsiTreeUtil.getParentOfType(element, JetClassOrObject.class, JetFunctionLiteralExpression.class, JetNamedFunction.class);
|
PsiElement parent = getElementToCalculateClassName(element);
|
||||||
if (parent instanceof JetClassOrObject) {
|
if (parent instanceof JetClassOrObject) {
|
||||||
return getJvmInternalNameForImpl(typeMapper, (JetClassOrObject) parent);
|
return getJvmInternalNameForImpl(typeMapper, (JetClassOrObject) parent);
|
||||||
}
|
}
|
||||||
else if (parent instanceof JetFunctionLiteralExpression || parent instanceof JetNamedFunction) {
|
else if (parent != null) {
|
||||||
Type asmType = asmTypeForAnonymousClass(typeMapper.getBindingContext(), (JetElement) element);
|
Type asmType = asmTypeForAnonymousClass(typeMapper.getBindingContext(), (JetElement) element);
|
||||||
return asmType.getInternalName();
|
return asmType.getInternalName();
|
||||||
}
|
}
|
||||||
@@ -192,6 +192,11 @@ public class JetPositionManager implements PositionManager {
|
|||||||
return PackagePartClassUtils.getPackagePartInternalName(file);
|
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
|
@Nullable
|
||||||
private static JetElement getElementToCreateTypeMapperForLibraryFile(@Nullable PsiElement notPositionedElement) {
|
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() {
|
public void testAnonymousFunction() {
|
||||||
doTest();
|
doTest();
|
||||||
}
|
}
|
||||||
|
public void testAnonymousNamedFunction() {
|
||||||
|
doTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testFunctionLiteral() {
|
||||||
|
doTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testFunctionLiteralInVal() {
|
||||||
|
doTest();
|
||||||
|
}
|
||||||
|
|
||||||
public void testClass() {
|
public void testClass() {
|
||||||
doTest();
|
doTest();
|
||||||
@@ -108,6 +119,14 @@ public class JetPositionManagerTest extends PositionManagerTestCase {
|
|||||||
doTest();
|
doTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testPropertyInitializer() {
|
||||||
|
doTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testTopLevelPropertyInitializer() {
|
||||||
|
doTest();
|
||||||
|
}
|
||||||
|
|
||||||
public void testTrait() {
|
public void testTrait() {
|
||||||
doTest();
|
doTest();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user