parent
4a6a658b4c
commit
4ee8ad716d
@ -1,36 +0,0 @@ |
||||
/* |
||||
* Copyright 2000-2014 JetBrains s.r.o. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package org.jetbrains.java.decompiler; |
||||
|
||||
import org.jetbrains.java.decompiler.main.extern.IFernflowerPreferences; |
||||
import org.junit.Test; |
||||
|
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
public class BytecodeToSourceMappingTest extends SingleClassesTestBase { |
||||
@Override |
||||
protected Map<String, Object> getDecompilerOptions() { |
||||
return new HashMap<String, Object>() {{ |
||||
put(IFernflowerPreferences.BYTECODE_SOURCE_MAPPING, "1"); |
||||
put(IFernflowerPreferences.DUMP_ORIGINAL_LINES, "1"); |
||||
}}; |
||||
} |
||||
|
||||
@Test public void testSimpleBytecodeMapping() { doTest("pkg/TestClassSimpleBytecodeMapping"); } |
||||
@Test public void testSynchronizedMapping() { doTest("pkg/TestSynchronizedMapping"); } |
||||
@Test public void testAbstractMethods() { doTest("pkg/TestAbstractMethods"); } |
||||
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,142 @@ |
||||
package pkg; |
||||
|
||||
public abstract class TestAnonymousClass { |
||||
public static final Runnable R3 = new Runnable() { |
||||
public void run() { |
||||
boolean var1 = true;// 28 |
||||
boolean var2 = true;// 29 |
||||
} |
||||
}; |
||||
public static final Runnable R = new Runnable() { |
||||
public void run() { |
||||
boolean var1 = true;// 45 |
||||
boolean var2 = true;// 46 |
||||
} |
||||
}; |
||||
public static final Runnable R1 = new Runnable() { |
||||
public void run() { |
||||
boolean var1 = true;// 53 |
||||
boolean var2 = true;// 54 |
||||
} |
||||
}; |
||||
|
||||
void foo(int var1) throws Exception { |
||||
if(var1 > 0) {// 10 |
||||
TestAnonymousClass.I var2 = new TestAnonymousClass.I() { |
||||
public void foo() throws Exception { |
||||
boolean var1 = true;// 13 |
||||
boolean var2 = true;// 14 |
||||
} |
||||
};// 11 |
||||
var2.foo();// 17 |
||||
} else { |
||||
System.out.println(5);// 21 |
||||
} |
||||
|
||||
} |
||||
|
||||
void boo() { |
||||
boolean var1 = true;// 35 |
||||
} |
||||
|
||||
void zoo() { |
||||
boolean var1 = true;// 39 |
||||
} |
||||
|
||||
private static class Inner { |
||||
private static final Runnable R_I = new Runnable() { |
||||
public void run() { |
||||
boolean var1 = true;// 66 |
||||
boolean var2 = true;// 67 |
||||
} |
||||
}; |
||||
} |
||||
|
||||
interface I { |
||||
void foo() throws Exception; |
||||
} |
||||
} |
||||
|
||||
class 'pkg/TestAnonymousClass$2' { |
||||
method 'run ()V' { |
||||
0 5 |
||||
1 5 |
||||
2 6 |
||||
3 6 |
||||
} |
||||
} |
||||
|
||||
class 'pkg/TestAnonymousClass$3' { |
||||
method 'run ()V' { |
||||
0 11 |
||||
1 11 |
||||
2 12 |
||||
3 12 |
||||
} |
||||
} |
||||
|
||||
class 'pkg/TestAnonymousClass$4' { |
||||
method 'run ()V' { |
||||
0 17 |
||||
1 17 |
||||
2 18 |
||||
3 18 |
||||
} |
||||
} |
||||
|
||||
class 'pkg/TestAnonymousClass$1' { |
||||
method 'foo ()V' { |
||||
0 26 |
||||
1 26 |
||||
2 27 |
||||
3 27 |
||||
} |
||||
} |
||||
|
||||
class 'pkg/TestAnonymousClass' { |
||||
method 'foo (I)V' { |
||||
1 23 |
||||
c 29 |
||||
e 30 |
||||
16 32 |
||||
19 32 |
||||
1a 32 |
||||
} |
||||
|
||||
method 'boo ()V' { |
||||
0 38 |
||||
1 38 |
||||
} |
||||
|
||||
method 'zoo ()V' { |
||||
0 42 |
||||
1 42 |
||||
} |
||||
} |
||||
|
||||
class 'pkg/TestAnonymousClass$Inner$1' { |
||||
method 'run ()V' { |
||||
0 48 |
||||
1 48 |
||||
2 49 |
||||
3 49 |
||||
} |
||||
} |
||||
|
||||
Lines mapping: |
||||
10 <-> 24 |
||||
11 <-> 30 |
||||
13 <-> 27 |
||||
14 <-> 28 |
||||
17 <-> 31 |
||||
21 <-> 33 |
||||
28 <-> 6 |
||||
29 <-> 7 |
||||
35 <-> 39 |
||||
39 <-> 43 |
||||
45 <-> 12 |
||||
46 <-> 13 |
||||
53 <-> 18 |
||||
54 <-> 19 |
||||
66 <-> 49 |
||||
67 <-> 50 |
@ -0,0 +1,61 @@ |
||||
package pkg; |
||||
|
||||
public abstract class TestLocalClass { |
||||
void foo() { |
||||
boolean var1 = true;// 8 |
||||
class Local { |
||||
void foo() { |
||||
boolean var1 = true;// 11 |
||||
boolean var2 = true;// 12 |
||||
} |
||||
} |
||||
|
||||
Local var2 = new Local();// 15 |
||||
var2.foo();// 16 |
||||
} |
||||
|
||||
void boo() { |
||||
boolean var1 = true;// 20 |
||||
} |
||||
|
||||
void zoo() { |
||||
boolean var1 = true;// 24 |
||||
} |
||||
} |
||||
|
||||
class 'pkg/TestLocalClass$1Local' { |
||||
method 'foo ()V' { |
||||
0 7 |
||||
1 7 |
||||
2 8 |
||||
3 8 |
||||
} |
||||
} |
||||
|
||||
class 'pkg/TestLocalClass' { |
||||
method 'foo ()V' { |
||||
0 4 |
||||
1 4 |
||||
a 12 |
||||
c 13 |
||||
} |
||||
|
||||
method 'boo ()V' { |
||||
0 17 |
||||
1 17 |
||||
} |
||||
|
||||
method 'zoo ()V' { |
||||
0 21 |
||||
1 21 |
||||
} |
||||
} |
||||
|
||||
Lines mapping: |
||||
8 <-> 5 |
||||
11 <-> 8 |
||||
12 <-> 9 |
||||
15 <-> 13 |
||||
16 <-> 14 |
||||
20 <-> 18 |
||||
24 <-> 22 |
@ -0,0 +1,39 @@ |
||||
package pkg; |
||||
|
||||
public class TestThrowException { |
||||
Runnable r; |
||||
|
||||
public TestThrowException(int var1) { |
||||
if(var1 > 0) {// 9 |
||||
throw new IllegalArgumentException("xxx");// 10 |
||||
} else { |
||||
this.r = new Runnable() {// 12 |
||||
public void run() { |
||||
boolean var1 = true;// 15 |
||||
} |
||||
}; |
||||
} |
||||
} |
||||
} |
||||
|
||||
class 'pkg/TestThrowException$1' { |
||||
method 'run ()V' { |
||||
0 11 |
||||
1 11 |
||||
} |
||||
} |
||||
|
||||
class 'pkg/TestThrowException' { |
||||
method '<init> (I)V' { |
||||
5 6 |
||||
c 7 |
||||
11 7 |
||||
1b 9 |
||||
} |
||||
} |
||||
|
||||
Lines mapping: |
||||
9 <-> 7 |
||||
10 <-> 8 |
||||
12 <-> 10 |
||||
15 <-> 12 |
@ -0,0 +1,71 @@ |
||||
package pkg; |
||||
|
||||
import java.lang.Exception; |
||||
import java.lang.Override; |
||||
import java.lang.Runnable; |
||||
|
||||
public abstract class TestAnonymousClass { |
||||
void foo(int i) |
||||
throws Exception { |
||||
if (i > 0) { |
||||
I r = new I() { |
||||
public void foo() throws Exception { |
||||
int a = 5; |
||||
int b = 5; |
||||
} |
||||
}; |
||||
r.foo(); |
||||
} |
||||
else { |
||||
final int x =5; |
||||
System.out.println(x); |
||||
} |
||||
} |
||||
|
||||
public static final Runnable R3 = new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
int a =5; |
||||
int b =5; |
||||
} |
||||
}; |
||||
|
||||
|
||||
void boo() { |
||||
int a =5; |
||||
} |
||||
|
||||
void zoo() { |
||||
int a =5; |
||||
} |
||||
|
||||
public static final Runnable R = new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
int a =5; |
||||
int b =5; |
||||
} |
||||
}; |
||||
|
||||
public static final Runnable R1 = new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
int a =5; |
||||
int b =5; |
||||
} |
||||
}; |
||||
|
||||
interface I { |
||||
void foo() throws Exception; |
||||
} |
||||
|
||||
private static class Inner { |
||||
private static Runnable R_I = new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
int a =5; |
||||
int b =5; |
||||
} |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,26 @@ |
||||
package pkg; |
||||
|
||||
import java.lang.Override; |
||||
import java.lang.Runnable; |
||||
|
||||
public abstract class TestLocalClass { |
||||
void foo() { |
||||
int a =5; |
||||
class Local{ |
||||
void foo() { |
||||
int b = 5; |
||||
int v = 5; |
||||
} |
||||
}; |
||||
Local l = new Local(); |
||||
l.foo(); |
||||
} |
||||
|
||||
void boo() { |
||||
int a =5; |
||||
} |
||||
|
||||
void zoo() { |
||||
int a =5; |
||||
} |
||||
} |
@ -0,0 +1,19 @@ |
||||
package pkg; |
||||
|
||||
import java.lang.Override; |
||||
import java.lang.Runnable; |
||||
|
||||
public class TestThrowException { |
||||
Runnable r; |
||||
public TestThrowException(int a) { |
||||
if (a > 0) { |
||||
throw new IllegalArgumentException("xxx"); |
||||
} |
||||
r = new Runnable() { |
||||
@Override |
||||
public void run() { |
||||
int a = 5; |
||||
} |
||||
}; |
||||
} |
||||
} |
Loading…
Reference in new issue