package jadx.tests.integration.debuginfo; import jadx.core.codegen.CodeWriter; import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; import java.lang.ref.WeakReference; import java.util.Map; import org.junit.Test; import static org.junit.Assert.assertEquals; public class TestLineNumbers2 extends IntegrationTest { public static class TestCls { private WeakReference<TestCls> f; public TestCls(TestCls s) { } TestCls test(TestCls s) { TestCls store = f != null ? f.get() : null; if (store == null) { store = new TestCls(s); f = new WeakReference<TestCls>(store); } return store; } public Object test2() { return new Object(); } } @Test public void test() { ClassNode cls = getClassNode(TestCls.class); CodeWriter codeWriter = cls.getCode(); String code = codeWriter.toString(); Map<Integer, Integer> lineMapping = codeWriter.getLineMapping(); assertEquals("{8=18, 11=22, 12=23, 13=24, 14=28, 16=25, 17=26, 18=28, 21=31, 22=32}", lineMapping.toString()); } }