IDEA-138578 Debugger spuriously jumps to decompiled method signature

This commit is contained in:
Egor.Ushakov
2015-04-14 12:31:28 +03:00
parent 262d580ccc
commit 44ba5816f2
9 changed files with 146 additions and 14 deletions

View File

@@ -84,7 +84,7 @@ public class TestClassLambda {
System.out.println("hello2" + var1);
};// 87
System.out.println("hello1" + var1);// 88
};// 86
};// 86 89
}// 90
}
@@ -180,7 +180,9 @@ class 'pkg/TestClassLambda' {
method 'lambda$testLambda6$4 (IILjava/lang/String;)Z' {
2 59
5 59
9 59
d 59
15 59
}

View File

@@ -40,6 +40,39 @@ public class TestClassLoop {
System.out.println("4");// 58
}
}
public static int testWhileCombined(String var0) {
int var1 = var0.length();// 63
int var2 = 0;// 64
boolean var3 = false;// 65
boolean var4 = false;// 66
int var5 = 0;// 67
int var7 = 0;// 69
for(boolean var8 = false; var2 < var1; ++var2) {// 70 73 90
char var6 = var0.charAt(var2);// 74
if(var6 == 48) {// 75
++var7;// 76
} else {
if(var6 != 46) {// 77
break;
}
if(var3) {// 78
throw new NumberFormatException("multiple points");// 80
}
var5 = var2;// 82
if(var4) {// 83
var5 = var2 - 1;// 84
}
var3 = true;// 86
}
}
return var5;// 92
}
}
class 'pkg/TestClassLoop' {
@@ -77,6 +110,41 @@ class 'pkg/TestClassLoop' {
3a 39
3c 39
}
method 'testWhileCombined (Ljava/lang/String;)I' {
1 44
4 44
5 45
6 45
7 46
8 46
9 47
a 47
c 48
d 48
f 49
10 49
12 51
13 51
17 51
1c 52
1f 52
23 53
25 53
28 54
30 56
32 56
36 60
3d 61
42 61
44 64
48 65
4b 66
4e 69
4f 69
50 51
58 73
}
}
Lines mapping:
@@ -91,5 +159,25 @@ Lines mapping:
53 <-> 34
54 <-> 35
58 <-> 40
63 <-> 45
64 <-> 46
65 <-> 47
66 <-> 48
67 <-> 49
69 <-> 50
70 <-> 52
73 <-> 52
74 <-> 53
75 <-> 54
76 <-> 55
77 <-> 57
78 <-> 61
80 <-> 62
82 <-> 65
83 <-> 66
84 <-> 67
86 <-> 70
90 <-> 52
92 <-> 74
Not mapped:
39

View File

@@ -79,6 +79,7 @@ class 'pkg/TestClassTypes' {
1 22
2 22
3 22
4 22
c 22
}

View File

@@ -27,7 +27,7 @@ public class TestClassVar {
while(var1 < 10) {// 47
int var2;
for(var2 = var1; var1 < 10 && var1 == 0; ++var1) {// 49
for(var2 = var1; var1 < 10 && var1 == 0; ++var1) {// 49 51
;
}
@@ -44,6 +44,7 @@ class 'pkg/TestClassVar' {
0 7
1 7
3 7
5 7
8 9
b 9
1f 11
@@ -65,8 +66,11 @@ class 'pkg/TestClassVar' {
0 25
1 25
3 27
5 27
9 29
b 29
d 29
11 29
14 29
1c 33
1f 34

View File

@@ -36,7 +36,7 @@ public class TestTryCatchFinally {
System.out.println("Finally");// 55
}
return -1;// 56
return -1;// 56 57
}
}

View File

@@ -58,4 +58,37 @@ public class TestClassLoop {
System.out.println("4");
}
}
public static int testWhileCombined(String in) {
int len = in.length();
int i = 0;
boolean decSeen = false;
boolean signSeen = false;
int decPt = 0;
char c;
int nLeadZero = 0;
int nTrailZero= 0;
skipLeadingZerosLoop:
while (i < len) {
c = in.charAt(i);
if (c == '0') {
nLeadZero++;
} else if (c == '.') {
if (decSeen) {
// already saw one ., this is the 2nd.
throw new NumberFormatException("multiple points");
}
decPt = i;
if (signSeen) {
decPt -= 1;
}
decSeen = true;
} else {
break skipLeadingZerosLoop;
}
i++;
}
return decPt;
}
}