2121import org .eclipse .jdt .core .dom .ArrayCreation ;
2222import org .eclipse .jdt .core .dom .ArrayInitializer ;
2323import org .eclipse .jdt .core .dom .ArrayType ;
24- import org .eclipse .jdt .core .dom .AssertStatement ;
2524import org .eclipse .jdt .core .dom .Assignment ;
2625import org .eclipse .jdt .core .dom .Block ;
2726import org .eclipse .jdt .core .dom .BooleanLiteral ;
@@ -240,29 +239,20 @@ public boolean visit(Assignment node) {
240239 varBinding = (IVariableBinding ) leftTypeBinding ;
241240 }
242241 } else if (left instanceof FieldAccess ) {
243- FieldAccess leftAccess = (FieldAccess ) left ;
244- varBinding = leftAccess .resolveFieldBinding ();
242+ varBinding = ((FieldAccess ) left ).resolveFieldBinding ();
245243 }
246244 String op = node .getOperator ().toString ();
247245 boolean isMixedOp = (op .trim ().length () > 1 ); // +=, -=, *=, /=, etc.
248- ITypeBinding declaring = null ;
249- String qName = null ;
250246
251247 // TODO BH Q: what does static have to do with anything?
252- if (varBinding != null && (varBinding .getModifiers () & Modifier .STATIC ) != 0
253- && (declaring = varBinding .getDeclaringClass ()) != null
254- && !(qName = declaring .getQualifiedName ()).startsWith ("org.eclipse.swt.internal.xhtml." )
255- && !qName .startsWith ("net.sf.j2s.html." )) {
248+ if (checkStaticBinding (varBinding )) {
256249
257250 System .err .println ("????static varbinding " + varBinding );
258251
259252 // static variable = ...
260253
261- boolean directStaticAccess = left instanceof SimpleName
262- || (left instanceof QualifiedName && ((QualifiedName ) left ).getQualifier () instanceof SimpleName )
263- || (left instanceof FieldAccess && ((FieldAccess ) left ).getExpression () instanceof ThisExpression );
264254 ASTNode parent = node .getParent ();
265- boolean needParenthesis = (supportsObjectStaticFields || !directStaticAccess )
255+ boolean needParenthesis = (supportsObjectStaticFields || !haveDirectStaticAccess ( left ) )
266256 && !(parent instanceof Statement );
267257 if (needParenthesis ) {
268258 buffer .append ("(" );
@@ -503,6 +493,13 @@ public boolean visit(Assignment node) {
503493 return false ;
504494 }
505495
496+ private boolean haveDirectStaticAccess (Expression exp ) {
497+ return exp instanceof SimpleName
498+ || (exp instanceof QualifiedName && ((QualifiedName ) exp ).getQualifier () instanceof SimpleName )
499+ || (exp instanceof FieldAccess && ((FieldAccess ) exp ).getExpression () instanceof ThisExpression );
500+
501+ }
502+
506503 public void endVisit (Block node ) {
507504 buffer .append ("}" );
508505 List <ASTFinalVariable > finalVars = ((ASTVariableVisitor ) getAdaptable (ASTVariableVisitor .class )).finalVars ;
@@ -544,7 +541,7 @@ public void endVisit(MethodDeclaration node) {
544541 ASTFinalVariable f = new ASTFinalVariable (blockLevel + 1 , identifier , methodSig );
545542 f .toVariableName = getIndexedVarName (identifier , normalVars .size ());
546543 normalVars .remove (f );
547- if ((binding .getModifiers () & Modifier . FINAL ) != 0 ) {
544+ if (Modifier . isFinal (binding .getModifiers ()) ) {
548545 finalVars .remove (f );
549546 }
550547 visitedVars .remove (f );
@@ -803,12 +800,7 @@ public void endVisit(PostfixExpression node) {
803800 FieldAccess leftAccess = (FieldAccess ) left ;
804801 varBinding = leftAccess .resolveFieldBinding ();
805802 }
806- ITypeBinding declaring = null ;
807- String qName = null ;
808- if (varBinding != null && (varBinding .getModifiers () & Modifier .STATIC ) != 0
809- && (declaring = varBinding .getDeclaringClass ()) != null
810- && !(qName = declaring .getQualifiedName ()).startsWith ("org.eclipse.swt.internal.xhtml." )
811- && !qName .startsWith ("net.sf.j2s.html." )) {
803+ if (checkStaticBinding (varBinding )) {
812804 return ;
813805 }
814806 ITypeBinding typeBinding = node .getOperand ().resolveTypeBinding ();
@@ -835,19 +827,11 @@ public boolean visit(PostfixExpression node) {
835827 varBinding = leftAccess .resolveFieldBinding ();
836828 }
837829 ITypeBinding typeBinding = left .resolveTypeBinding ();
838- ITypeBinding declaring = null ;
839- String qName = null ;
840- if (varBinding != null && (varBinding .getModifiers () & Modifier .STATIC ) != 0
841- && (declaring = varBinding .getDeclaringClass ()) != null
842- && !(qName = declaring .getQualifiedName ()).startsWith ("org.eclipse.swt.internal.xhtml." )
843- && !qName .startsWith ("net.sf.j2s.html." )) {
844- boolean directStaticAccess = left instanceof SimpleName
845- || (left instanceof QualifiedName && ((QualifiedName ) left ).getQualifier () instanceof SimpleName )
846- || (left instanceof FieldAccess && ((FieldAccess ) left ).getExpression () instanceof ThisExpression );
830+ if (checkStaticBinding (varBinding )) {
847831 ASTNode parent = node .getParent ();
848832 boolean staticCharType = typeBinding .isPrimitive () && "char" .equals (typeBinding .getName ());
849833 @ SuppressWarnings ("null" )
850- boolean needParenthesis = (supportsObjectStaticFields || !directStaticAccess
834+ boolean needParenthesis = (supportsObjectStaticFields || !haveDirectStaticAccess ( left )
851835 || (typeBinding != null && staticCharType ))
852836 && !(parent instanceof Statement || parent instanceof ParenthesizedExpression );
853837 if (needParenthesis ) {
@@ -975,17 +959,9 @@ public boolean visit(PrefixExpression node) {
975959 varBinding = leftAccess .resolveFieldBinding ();
976960 }
977961 ITypeBinding typeBinding = left .resolveTypeBinding ();
978- ITypeBinding declaring = null ;
979- String qName = null ;
980- if (varBinding != null && (varBinding .getModifiers () & Modifier .STATIC ) != 0
981- && (declaring = varBinding .getDeclaringClass ()) != null
982- && !(qName = declaring .getQualifiedName ()).startsWith ("org.eclipse.swt.internal.xhtml." )
983- && !qName .startsWith ("net.sf.j2s.html." )) {
984- boolean directStaticAccess = left instanceof SimpleName
985- || (left instanceof QualifiedName && ((QualifiedName ) left ).getQualifier () instanceof SimpleName )
986- || (left instanceof FieldAccess && ((FieldAccess ) left ).getExpression () instanceof ThisExpression );
962+ if (checkStaticBinding (varBinding )) {
987963 ASTNode parent = node .getParent ();
988- boolean needParenthesis = (supportsObjectStaticFields || !directStaticAccess
964+ boolean needParenthesis = (supportsObjectStaticFields || !haveDirectStaticAccess ( left )
989965 || (typeBinding != null && typeBinding .isPrimitive () && "char" .equals (typeBinding .getName ())))
990966 && !(parent instanceof Statement || parent instanceof ParenthesizedExpression );
991967 if (needParenthesis ) {
@@ -1111,12 +1087,7 @@ public boolean visit(QualifiedName node) {
11111087 if (nameBinding instanceof IVariableBinding ) {
11121088 varBinding = (IVariableBinding ) nameBinding ;
11131089 }
1114- ITypeBinding declaring = null ;
1115- String qdName = null ;
1116- if (!supportsObjectStaticFields && varBinding != null && (varBinding .getModifiers () & Modifier .STATIC ) != 0
1117- && (declaring = varBinding .getDeclaringClass ()) != null
1118- && !(qdName = declaring .getQualifiedName ()).startsWith ("org.eclipse.swt.internal.xhtml." )
1119- && !qdName .startsWith ("net.sf.j2s.html." )) {
1090+ if (!supportsObjectStaticFields && checkStaticBinding (varBinding )) {
11201091 IBinding qBinding = node .getQualifier ().resolveBinding ();
11211092 if (!(qBinding != null && qBinding instanceof ITypeBinding )) {
11221093 staticFields = true ;
@@ -1277,6 +1248,7 @@ public boolean visit(ReturnStatement node) {
12771248
12781249 public void endVisit (ReturnStatement node ) {
12791250 buffer .append (";\r \n " );
1251+ super .endVisit (node );
12801252 }
12811253
12821254 public boolean visit (StringLiteral node ) {
@@ -1416,7 +1388,7 @@ public boolean visit(VariableDeclarationFragment node) {
14161388 ASTVariableVisitor .class )).normalVars ;
14171389 f .toVariableName = getIndexedVarName (identifier , normalVars .size ());
14181390 normalVars .add (f );
1419- if ((binding .getModifiers () & Modifier . FINAL ) != 0 ) {
1391+ if (Modifier . isFinal (binding .getModifiers ()) ) {
14201392 finalVars .add (f );
14211393 }
14221394 }
@@ -1706,9 +1678,17 @@ public static boolean isPackageQualified(String className) {
17061678 return true ;
17071679 }
17081680
1709- protected static boolean isStatic (int modifiers ) {
1710- return (( modifiers & Modifier .STATIC ) != 0 );
1681+ protected static boolean isStatic (IBinding b ) {
1682+ return b != null && Modifier .isStatic ( b . getModifiers () );
17111683 }
17121684
1685+ private boolean checkStaticBinding (IVariableBinding varBinding ) {
1686+ ITypeBinding declaring ;
1687+ String qName ;
1688+ return isStatic (varBinding )
1689+ && (declaring = varBinding .getDeclaringClass ()) != null
1690+ && !(qName = declaring .getQualifiedName ()).startsWith ("org.eclipse.swt.internal.xhtml." )
1691+ && !qName .startsWith ("net.sf.j2s.html." );
1692+ }
17131693
17141694}
0 commit comments