Fix navigation to file from "breakpoint reached at" info
This commit is contained in:
@@ -88,7 +88,8 @@ public class JetExceptionFilter implements Filter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Matches strings like "\tat test.TestPackage$foo$f$1.invoke(a.kt:3)\n"
|
// Matches strings like "\tat test.TestPackage$foo$f$1.invoke(a.kt:3)\n"
|
||||||
private static final Pattern STACK_TRACE_ELEMENT_PATTERN = Pattern.compile("^\\s*at\\s+(.+)\\.(.+)\\((.+):(\\d+)\\)\\s*$");
|
// or "\tBreakpoint reached at test.TestPackage$foo$f$1.invoke(a.kt:3)\n"
|
||||||
|
private static final Pattern STACK_TRACE_ELEMENT_PATTERN = Pattern.compile("^[\\w|\\s]*at\\s+(.+)\\.(.+)\\((.+):(\\d+)\\)\\s*$");
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static StackTraceElement parseStackTraceLine(@NotNull String line) {
|
private static StackTraceElement parseStackTraceLine(@NotNull String line) {
|
||||||
|
|||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun main(args: Array<String>) {
|
||||||
|
println("hello")
|
||||||
|
}
|
||||||
@@ -75,7 +75,7 @@ public class JetExceptionFilterTest extends MultiFileTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private static String createStackTraceElementLine(@NotNull String fileName, @NotNull String className, int lineNumber) {
|
private static String createStackTraceElementLine(@NotNull String prefix, @NotNull String fileName, @NotNull String className, int lineNumber) {
|
||||||
// Method name doesn't matter
|
// Method name doesn't matter
|
||||||
String methodName = "foo";
|
String methodName = "foo";
|
||||||
|
|
||||||
@@ -83,10 +83,14 @@ public class JetExceptionFilterTest extends MultiFileTestCase {
|
|||||||
String fileLastName = new File(fileName).getName();
|
String fileLastName = new File(fileName).getName();
|
||||||
|
|
||||||
StackTraceElement element = new StackTraceElement(className, methodName, fileLastName, lineNumber);
|
StackTraceElement element = new StackTraceElement(className, methodName, fileLastName, lineNumber);
|
||||||
return "\tat " + element + "\n";
|
return prefix + element + "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doTest(@NotNull String fileName, int lineNumber, @NotNull Function1<VirtualFile, String> className) {
|
private void doTest(@NotNull String fileName, int lineNumber, @NotNull Function1<VirtualFile, String> className) {
|
||||||
|
doTest("\tat ", fileName, lineNumber, className);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doTest(@NotNull String linePrefix, @NotNull String fileName, int lineNumber, @NotNull Function1<VirtualFile, String> className) {
|
||||||
if (rootDir == null) {
|
if (rootDir == null) {
|
||||||
configure();
|
configure();
|
||||||
}
|
}
|
||||||
@@ -97,7 +101,7 @@ public class JetExceptionFilterTest extends MultiFileTestCase {
|
|||||||
VirtualFile expectedFile = VfsUtilCore.findRelativeFile(fileName, rootDir);
|
VirtualFile expectedFile = VfsUtilCore.findRelativeFile(fileName, rootDir);
|
||||||
assertNotNull(expectedFile);
|
assertNotNull(expectedFile);
|
||||||
|
|
||||||
String line = createStackTraceElementLine(fileName, className.invoke(expectedFile), lineNumber);
|
String line = createStackTraceElementLine(linePrefix, fileName, className.invoke(expectedFile), lineNumber);
|
||||||
Filter.Result result = filter.applyFilter(line, 0);
|
Filter.Result result = filter.applyFilter(line, 0);
|
||||||
|
|
||||||
assertNotNull(result);
|
assertNotNull(result);
|
||||||
@@ -115,6 +119,15 @@ public class JetExceptionFilterTest extends MultiFileTestCase {
|
|||||||
assertEquals(expectedOffset, descriptor.getOffset());
|
assertEquals(expectedOffset, descriptor.getOffset());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testBreakpointReachedAt() {
|
||||||
|
doTest("Breakpoint reached at ", "breakpointReachedAt.kt", 2, new Function1<VirtualFile, String>() {
|
||||||
|
@Override
|
||||||
|
public String invoke(VirtualFile file) {
|
||||||
|
return getPackageClassName(FqName.ROOT);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void testSimple() {
|
public void testSimple() {
|
||||||
doTest("simple.kt", 2, new Function1<VirtualFile, String>() {
|
doTest("simple.kt", 2, new Function1<VirtualFile, String>() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user