mirror of
https://github.com/moparisthebest/fernflower
synced 2025-02-19 20:21:51 -05:00
false signatures consistency warning on enums
This commit is contained in:
parent
ed04ea2d69
commit
6e303d8592
@ -747,32 +747,34 @@ public class ClassWriter {
|
|||||||
bufstrwriter.write("default ");
|
bufstrwriter.write("default ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String name = mt.getName();
|
||||||
|
if("<init>".equals(name)) {
|
||||||
|
if(node.type == ClassNode.CLASS_ANONYMOUS) {
|
||||||
|
name = "";
|
||||||
|
dinit = true;
|
||||||
|
} else {
|
||||||
|
name = node.simpleName;
|
||||||
|
init = true;
|
||||||
|
}
|
||||||
|
} else if("<clinit>".equals(name)) {
|
||||||
|
name = "";
|
||||||
|
clinit = true;
|
||||||
|
}
|
||||||
|
|
||||||
GenericMethodDescriptor descriptor = null;
|
GenericMethodDescriptor descriptor = null;
|
||||||
if(DecompilerContext.getOption(IFernflowerPreferences.DECOMPILE_GENERIC_SIGNATURES)) {
|
if(DecompilerContext.getOption(IFernflowerPreferences.DECOMPILE_GENERIC_SIGNATURES)) {
|
||||||
StructGenericSignatureAttribute attr = (StructGenericSignatureAttribute)mt.getAttributes().getWithKey("Signature");
|
StructGenericSignatureAttribute attr = (StructGenericSignatureAttribute)mt.getAttributes().getWithKey("Signature");
|
||||||
if(attr != null) {
|
if(attr != null) {
|
||||||
descriptor = GenericMain.parseMethodSignature(attr.getSignature());
|
descriptor = GenericMain.parseMethodSignature(attr.getSignature());
|
||||||
if(md.params.length != descriptor.params.size()) {
|
int actualParams = md.params.length;
|
||||||
|
if(isEnum && init) actualParams -= 2;
|
||||||
|
if(actualParams != descriptor.params.size()) {
|
||||||
DecompilerContext.getLogger().writeMessage("Inconsistent generic signature in method "+mt.getName()+" "+mt.getDescriptor(), IFernflowerLogger.WARNING);
|
DecompilerContext.getLogger().writeMessage("Inconsistent generic signature in method "+mt.getName()+" "+mt.getDescriptor(), IFernflowerLogger.WARNING);
|
||||||
descriptor = null;
|
descriptor = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String name = mt.getName();
|
|
||||||
if("<init>".equals(name)) {
|
|
||||||
if(node.type == ClassNode.CLASS_ANONYMOUS) {
|
|
||||||
name = "";
|
|
||||||
dinit = true;
|
|
||||||
} else {
|
|
||||||
name = node.simpleName;
|
|
||||||
init = true;
|
|
||||||
}
|
|
||||||
} else if("<clinit>".equals(name)) {
|
|
||||||
name = "";
|
|
||||||
clinit = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean throwsExceptions = false;
|
boolean throwsExceptions = false;
|
||||||
|
|
||||||
int param_count_explicit = 0;
|
int param_count_explicit = 0;
|
||||||
@ -780,7 +782,7 @@ public class ClassWriter {
|
|||||||
if(!clinit && !dinit) {
|
if(!clinit && !dinit) {
|
||||||
|
|
||||||
boolean thisvar = (mt.getAccessFlags() & CodeConstants.ACC_STATIC) == 0;
|
boolean thisvar = (mt.getAccessFlags() & CodeConstants.ACC_STATIC) == 0;
|
||||||
|
|
||||||
// formal type parameters
|
// formal type parameters
|
||||||
if(descriptor != null && !descriptor.fparameters.isEmpty()) {
|
if(descriptor != null && !descriptor.fparameters.isEmpty()) {
|
||||||
bufstrwriter.write("<");
|
bufstrwriter.write("<");
|
||||||
@ -830,8 +832,9 @@ public class ClassWriter {
|
|||||||
|
|
||||||
boolean firstpar = true;
|
boolean firstpar = true;
|
||||||
int index = isEnum && init ? 3 : thisvar ? 1 : 0;
|
int index = isEnum && init ? 3 : thisvar ? 1 : 0;
|
||||||
int start = isEnum && init ? 2 : 0;
|
int start = isEnum && init && descriptor == null ? 2 : 0;
|
||||||
for(int i=start;i<md.params.length;i++) {
|
int params = descriptor == null ? md.params.length : descriptor.params.size();
|
||||||
|
for(int i=start;i<params;i++) {
|
||||||
if(signFields == null || signFields.get(i) == null) {
|
if(signFields == null || signFields.get(i) == null) {
|
||||||
|
|
||||||
if(!firstpar) {
|
if(!firstpar) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user