parent
023bb2462a
commit
8b9687ed20
@ -0,0 +1,56 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. |
||||||
|
*/ |
||||||
|
package org.jetbrains.java.decompiler.struct.attr; |
||||||
|
|
||||||
|
import org.jetbrains.java.decompiler.struct.consts.ConstantPool; |
||||||
|
import org.jetbrains.java.decompiler.util.DataInputFullStream; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.Collections; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/* |
||||||
|
u1 parameters_count; |
||||||
|
{ u2 name_index; |
||||||
|
u2 access_flags; |
||||||
|
} parameters[parameters_count]; |
||||||
|
*/ |
||||||
|
public class StructMethodParametersAttribute extends StructGeneralAttribute { |
||||||
|
private List<Entry> myEntries; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void initContent(DataInputFullStream data, ConstantPool pool) throws IOException { |
||||||
|
int len = data.readUnsignedByte(); |
||||||
|
List<Entry> entries; |
||||||
|
if (len > 0) { |
||||||
|
entries = new ArrayList<>(len); |
||||||
|
|
||||||
|
for (int i = 0; i < len; i++) { |
||||||
|
int nameIndex = data.readUnsignedShort(); |
||||||
|
String name = nameIndex != 0 ? pool.getPrimitiveConstant(nameIndex).getString() : null; |
||||||
|
int access_flags = data.readUnsignedShort(); |
||||||
|
entries.add(new Entry(name, access_flags)); |
||||||
|
} |
||||||
|
} |
||||||
|
else { |
||||||
|
entries = Collections.emptyList(); |
||||||
|
} |
||||||
|
myEntries = Collections.unmodifiableList(entries); |
||||||
|
} |
||||||
|
|
||||||
|
public List<Entry> getEntries() { |
||||||
|
return myEntries; |
||||||
|
} |
||||||
|
|
||||||
|
public static class Entry { |
||||||
|
public final String myName; |
||||||
|
public final int myAccessFlags; |
||||||
|
|
||||||
|
public Entry(String name, int accessFlags) { |
||||||
|
myName = name; |
||||||
|
myAccessFlags = accessFlags; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
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,125 @@ |
|||||||
|
package decompiler; |
||||||
|
|
||||||
|
public class TestMethodParametersAttr { |
||||||
|
TestMethodParametersAttr(int p01) { |
||||||
|
}// 19 |
||||||
|
|
||||||
|
void m1(int p02) { |
||||||
|
}// 20 |
||||||
|
|
||||||
|
static void m2(int p03) { |
||||||
|
}// 21 |
||||||
|
|
||||||
|
void local() { |
||||||
|
class Local { |
||||||
|
Local(final int this$0) { |
||||||
|
}// 36 |
||||||
|
|
||||||
|
void m(int p32) { |
||||||
|
}// 37 |
||||||
|
} |
||||||
|
|
||||||
|
}// 39 |
||||||
|
|
||||||
|
abstract static class C4 { |
||||||
|
abstract void m1(int p51); |
||||||
|
|
||||||
|
abstract void m2(final int p52); |
||||||
|
} |
||||||
|
|
||||||
|
abstract class C3 { |
||||||
|
abstract void m1(int p51); |
||||||
|
|
||||||
|
abstract void m2(final int p52); |
||||||
|
} |
||||||
|
|
||||||
|
interface I1 { |
||||||
|
void m1(int p41); |
||||||
|
|
||||||
|
void m2(final int p42); |
||||||
|
} |
||||||
|
|
||||||
|
static class C2 { |
||||||
|
C2(int p21) { |
||||||
|
}// 29 |
||||||
|
|
||||||
|
void m1(int p22) { |
||||||
|
}// 30 |
||||||
|
|
||||||
|
static void m2(int p23) { |
||||||
|
}// 31 |
||||||
|
} |
||||||
|
|
||||||
|
class C1 { |
||||||
|
C1(final int this$0) { |
||||||
|
}// 24 |
||||||
|
|
||||||
|
void m(int p12) { |
||||||
|
}// 25 |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
class 'decompiler/TestMethodParametersAttr' { |
||||||
|
method '<init> (I)V' { |
||||||
|
4 4 |
||||||
|
} |
||||||
|
|
||||||
|
method 'm1 (I)V' { |
||||||
|
0 7 |
||||||
|
} |
||||||
|
|
||||||
|
method 'm2 (I)V' { |
||||||
|
0 10 |
||||||
|
} |
||||||
|
|
||||||
|
method 'local ()V' { |
||||||
|
0 21 |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
class 'decompiler/TestMethodParametersAttr$1Local' { |
||||||
|
method '<init> (Ldecompiler/TestMethodParametersAttr;I)V' { |
||||||
|
9 15 |
||||||
|
} |
||||||
|
|
||||||
|
method 'm (I)V' { |
||||||
|
0 18 |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
class 'decompiler/TestMethodParametersAttr$C2' { |
||||||
|
method '<init> (I)V' { |
||||||
|
4 43 |
||||||
|
} |
||||||
|
|
||||||
|
method 'm1 (I)V' { |
||||||
|
0 46 |
||||||
|
} |
||||||
|
|
||||||
|
method 'm2 (I)V' { |
||||||
|
0 49 |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
class 'decompiler/TestMethodParametersAttr$C1' { |
||||||
|
method '<init> (Ldecompiler/TestMethodParametersAttr;I)V' { |
||||||
|
9 54 |
||||||
|
} |
||||||
|
|
||||||
|
method 'm (I)V' { |
||||||
|
0 57 |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
Lines mapping: |
||||||
|
19 <-> 5 |
||||||
|
20 <-> 8 |
||||||
|
21 <-> 11 |
||||||
|
24 <-> 55 |
||||||
|
25 <-> 58 |
||||||
|
29 <-> 44 |
||||||
|
30 <-> 47 |
||||||
|
31 <-> 50 |
||||||
|
36 <-> 16 |
||||||
|
37 <-> 19 |
||||||
|
39 <-> 22 |
@ -0,0 +1,56 @@ |
|||||||
|
/* |
||||||
|
* 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 decompiler; |
||||||
|
|
||||||
|
// compile with java 8: javap -parameters TestMethodParametersAttr.java
|
||||||
|
public class TestMethodParametersAttr { |
||||||
|
TestMethodParametersAttr(int p01) { } |
||||||
|
void m1(int p02) { } |
||||||
|
static void m2(int p03) { } |
||||||
|
|
||||||
|
class C1 { |
||||||
|
C1(int p11) { } |
||||||
|
void m(int p12) { } |
||||||
|
} |
||||||
|
|
||||||
|
static class C2 { |
||||||
|
C2(int p21) { } |
||||||
|
void m1(int p22) { } |
||||||
|
static void m2(int p23) { } |
||||||
|
} |
||||||
|
|
||||||
|
void local() { |
||||||
|
class Local { |
||||||
|
Local(int p31) { } |
||||||
|
void m(int p32) { } |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
interface I1 { |
||||||
|
void m1(int p41); |
||||||
|
void m2(final int p42); |
||||||
|
} |
||||||
|
|
||||||
|
abstract class C3 { |
||||||
|
abstract void m1(int p51); |
||||||
|
abstract void m2(final int p52); |
||||||
|
} |
||||||
|
|
||||||
|
static abstract class C4 { |
||||||
|
abstract void m1(int p51); |
||||||
|
abstract void m2(final int p52); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue