This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-bcel.git
The following commit(s) were added to refs/heads/master by this push: new 504b7ce No need to nest so much. 504b7ce is described below commit 504b7ce7be8ca4a660c91031981a35399ae7299d Author: Gary Gregory <gardgreg...@gmail.com> AuthorDate: Thu Mar 4 17:49:55 2021 -0500 No need to nest so much. --- src/examples/Mini/ASCII_CharStream.java | 8 +- src/examples/Mini/ASTExpr.java | 5 +- src/examples/Mini/ASTFactor.java | 3 +- src/examples/Mini/ASTTerm.java | 3 +- src/examples/Mini/Function.java | 3 +- src/examples/Mini/MiniC.java | 9 +- src/examples/Mini/MiniParser.java | 3 +- src/examples/Mini/MiniParserTokenManager.java | 32 +++---- src/examples/Mini/Variable.java | 3 +- .../org/apache/bcel/classfile/LineNumberTable.java | 3 +- .../org/apache/bcel/classfile/StackMapEntry.java | 35 ++++---- .../org/apache/bcel/classfile/StackMapType.java | 6 +- .../org/apache/bcel/generic/BranchInstruction.java | 5 +- src/main/java/org/apache/bcel/generic/ICONST.java | 5 +- .../apache/bcel/generic/InstructionComparator.java | 12 +-- .../apache/bcel/generic/InstructionFactory.java | 18 ++-- .../org/apache/bcel/generic/InstructionList.java | 6 +- src/main/java/org/apache/bcel/generic/Type.java | 98 ++++++++++++---------- src/main/java/org/apache/bcel/util/BCELifier.java | 15 ++-- .../java/org/apache/bcel/util/ClassLoader.java | 5 +- .../org/apache/bcel/util/InstructionFinder.java | 5 +- .../bcel/verifier/statics/Pass2Verifier.java | 5 +- .../structurals/InstConstraintVisitor.java | 16 ++-- .../bcel/verifier/structurals/LocalVariables.java | 6 +- .../bcel/verifier/structurals/OperandStack.java | 7 +- 25 files changed, 159 insertions(+), 157 deletions(-) diff --git a/src/examples/Mini/ASCII_CharStream.java b/src/examples/Mini/ASCII_CharStream.java index 002032c..c55cb72 100644 --- a/src/examples/Mini/ASCII_CharStream.java +++ b/src/examples/Mini/ASCII_CharStream.java @@ -128,9 +128,8 @@ public final class ASCII_CharStream { inputStream.close(); throw new java.io.IOException(); - } else { - maxNextCharInd += i; } + maxNextCharInd += i; return; } catch(final java.io.IOException e) { @@ -307,10 +306,9 @@ public final class ASCII_CharStream { if (bufpos >= tokenBegin) { return new String(buffer, tokenBegin, bufpos - tokenBegin + 1); - } else { - return new String(buffer, tokenBegin, bufsize - tokenBegin) + - new String(buffer, 0, bufpos + 1); } + return new String(buffer, tokenBegin, bufsize - tokenBegin) + + new String(buffer, 0, bufpos + 1); } static public char[] GetSuffix(final int len) diff --git a/src/examples/Mini/ASTExpr.java b/src/examples/Mini/ASTExpr.java index 3c91d31..4e0c1de 100644 --- a/src/examples/Mini/ASTExpr.java +++ b/src/examples/Mini/ASTExpr.java @@ -136,13 +136,12 @@ implements MiniParserConstants, MiniParserTreeConstants, org.apache.bcel.Constan if((kind == -1) && (unop == -1)) { return exprs[0].traverse(env); // --> Replaced by successor - } else { - for(int i=0; i < exprs.length; i++) { + } + for(int i=0; i < exprs.length; i++) { exprs[i] = exprs[i].traverse(env); // References may change } return this; - } } /** diff --git a/src/examples/Mini/ASTFactor.java b/src/examples/Mini/ASTFactor.java index 56f82cd..305e78b 100644 --- a/src/examples/Mini/ASTFactor.java +++ b/src/examples/Mini/ASTFactor.java @@ -47,8 +47,7 @@ public class ASTFactor extends ASTExpr { public ASTExpr traverse(final Environment env) { if(kind == -1) { return exprs[0].traverse(env); - } else { - return new ASTExpr(exprs, kind, line, column).traverse(env); } + return new ASTExpr(exprs, kind, line, column).traverse(env); } } diff --git a/src/examples/Mini/ASTTerm.java b/src/examples/Mini/ASTTerm.java index 41936ad..60065a3 100644 --- a/src/examples/Mini/ASTTerm.java +++ b/src/examples/Mini/ASTTerm.java @@ -47,8 +47,7 @@ public class ASTTerm extends ASTExpr { public ASTExpr traverse(final Environment env) { if(kind == -1) { return exprs[0].traverse(env); - } else { - return new ASTExpr(exprs, kind, line, column).traverse(env); } + return new ASTExpr(exprs, kind, line, column).traverse(env); } } diff --git a/src/examples/Mini/Function.java b/src/examples/Mini/Function.java index b584a69..6235646 100644 --- a/src/examples/Mini/Function.java +++ b/src/examples/Mini/Function.java @@ -62,9 +62,8 @@ public class Function implements org.apache.bcel.Constants, EnvEntry { if(!reserved) { return prefix + " declared at line " + line + ", column " + column; - } else { - return prefix + " <predefined function>"; } + return prefix + " <predefined function>"; } public int getNoArgs() { return no_args; } diff --git a/src/examples/Mini/MiniC.java b/src/examples/Mini/MiniC.java index 4b333d9..5d2e133 100644 --- a/src/examples/Mini/MiniC.java +++ b/src/examples/Mini/MiniC.java @@ -168,17 +168,16 @@ public class MiniC implements org.apache.bcel.Constants { final String str = Integer.toString(n); final int diff = len - str.length(); - if(diff > 0) { - final char[] chs = new char[diff]; + if(diff <= 0) { + return str; + } + final char[] chs = new char[diff]; for(int i=0; i < diff; i++) { chs[i] = ' '; } return new String(chs) + str; - } else { - return str; - } } final static void addWarning(final String err) { warnings.addElement(err); } diff --git a/src/examples/Mini/MiniParser.java b/src/examples/Mini/MiniParser.java index 86c2228..f1921ec 100644 --- a/src/examples/Mini/MiniParser.java +++ b/src/examples/Mini/MiniParser.java @@ -1020,9 +1020,8 @@ public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, Mini static private int jj_ntk() { if ((jj_nt=token.next) == null) { return (jj_ntk = (token.next=MiniParserTokenManager.getNextToken()).kind); - } else { - return (jj_ntk = jj_nt.kind); } + return (jj_ntk = jj_nt.kind); } static private java.util.Vector<int[]> jj_expentries = new java.util.Vector<>(); diff --git a/src/examples/Mini/MiniParserTokenManager.java b/src/examples/Mini/MiniParserTokenManager.java index 93be21f..f5ef6b6 100644 --- a/src/examples/Mini/MiniParserTokenManager.java +++ b/src/examples/Mini/MiniParserTokenManager.java @@ -267,13 +267,16 @@ static private int jjMoveStringLiteralDfa1_0(final long active0) case 61: if ((active0 & 0x40000L) != 0L) { return jjStopAtPos(1, 18); - } else if ((active0 & 0x80000L) != 0L) { - return jjStopAtPos(1, 19); - } else if ((active0 & 0x100000L) != 0L) { - return jjStopAtPos(1, 20); - } else if ((active0 & 0x200000L) != 0L) { - return jjStopAtPos(1, 21); - } + } + if ((active0 & 0x80000L) != 0L) { + return jjStopAtPos(1, 19); + } + if ((active0 & 0x100000L) != 0L) { + return jjStopAtPos(1, 20); + } + if ((active0 & 0x200000L) != 0L) { + return jjStopAtPos(1, 21); + } break; case 65: return jjMoveStringLiteralDfa2_0(active0, 0x800000L); @@ -374,9 +377,10 @@ static private int jjMoveStringLiteralDfa3_0(final long old0, long active0) case 69: if ((active0 & 0x1000L) != 0L) { return jjStartNfaWithStates_0(3, 12, 1); - } else if ((active0 & 0x1000000L) != 0L) { - return jjStartNfaWithStates_0(3, 24, 1); } + if ((active0 & 0x1000000L) != 0L) { + return jjStartNfaWithStates_0(3, 24, 1); + } break; case 78: if ((active0 & 0x800L) != 0L) { @@ -407,9 +411,10 @@ static private int jjMoveStringLiteralDfa4_0(final long old0, long active0) case 69: if ((active0 & 0x800000L) != 0L) { return jjStartNfaWithStates_0(4, 23, 1); - } else if ((active0 & 0x2000000000L) != 0L) { - return jjStartNfaWithStates_0(4, 37, 1); } + if ((active0 & 0x2000000000L) != 0L) { + return jjStartNfaWithStates_0(4, 37, 1); + } break; default : break; @@ -626,9 +631,8 @@ static public void SwitchTo(final int lexState) if (lexState >= 2 || lexState < 0) { throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); -} else { - curLexState = lexState; } +curLexState = lexState; } static private Token jjFillToken() @@ -713,7 +717,7 @@ public static Token getNextToken() } return matchedToken; } - else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) { if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) { diff --git a/src/examples/Mini/Variable.java b/src/examples/Mini/Variable.java index 4008645..ff36619 100644 --- a/src/examples/Mini/Variable.java +++ b/src/examples/Mini/Variable.java @@ -47,9 +47,8 @@ public class Variable implements EnvEntry { public String toString() { if(!reserved) { return var_name + " declared at line " + line + ", column " + column; - } else { - return var_name + " <reserved key word>"; } + return var_name + " <reserved key word>"; } public ASTIdent getName() { return name; } diff --git a/src/main/java/org/apache/bcel/classfile/LineNumberTable.java b/src/main/java/org/apache/bcel/classfile/LineNumberTable.java index 961430b..042ebf0 100644 --- a/src/main/java/org/apache/bcel/classfile/LineNumberTable.java +++ b/src/main/java/org/apache/bcel/classfile/LineNumberTable.java @@ -168,7 +168,8 @@ public final class LineNumberTable extends Attribute { final int j = lineNumberTable[i].getStartPC(); if (j == pos) { return lineNumberTable[i].getLineNumber(); - } else if (pos < j) { + } + if (pos < j) { r = i - 1; } else { l = i + 1; diff --git a/src/main/java/org/apache/bcel/classfile/StackMapEntry.java b/src/main/java/org/apache/bcel/classfile/StackMapEntry.java index 9a11104..7118eae 100644 --- a/src/main/java/org/apache/bcel/classfile/StackMapEntry.java +++ b/src/main/java/org/apache/bcel/classfile/StackMapEntry.java @@ -236,33 +236,38 @@ public final class StackMapEntry implements Node, Cloneable int getMapEntrySize() { if (frameType >= Const.SAME_FRAME && frameType <= Const.SAME_FRAME_MAX) { return 1; - } else if (frameType >= Const.SAME_LOCALS_1_STACK_ITEM_FRAME && + } + if (frameType >= Const.SAME_LOCALS_1_STACK_ITEM_FRAME && frameType <= Const.SAME_LOCALS_1_STACK_ITEM_FRAME_MAX) { return 1 + (typesOfStackItems[0].hasIndex() ? 3 : 1); - } else if (frameType == Const.SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED) { + } + if (frameType == Const.SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED) { return 3 + (typesOfStackItems[0].hasIndex() ? 3 : 1); - } else if (frameType >= Const.CHOP_FRAME && frameType <= Const.CHOP_FRAME_MAX) { + } + if (frameType >= Const.CHOP_FRAME && frameType <= Const.CHOP_FRAME_MAX) { return 3; - } else if (frameType == Const.SAME_FRAME_EXTENDED) { + } + if (frameType == Const.SAME_FRAME_EXTENDED) { return 3; - } else if (frameType >= Const.APPEND_FRAME && frameType <= Const.APPEND_FRAME_MAX) { + } + if (frameType >= Const.APPEND_FRAME && frameType <= Const.APPEND_FRAME_MAX) { int len = 3; for (final StackMapType types_of_local : typesOfLocals) { len += types_of_local.hasIndex() ? 3 : 1; } return len; - } else if (frameType == Const.FULL_FRAME) { - int len = 7; - for (final StackMapType types_of_local : typesOfLocals) { - len += types_of_local.hasIndex() ? 3 : 1; - } - for (final StackMapType types_of_stack_item : typesOfStackItems) { - len += types_of_stack_item.hasIndex() ? 3 : 1; - } - return len; - } else { + } + if (frameType != Const.FULL_FRAME) { throw new IllegalStateException("Invalid StackMap frameType: " + frameType); } + int len = 7; + for (final StackMapType types_of_local : typesOfLocals) { + len += types_of_local.hasIndex() ? 3 : 1; + } + for (final StackMapType types_of_stack_item : typesOfStackItems) { + len += types_of_stack_item.hasIndex() ? 3 : 1; + } + return len; } diff --git a/src/main/java/org/apache/bcel/classfile/StackMapType.java b/src/main/java/org/apache/bcel/classfile/StackMapType.java index 4010642..be47f82 100644 --- a/src/main/java/org/apache/bcel/classfile/StackMapType.java +++ b/src/main/java/org/apache/bcel/classfile/StackMapType.java @@ -119,11 +119,11 @@ public final class StackMapType implements Cloneable { return ", class=<unknown>"; } return ", class=" + constantPool.constantToString(index, Const.CONSTANT_Class); - } else if (type == Const.ITEM_NewObject) { + } + if (type == Const.ITEM_NewObject) { return ", offset=" + index; - } else { - return ""; } + return ""; } diff --git a/src/main/java/org/apache/bcel/generic/BranchInstruction.java b/src/main/java/org/apache/bcel/generic/BranchInstruction.java index 1413fff..58a7876 100644 --- a/src/main/java/org/apache/bcel/generic/BranchInstruction.java +++ b/src/main/java/org/apache/bcel/generic/BranchInstruction.java @@ -226,11 +226,10 @@ public abstract class BranchInstruction extends Instruction implements Instructi */ @Override public void updateTarget( final InstructionHandle old_ih, final InstructionHandle new_ih ) { - if (target == old_ih) { - setTarget(new_ih); - } else { + if (target != old_ih) { throw new ClassGenException("Not targeting " + old_ih + ", but " + target); } + setTarget(new_ih); } diff --git a/src/main/java/org/apache/bcel/generic/ICONST.java b/src/main/java/org/apache/bcel/generic/ICONST.java index 7404a3e..33c7d18 100644 --- a/src/main/java/org/apache/bcel/generic/ICONST.java +++ b/src/main/java/org/apache/bcel/generic/ICONST.java @@ -38,11 +38,10 @@ public class ICONST extends Instruction implements ConstantPushInstruction { public ICONST(final int i) { super(org.apache.bcel.Const.ICONST_0, (short) 1); - if ((i >= -1) && (i <= 5)) { - super.setOpcode((short) (org.apache.bcel.Const.ICONST_0 + i)); // Even works for i == -1 - } else { + if ((i < -1) || (i > 5)) { throw new ClassGenException("ICONST can be used only for value between -1 and 5: " + i); } + super.setOpcode((short) (org.apache.bcel.Const.ICONST_0 + i)); // Even works for i == -1 value = i; } diff --git a/src/main/java/org/apache/bcel/generic/InstructionComparator.java b/src/main/java/org/apache/bcel/generic/InstructionComparator.java index a31e55a..e3f5f53 100644 --- a/src/main/java/org/apache/bcel/generic/InstructionComparator.java +++ b/src/main/java/org/apache/bcel/generic/InstructionComparator.java @@ -40,17 +40,19 @@ public interface InstructionComparator { return false; // } else if (i1 == i2) { TODO consider adding this shortcut // return true; // this must be AFTER the BI test - } else if (i1 instanceof ConstantPushInstruction) { + } + if (i1 instanceof ConstantPushInstruction) { return ((ConstantPushInstruction) i1).getValue().equals( ((ConstantPushInstruction) i2).getValue()); - } else if (i1 instanceof IndexedInstruction) { + } + if (i1 instanceof IndexedInstruction) { return ((IndexedInstruction) i1).getIndex() == ((IndexedInstruction) i2) .getIndex(); - } else if (i1 instanceof NEWARRAY) { + } + if (i1 instanceof NEWARRAY) { return ((NEWARRAY) i1).getTypecode() == ((NEWARRAY) i2).getTypecode(); - } else { - return true; } + return true; } return false; }; diff --git a/src/main/java/org/apache/bcel/generic/InstructionFactory.java b/src/main/java/org/apache/bcel/generic/InstructionFactory.java index 74d731b..967f622 100644 --- a/src/main/java/org/apache/bcel/generic/InstructionFactory.java +++ b/src/main/java/org/apache/bcel/generic/InstructionFactory.java @@ -621,14 +621,14 @@ public class InstructionFactory implements InstructionConstants { throw new IllegalArgumentException("Could not find instruction: " + name, e); } return i; - } else if ((src_type instanceof ReferenceType) && (dest_type instanceof ReferenceType)) { - if (dest_type instanceof ArrayType) { - return new CHECKCAST(cp.addArrayClass((ArrayType) dest_type)); - } - return new CHECKCAST(cp.addClass(((ObjectType) dest_type).getClassName())); - } else { + } + if (!(src_type instanceof ReferenceType) || !(dest_type instanceof ReferenceType)) { throw new IllegalArgumentException("Cannot cast " + src_type + " to " + dest_type); } + if (dest_type instanceof ArrayType) { + return new CHECKCAST(cp.addArrayClass((ArrayType) dest_type)); + } + return new CHECKCAST(cp.addClass(((ObjectType) dest_type).getClassName())); } @@ -685,11 +685,11 @@ public class InstructionFactory implements InstructionConstants { if (dim == 1) { if (t instanceof ObjectType) { return new ANEWARRAY(cp.addClass((ObjectType) t)); - } else if (t instanceof ArrayType) { + } + if (t instanceof ArrayType) { return new ANEWARRAY(cp.addArrayClass((ArrayType) t)); - } else { - return new NEWARRAY(t.getType()); } + return new NEWARRAY(t.getType()); } ArrayType at; if (t instanceof ArrayType) { diff --git a/src/main/java/org/apache/bcel/generic/InstructionList.java b/src/main/java/org/apache/bcel/generic/InstructionList.java index 53ce717..15bb377 100644 --- a/src/main/java/org/apache/bcel/generic/InstructionList.java +++ b/src/main/java/org/apache/bcel/generic/InstructionList.java @@ -117,7 +117,8 @@ public class InstructionList implements Iterable<InstructionHandle> { final int j = pos[i]; if (j == target) { return ihs[i]; - } else if (target < j) { + } + if (target < j) { r = i - 1; } else { l = i + 1; @@ -627,7 +628,8 @@ public class InstructionList implements Iterable<InstructionHandle> { for (InstructionHandle ih = start; ih != end.getNext(); ih = ih.getNext()) { if (ih == null) { throw new ClassGenException("Invalid range: From " + start + " to " + end); - } else if (ih == target) { + } + if (ih == target) { throw new ClassGenException("Invalid range: From " + start + " to " + end + " contains target " + target); } } diff --git a/src/main/java/org/apache/bcel/generic/Type.java b/src/main/java/org/apache/bcel/generic/Type.java index 4c3a6ba..f0d4c05 100644 --- a/src/main/java/org/apache/bcel/generic/Type.java +++ b/src/main/java/org/apache/bcel/generic/Type.java @@ -194,24 +194,24 @@ public abstract class Type { //corrected concurrent private static field acess wrap(CONSUMED_CHARS, 1); return BasicType.getType(type); - } else if (type == Const.T_ARRAY) { - int dim = 0; - do { // Count dimensions - dim++; - } while (signature.charAt(dim) == '['); - // Recurse, but just once, if the signature is ok - final Type t = getType(signature.substring(dim)); - //corrected concurrent private static field acess - // consumed_chars += dim; // update counter - is replaced by - final int _temp = unwrap(CONSUMED_CHARS) + dim; - wrap(CONSUMED_CHARS, _temp); - return new ArrayType(t, dim); - } else { // type == T_REFERENCE + } + if (type != Const.T_ARRAY) { // type == T_REFERENCE // Utility.typeSignatureToString understands how to parse generic types. final String parsedSignature = Utility.typeSignatureToString(signature, false); wrap(CONSUMED_CHARS, parsedSignature.length() + 2); // "Lblabla;" `L' and `;' are removed return ObjectType.getInstance(parsedSignature.replace('/', '.')); } + int dim = 0; + do { // Count dimensions + dim++; + } while (signature.charAt(dim) == '['); + // Recurse, but just once, if the signature is ok + final Type t = getType(signature.substring(dim)); + //corrected concurrent private static field acess + // consumed_chars += dim; // update counter - is replaced by + final int _temp = unwrap(CONSUMED_CHARS) + dim; + wrap(CONSUMED_CHARS, _temp); + return new ArrayType(t, dim); } @@ -274,33 +274,41 @@ public abstract class Type { */ if (cl.isArray()) { return getType(cl.getName()); - } else if (cl.isPrimitive()) { - if (cl == Integer.TYPE) { - return INT; - } else if (cl == Void.TYPE) { - return VOID; - } else if (cl == Double.TYPE) { - return DOUBLE; - } else if (cl == Float.TYPE) { - return FLOAT; - } else if (cl == Boolean.TYPE) { - return BOOLEAN; - } else if (cl == Byte.TYPE) { - return BYTE; - } else if (cl == Short.TYPE) { - return SHORT; - } else if (cl == Byte.TYPE) { - return BYTE; - } else if (cl == Long.TYPE) { - return LONG; - } else if (cl == Character.TYPE) { - return CHAR; - } else { - throw new IllegalStateException("Unknown primitive type " + cl); - } - } else { // "Real" class + } + if (!cl.isPrimitive()) { // "Real" class return ObjectType.getInstance(cl.getName()); } + if (cl == Integer.TYPE) { + return INT; + } + if (cl == Void.TYPE) { + return VOID; + } + if (cl == Double.TYPE) { + return DOUBLE; + } + if (cl == Float.TYPE) { + return FLOAT; + } + if (cl == Boolean.TYPE) { + return BOOLEAN; + } + if (cl == Byte.TYPE) { + return BYTE; + } + if (cl == Short.TYPE) { + return SHORT; + } + if (cl == Byte.TYPE) { + return BYTE; + } + if (cl == Long.TYPE) { + return LONG; + } + if (cl == Character.TYPE) { + return CHAR; + } + throw new IllegalStateException("Unknown primitive type " + cl); } @@ -365,7 +373,8 @@ public abstract class Type { final byte type = Utility.typeOfSignature(signature); if (type <= Const.T_VOID) { return encode(BasicType.getType(type).getSize(), 1); - } else if (type == Const.T_ARRAY) { + } + if (type == Const.T_ARRAY) { int dim = 0; do { // Count dimensions dim++; @@ -373,13 +382,12 @@ public abstract class Type { // Recurse, but just once, if the signature is ok final int consumed = consumed(getTypeSize(signature.substring(dim))); return encode(1, dim + consumed); - } else { // type == T_REFERENCE - final int index = signature.indexOf(';'); // Look for closing `;' - if (index < 0) { - throw new ClassFormatException("Invalid signature: " + signature); - } - return encode(1, index + 1); } + final int index = signature.indexOf(';'); // Look for closing `;' + if (index < 0) { + throw new ClassFormatException("Invalid signature: " + signature); + } + return encode(1, index + 1); } diff --git a/src/main/java/org/apache/bcel/util/BCELifier.java b/src/main/java/org/apache/bcel/util/BCELifier.java index cb34928..9789e7a 100644 --- a/src/main/java/org/apache/bcel/util/BCELifier.java +++ b/src/main/java/org/apache/bcel/util/BCELifier.java @@ -261,19 +261,22 @@ public class BCELifier extends org.apache.bcel.classfile.EmptyVisitor { final byte t = type.getType(); if (t <= Const.T_VOID) { return "Type." + Const.getTypeName(t).toUpperCase(Locale.ENGLISH); - } else if (type.toString().equals("java.lang.String")) { + } + if (type.toString().equals("java.lang.String")) { return "Type.STRING"; - } else if (type.toString().equals("java.lang.Object")) { + } + if (type.toString().equals("java.lang.Object")) { return "Type.OBJECT"; - } else if (type.toString().equals("java.lang.StringBuffer")) { + } + if (type.toString().equals("java.lang.StringBuffer")) { return "Type.STRINGBUFFER"; - } else if (type instanceof ArrayType) { + } + if (type instanceof ArrayType) { final ArrayType at = (ArrayType) type; return "new ArrayType(" + printType(at.getBasicType()) + ", " + at.getDimensions() + ")"; - } else { - return "new ObjectType(\"" + Utility.signatureToString(signature, false) + "\")"; } + return "new ObjectType(\"" + Utility.signatureToString(signature, false) + "\")"; } diff --git a/src/main/java/org/apache/bcel/util/ClassLoader.java b/src/main/java/org/apache/bcel/util/ClassLoader.java index f63b43a..461b419 100644 --- a/src/main/java/org/apache/bcel/util/ClassLoader.java +++ b/src/main/java/org/apache/bcel/util/ClassLoader.java @@ -123,11 +123,10 @@ public class ClassLoader extends java.lang.ClassLoader { if (class_name.contains(BCEL_TOKEN)) { clazz = createClass(class_name); } else { // Fourth try: Load classes via repository - if ((clazz = repository.loadClass(class_name)) != null) { - clazz = modifyClass(clazz); - } else { + if ((clazz = repository.loadClass(class_name)) == null) { throw new ClassNotFoundException(class_name); } + clazz = modifyClass(clazz); } if (clazz != null) { final byte[] bytes = clazz.getBytes(); diff --git a/src/main/java/org/apache/bcel/util/InstructionFinder.java b/src/main/java/org/apache/bcel/util/InstructionFinder.java index f93cbe3..ebf10c8 100644 --- a/src/main/java/org/apache/bcel/util/InstructionFinder.java +++ b/src/main/java/org/apache/bcel/util/InstructionFinder.java @@ -141,11 +141,10 @@ public class InstructionFinder { final StringBuilder name = new StringBuilder(); while ((Character.isLetterOrDigit(ch) || ch == '_') && i < size) { name.append(ch); - if (++i < size) { - ch = lower.charAt(i); - } else { + if (++i >= size) { break; } + ch = lower.charAt(i); } i--; buf.append(mapName(name.toString())); diff --git a/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java b/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java index 00ab595..dae1eed 100644 --- a/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java +++ b/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java @@ -394,12 +394,11 @@ public final class Pass2Verifier extends PassVerifier implements Constants { } if (att instanceof SourceFile) { - if (!foundSourceFile) { - foundSourceFile = true; - } else { + if (foundSourceFile) { throw new ClassConstraintException("A ClassFile structure (like '" + tostring(obj) + "') may have no more than one SourceFile attribute."); //vmspec2 4.7.7 } + foundSourceFile = true; } if (att instanceof InnerClasses) { diff --git a/src/main/java/org/apache/bcel/verifier/structurals/InstConstraintVisitor.java b/src/main/java/org/apache/bcel/verifier/structurals/InstConstraintVisitor.java index 0cb5d6e..92ec820 100644 --- a/src/main/java/org/apache/bcel/verifier/structurals/InstConstraintVisitor.java +++ b/src/main/java/org/apache/bcel/verifier/structurals/InstConstraintVisitor.java @@ -414,12 +414,10 @@ public class InstConstraintVisitor extends EmptyVisitor{ } if (o instanceof RETURN) { - if (method_type != Type.VOID) { - constraintViolated(o, "RETURN instruction in non-void method."); - } - else{ + if (method_type == Type.VOID) { return; } + constraintViolated(o, "RETURN instruction in non-void method."); } if (o instanceof ARETURN) { if (method_type == Type.VOID) { @@ -1003,14 +1001,12 @@ public class InstConstraintVisitor extends EmptyVisitor{ return; // Form 4 } // stack top size is 2, next-to-top's size is 1 - if ( stack().peek(2).getSize() != 1 ) { - constraintViolated(o, "If stack top's size is 2 and stack-next-to-top's size is 1,"+ - " then stack next-to-next-to-top's size must also be 1. But it is '"+stack().peek(2)+ - "' of size '"+stack().peek(2).getSize()+"'."); - } - else{ + if ( stack().peek(2).getSize() == 1 ) { return; // Form 2 } + constraintViolated(o, "If stack top's size is 2 and stack-next-to-top's size is 1,"+ + " then stack next-to-next-to-top's size must also be 1. But it is '"+stack().peek(2)+ + "' of size '"+stack().peek(2).getSize()+"'."); } else{// stack top is of size 1 if (stack().peek(1).getSize() == 1) { diff --git a/src/main/java/org/apache/bcel/verifier/structurals/LocalVariables.java b/src/main/java/org/apache/bcel/verifier/structurals/LocalVariables.java index eaeecb7..25fa020 100644 --- a/src/main/java/org/apache/bcel/verifier/structurals/LocalVariables.java +++ b/src/main/java/org/apache/bcel/verifier/structurals/LocalVariables.java @@ -171,14 +171,12 @@ public class LocalVariables implements Cloneable { if (! locals[i].equals(lv.locals[i])) { // needed in case of two UninitializedObjectType instances final Type sup = ((ReferenceType) locals[i]).getFirstCommonSuperclass((ReferenceType) (lv.locals[i])); - if (sup != null) { - locals[i] = sup; - } - else{ + if (sup == null) { // We should have checked this in Pass2! throw new AssertionViolatedException( "Could not load all the super classes of '"+locals[i]+"' and '"+lv.locals[i]+"'."); } + locals[i] = sup; } } else{ diff --git a/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java b/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java index 7219165..b6ed81d 100644 --- a/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java +++ b/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java @@ -240,14 +240,11 @@ public class OperandStack implements Cloneable { stack.set(i, ((UninitializedObjectType) (stack.get(i))).getInitialized() ); //note that. } if (! stack.get(i).equals(s.stack.get(i))) { - if ( (stack.get(i) instanceof ReferenceType) && - (s.stack.get(i) instanceof ReferenceType) ) { - stack.set(i, ((ReferenceType) stack.get(i)).getFirstCommonSuperclass((ReferenceType) (s.stack.get(i)))); - } - else{ + if (!(stack.get(i) instanceof ReferenceType) || !(s.stack.get(i) instanceof ReferenceType) ) { throw new StructuralCodeConstraintException( "Cannot merge stacks of different types:\nStack A:\n"+this+"\nStack B:\n"+s); } + stack.set(i, ((ReferenceType) stack.get(i)).getFirstCommonSuperclass((ReferenceType) (s.stack.get(i)))); } } } catch (final ClassNotFoundException e) {