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