decompiler: do not fail on the invalid bytecode in IDEA
This commit is contained in:
@@ -1,6 +1,4 @@
|
|||||||
/*
|
// 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.
|
||||||
* 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.main.extern;
|
package org.jetbrains.java.decompiler.main.extern;
|
||||||
|
|
||||||
import org.jetbrains.java.decompiler.util.InterpreterUtil;
|
import org.jetbrains.java.decompiler.util.InterpreterUtil;
|
||||||
@@ -33,6 +31,7 @@ public interface IFernflowerPreferences {
|
|||||||
String IDEA_NOT_NULL_ANNOTATION = "inn";
|
String IDEA_NOT_NULL_ANNOTATION = "inn";
|
||||||
String LAMBDA_TO_ANONYMOUS_CLASS = "lac";
|
String LAMBDA_TO_ANONYMOUS_CLASS = "lac";
|
||||||
String BYTECODE_SOURCE_MAPPING = "bsm";
|
String BYTECODE_SOURCE_MAPPING = "bsm";
|
||||||
|
String FAIL_ON_INVALID_BYTECODE = "fib";
|
||||||
|
|
||||||
String LOG_LEVEL = "log";
|
String LOG_LEVEL = "log";
|
||||||
String MAX_PROCESSING_METHOD = "mpm";
|
String MAX_PROCESSING_METHOD = "mpm";
|
||||||
@@ -76,6 +75,7 @@ public interface IFernflowerPreferences {
|
|||||||
defaults.put(IDEA_NOT_NULL_ANNOTATION, "1");
|
defaults.put(IDEA_NOT_NULL_ANNOTATION, "1");
|
||||||
defaults.put(LAMBDA_TO_ANONYMOUS_CLASS, "0");
|
defaults.put(LAMBDA_TO_ANONYMOUS_CLASS, "0");
|
||||||
defaults.put(BYTECODE_SOURCE_MAPPING, "0");
|
defaults.put(BYTECODE_SOURCE_MAPPING, "0");
|
||||||
|
defaults.put(FAIL_ON_INVALID_BYTECODE, "1");
|
||||||
|
|
||||||
defaults.put(LOG_LEVEL, IFernflowerLogger.Severity.INFO.name());
|
defaults.put(LOG_LEVEL, IFernflowerLogger.Severity.INFO.name());
|
||||||
defaults.put(MAX_PROCESSING_METHOD, "0");
|
defaults.put(MAX_PROCESSING_METHOD, "0");
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ package org.jetbrains.java.decompiler.modules.decompiler.exps;
|
|||||||
import org.jetbrains.java.decompiler.code.CodeConstants;
|
import org.jetbrains.java.decompiler.code.CodeConstants;
|
||||||
import org.jetbrains.java.decompiler.main.ClassesProcessor.ClassNode;
|
import org.jetbrains.java.decompiler.main.ClassesProcessor.ClassNode;
|
||||||
import org.jetbrains.java.decompiler.main.DecompilerContext;
|
import org.jetbrains.java.decompiler.main.DecompilerContext;
|
||||||
|
import org.jetbrains.java.decompiler.main.extern.IFernflowerPreferences;
|
||||||
import org.jetbrains.java.decompiler.main.rels.ClassWrapper;
|
import org.jetbrains.java.decompiler.main.rels.ClassWrapper;
|
||||||
import org.jetbrains.java.decompiler.main.rels.MethodWrapper;
|
import org.jetbrains.java.decompiler.main.rels.MethodWrapper;
|
||||||
import org.jetbrains.java.decompiler.modules.decompiler.vars.VarVersionPair;
|
import org.jetbrains.java.decompiler.modules.decompiler.vars.VarVersionPair;
|
||||||
@@ -25,7 +26,7 @@ public class ExprUtil {
|
|||||||
if (wrapper != null) {
|
if (wrapper != null) {
|
||||||
// own class
|
// own class
|
||||||
MethodWrapper methodWrapper = wrapper.getMethodWrapper(CodeConstants.INIT_NAME, descriptor);
|
MethodWrapper methodWrapper = wrapper.getMethodWrapper(CodeConstants.INIT_NAME, descriptor);
|
||||||
if (methodWrapper == null) {
|
if (methodWrapper == null && !DecompilerContext.getOption(IFernflowerPreferences.FAIL_ON_INVALID_BYTECODE)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
mask = methodWrapper.synthParameters;
|
mask = methodWrapper.synthParameters;
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ public class SingleClassesTest {
|
|||||||
public void setUp() throws IOException {
|
public void setUp() throws IOException {
|
||||||
fixture = new DecompilerTestFixture();
|
fixture = new DecompilerTestFixture();
|
||||||
fixture.setUp(IFernflowerPreferences.BYTECODE_SOURCE_MAPPING, "1",
|
fixture.setUp(IFernflowerPreferences.BYTECODE_SOURCE_MAPPING, "1",
|
||||||
IFernflowerPreferences.DUMP_ORIGINAL_LINES, "1");
|
IFernflowerPreferences.DUMP_ORIGINAL_LINES, "1",
|
||||||
|
IFernflowerPreferences.FAIL_ON_INVALID_BYTECODE, "0");
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
|
|||||||
Reference in New Issue
Block a user