summaryrefslogtreecommitdiffstats
path: root/src/org/jetbrains/java/decompiler/modules
diff options
context:
space:
mode:
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>2014-09-02 20:56:03 +0400
committerRoman Shevchenko <roman.shevchenko@jetbrains.com>2014-09-03 11:39:32 +0400
commit2df49d32a71818227e80a8628688906f2ede8a6a (patch)
treedced5f5ebf2f860d5683abf6910f180a67f9471d /src/org/jetbrains/java/decompiler/modules
parentc0c83126a69a0c652f343e972f727ffd7f5f10af (diff)
downloadfernflower-2df49d32a71818227e80a8628688906f2ede8a6a.tar
fernflower-2df49d32a71818227e80a8628688906f2ede8a6a.tar.gz
fernflower-2df49d32a71818227e80a8628688906f2ede8a6a.tar.lz
fernflower-2df49d32a71818227e80a8628688906f2ede8a6a.tar.xz
fernflower-2df49d32a71818227e80a8628688906f2ede8a6a.zip
java-decompiler: fixes and cleanups
- unified attribute loading code - common methods for checking member flags - verifying skip() - correct resource closing - typos
Diffstat (limited to 'src/org/jetbrains/java/decompiler/modules')
-rw-r--r--src/org/jetbrains/java/decompiler/modules/decompiler/IdeaNotNullHelper.java2
-rw-r--r--src/org/jetbrains/java/decompiler/modules/decompiler/exps/AssignmentExprent.java47
-rw-r--r--src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java13
-rw-r--r--src/org/jetbrains/java/decompiler/modules/decompiler/sforms/SSAConstructorSparseEx.java3
-rw-r--r--src/org/jetbrains/java/decompiler/modules/decompiler/sforms/SSAUConstructorSparseEx.java3
-rw-r--r--src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarDefinitionHelper.java2
-rw-r--r--src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarTypeProcessor.java2
-rw-r--r--src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarVersionsProcessor.java2
-rw-r--r--src/org/jetbrains/java/decompiler/modules/renamer/IdentifierConverter.java8
9 files changed, 37 insertions, 45 deletions
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/IdeaNotNullHelper.java b/src/org/jetbrains/java/decompiler/modules/decompiler/IdeaNotNullHelper.java
index 9934298..0f5141a 100644
--- a/src/org/jetbrains/java/decompiler/modules/decompiler/IdeaNotNullHelper.java
+++ b/src/org/jetbrains/java/decompiler/modules/decompiler/IdeaNotNullHelper.java
@@ -82,7 +82,7 @@ public class IdeaNotNullHelper {
if (first_param.type == Exprent.EXPRENT_VAR) {
VarExprent var = (VarExprent)first_param;
- boolean thisvar = (mt.getAccessFlags() & CodeConstants.ACC_STATIC) == 0;
+ boolean thisvar = !mt.hasModifier(CodeConstants.ACC_STATIC);
MethodDescriptor md = MethodDescriptor.parseDescriptor(mt.getDescriptor());
VBStyleCollection<StructGeneralAttribute, String> attributes = mt.getAttributes();
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/AssignmentExprent.java b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/AssignmentExprent.java
index 33d30e9..6c6b1f3 100644
--- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/AssignmentExprent.java
+++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/AssignmentExprent.java
@@ -109,43 +109,40 @@ public class AssignmentExprent extends Exprent {
VarType leftType = left.getExprType();
VarType rightType = right.getExprType();
- String res = right.toJava(indent);
-
- if (condtype == CONDITION_NONE &&
- !leftType.isSuperset(rightType) &&
- (rightType.equals(VarType.VARTYPE_OBJECT) || leftType.type != CodeConstants.TYPE_OBJECT)) {
- if (right.getPrecedence() >= FunctionExprent.getPrecedence(FunctionExprent.FUNCTION_CAST)) {
- res = "(" + res + ")";
- }
-
- res = "(" + ExprProcessor.getCastTypeName(leftType) + ")" + res;
- }
-
- StringBuilder buffer = new StringBuilder();
-
- boolean finstat_init = false;
+ boolean fieldInStatInit = false;
if (left.type == Exprent.EXPRENT_FIELD) { // first assignment to a final field. Field name without "this" in front of it
FieldExprent field = (FieldExprent)left;
- if (field.isStatic()) {
- ClassNode node = ((ClassNode)DecompilerContext.getProperty(DecompilerContext.CURRENT_CLASS_NODE));
- if (node != null) {
- StructClass cl = node.classStruct;
- StructField fd = cl.getField(field.getName(), field.getDescriptor().descriptorString);
-
- if (fd != null && (fd.access_flags & CodeConstants.ACC_FINAL) != 0) {
- finstat_init = true;
- }
+ ClassNode node = ((ClassNode)DecompilerContext.getProperty(DecompilerContext.CURRENT_CLASS_NODE));
+ if (node != null) {
+ StructClass cl = node.classStruct;
+ StructField fd = cl.getField(field.getName(), field.getDescriptor().descriptorString);
+ if (fd != null && field.isStatic() && fd.hasModifier(CodeConstants.ACC_FINAL)) {
+ fieldInStatInit = true;
}
}
}
- if (finstat_init) {
+ StringBuilder buffer = new StringBuilder();
+
+ if (fieldInStatInit) {
buffer.append(((FieldExprent)left).getName());
}
else {
buffer.append(left.toJava(indent));
}
+ String res = right.toJava(indent);
+
+ if (condtype == CONDITION_NONE &&
+ !leftType.isSuperset(rightType) &&
+ (rightType.equals(VarType.VARTYPE_OBJECT) || leftType.type != CodeConstants.TYPE_OBJECT)) {
+ if (right.getPrecedence() >= FunctionExprent.getPrecedence(FunctionExprent.FUNCTION_CAST)) {
+ res = "(" + res + ")";
+ }
+
+ res = "(" + ExprProcessor.getCastTypeName(leftType) + ")" + res;
+ }
+
buffer.append(condtype == CONDITION_NONE ? " = " : funceq[condtype]).append(res);
return buffer.toString();
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java
index 1edebc9..04758dc 100644
--- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java
+++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java
@@ -330,20 +330,19 @@ public class InvocationExprent extends Exprent {
List<VarVersionPaar> sigFields = null;
boolean isEnum = false;
if (functype == TYP_INIT) {
- ClassNode newnode = DecompilerContext.getClassProcessor().getMapRootClasses().get(classname);
+ ClassNode newNode = DecompilerContext.getClassProcessor().getMapRootClasses().get(classname);
- if (newnode != null) { // own class
- if (newnode.wrapper != null) {
- sigFields = newnode.wrapper.getMethodWrapper("<init>", stringDescriptor).signatureFields;
+ if (newNode != null) { // own class
+ if (newNode.wrapper != null) {
+ sigFields = newNode.wrapper.getMethodWrapper("<init>", stringDescriptor).signatureFields;
}
else {
- if (newnode.type == ClassNode.CLASS_MEMBER && (newnode.access & CodeConstants.ACC_STATIC) == 0) { // non-static member class
+ if (newNode.type == ClassNode.CLASS_MEMBER && (newNode.access & CodeConstants.ACC_STATIC) == 0) { // non-static member class
sigFields = new ArrayList<VarVersionPaar>(Collections.nCopies(lstParameters.size(), (VarVersionPaar)null));
sigFields.set(0, new VarVersionPaar(-1, 0));
}
}
- isEnum = (newnode.classStruct.access_flags & CodeConstants.ACC_ENUM) != 0 &&
- DecompilerContext.getOption(IFernflowerPreferences.DECOMPILE_ENUM);
+ isEnum = newNode.classStruct.hasModifier(CodeConstants.ACC_ENUM) && DecompilerContext.getOption(IFernflowerPreferences.DECOMPILE_ENUM);
}
}
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/sforms/SSAConstructorSparseEx.java b/src/org/jetbrains/java/decompiler/modules/decompiler/sforms/SSAConstructorSparseEx.java
index 2150f86..dbec793 100644
--- a/src/org/jetbrains/java/decompiler/modules/decompiler/sforms/SSAConstructorSparseEx.java
+++ b/src/org/jetbrains/java/decompiler/modules/decompiler/sforms/SSAConstructorSparseEx.java
@@ -487,8 +487,7 @@ public class SSAConstructorSparseEx {
}
private SFormsFastMapDirect createFirstMap(StructMethod mt) {
-
- boolean thisvar = (mt.getAccessFlags() & CodeConstants.ACC_STATIC) == 0;
+ boolean thisvar = !mt.hasModifier(CodeConstants.ACC_STATIC);
MethodDescriptor md = MethodDescriptor.parseDescriptor(mt.getDescriptor());
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/sforms/SSAUConstructorSparseEx.java b/src/org/jetbrains/java/decompiler/modules/decompiler/sforms/SSAUConstructorSparseEx.java
index 97b6448..fbd652c 100644
--- a/src/org/jetbrains/java/decompiler/modules/decompiler/sforms/SSAUConstructorSparseEx.java
+++ b/src/org/jetbrains/java/decompiler/modules/decompiler/sforms/SSAUConstructorSparseEx.java
@@ -756,8 +756,7 @@ public class SSAUConstructorSparseEx {
}
private SFormsFastMapDirect createFirstMap(StructMethod mt, RootStatement root) {
-
- boolean thisvar = (mt.getAccessFlags() & CodeConstants.ACC_STATIC) == 0;
+ boolean thisvar = !mt.hasModifier(CodeConstants.ACC_STATIC);
MethodDescriptor md = MethodDescriptor.parseDescriptor(mt.getDescriptor());
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarDefinitionHelper.java b/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarDefinitionHelper.java
index 24207ef..fdd6cd5 100644
--- a/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarDefinitionHelper.java
+++ b/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarDefinitionHelper.java
@@ -53,7 +53,7 @@ public class VarDefinitionHelper {
VarNamesCollector vc = DecompilerContext.getVarNamesCollector();
- boolean thisvar = (mt.getAccessFlags() & CodeConstants.ACC_STATIC) == 0;
+ boolean thisvar = !mt.hasModifier(CodeConstants.ACC_STATIC);
MethodDescriptor md = MethodDescriptor.parseDescriptor(mt.getDescriptor());
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarTypeProcessor.java b/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarTypeProcessor.java
index d7d3d2e..a21d71f 100644
--- a/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarTypeProcessor.java
+++ b/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarTypeProcessor.java
@@ -49,7 +49,7 @@ public class VarTypeProcessor {
StructMethod mt = (StructMethod)DecompilerContext.getProperty(DecompilerContext.CURRENT_METHOD);
// method descriptor
- boolean thisvar = (mt.getAccessFlags() & CodeConstants.ACC_STATIC) == 0;
+ boolean thisvar = !mt.hasModifier(CodeConstants.ACC_STATIC);
MethodDescriptor md = (MethodDescriptor)DecompilerContext.getProperty(DecompilerContext.CURRENT_METHOD_DESCRIPTOR);
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarVersionsProcessor.java b/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarVersionsProcessor.java
index 09d8def..06b7216 100644
--- a/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarVersionsProcessor.java
+++ b/src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarVersionsProcessor.java
@@ -170,7 +170,7 @@ public class VarVersionsProcessor {
}
}
- boolean is_method_static = (mt.getAccessFlags() & CodeConstants.ACC_STATIC) != 0;
+ boolean is_method_static = mt.hasModifier(CodeConstants.ACC_STATIC);
final HashMap<VarVersionPaar, Integer> mapMergedVersions = new HashMap<VarVersionPaar, Integer>();
diff --git a/src/org/jetbrains/java/decompiler/modules/renamer/IdentifierConverter.java b/src/org/jetbrains/java/decompiler/modules/renamer/IdentifierConverter.java
index 546ece3..adff502 100644
--- a/src/org/jetbrains/java/decompiler/modules/renamer/IdentifierConverter.java
+++ b/src/org/jetbrains/java/decompiler/modules/renamer/IdentifierConverter.java
@@ -232,11 +232,10 @@ public class IdentifierConverter {
StructMethod mt = methods.get(i);
String key = methods.getKey(i);
- int access_flags = mt.getAccessFlags();
- boolean isPrivate = ((access_flags & CodeConstants.ACC_PRIVATE) != 0);
+ boolean isPrivate = mt.hasModifier(CodeConstants.ACC_PRIVATE);
String name = mt.getName();
- if (!cl.isOwn() || (access_flags & CodeConstants.ACC_NATIVE) != 0) {
+ if (!cl.isOwn() || mt.hasModifier(CodeConstants.ACC_NATIVE)) {
// external and native methods must not be renamed
if (!isPrivate) {
names.put(key, name);
@@ -426,8 +425,7 @@ public class IdentifierConverter {
break;
}
else {
-
- boolean isInterface = ((clstr.access_flags & CodeConstants.ACC_INTERFACE) != 0);
+ boolean isInterface = clstr.hasModifier(CodeConstants.ACC_INTERFACE);
boolean found_parent = false;
if (isInterface) {