IDEA-129221 (tolerate invalid signature attributes)

This commit is contained in:
Roman Shevchenko
2014-09-12 17:26:03 +04:00
parent e2f7d09f37
commit e90f1de039
5 changed files with 124 additions and 78 deletions

View File

@@ -626,12 +626,14 @@ public class ClassWriter {
StructGenericSignatureAttribute attr = (StructGenericSignatureAttribute)mt.getAttributes().getWithKey("Signature");
if (attr != null) {
descriptor = GenericMain.parseMethodSignature(attr.getSignature());
int actualParams = md.params.length;
if (isEnum && init) actualParams -= 2;
if (actualParams != descriptor.params.size()) {
String message = "Inconsistent generic signature in method " + mt.getName() + " " + mt.getDescriptor();
DecompilerContext.getLogger().writeMessage(message, IFernflowerLogger.Severity.WARN);
descriptor = null;
if (descriptor != null) {
int actualParams = md.params.length;
if (isEnum && init) actualParams -= 2;
if (actualParams != descriptor.params.size()) {
String message = "Inconsistent generic signature in method " + mt.getName() + " " + mt.getDescriptor();
DecompilerContext.getLogger().writeMessage(message, IFernflowerLogger.Severity.WARN);
descriptor = null;
}
}
}
}