@@ -97,18 +97,18 @@ public class ASTKeywordVisitor extends ASTEmptyVisitor {
9797
9898 protected int currentBlockForVisit = -1 ;
9999
100- /**
101- * This will be false unless j2s.compiler.static.quirks
102- */
103- protected boolean supportsObjectStaticFields = false ;
104-
105- public boolean isSupportsObjectStaticFields () {
106- return supportsObjectStaticFields ;
107- }
108-
109- public void setSupportsObjectStaticFields (boolean supportsObjectStaticFields ) {
110- this .supportsObjectStaticFields = supportsObjectStaticFields ;
111- }
100+ // /**
101+ // * This will be false unless j2s.compiler.static.quirks
102+ // */
103+ // protected boolean supportsObjectStaticFields = false;
104+ //
105+ // public boolean isSupportsObjectStaticFields() {
106+ // return supportsObjectStaticFields;
107+ // }
108+ //
109+ // public void setSupportsObjectStaticFields(boolean supportsObjectStaticFields) {
110+ // this.supportsObjectStaticFields = supportsObjectStaticFields;
111+ // }
112112
113113 protected String assureQualifiedName (String name ) {
114114 return ((ASTTypeVisitor ) getAdaptable (ASTTypeVisitor .class )).assureQualifiedName (name );
@@ -252,7 +252,7 @@ public boolean visit(Assignment node) {
252252 // static variable = ...
253253
254254 ASTNode parent = node .getParent ();
255- boolean needParenthesis = (supportsObjectStaticFields || !haveDirectStaticAccess (left ))
255+ boolean needParenthesis = (/* supportsObjectStaticFields ||*/ !haveDirectStaticAccess (left ))
256256 && !(parent instanceof Statement );
257257 if (needParenthesis ) {
258258 buffer .append ("(" );
@@ -270,10 +270,10 @@ public boolean visit(Assignment node) {
270270 buffer .append (", " );
271271 }
272272 }
273- if (supportsObjectStaticFields ) {
274- addFieldName (varBinding , left , true );
275- buffer .append (" = " );
276- }
273+ // if (supportsObjectStaticFields) {
274+ // addFieldName(varBinding, left, true);
275+ // buffer.append(" = ");
276+ // }
277277
278278 addFieldName (varBinding , left , false );
279279 buffer .append (' ' );
@@ -493,11 +493,22 @@ public boolean visit(Assignment node) {
493493 return false ;
494494 }
495495
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-
496+ private void addFieldName (IVariableBinding varBinding , Expression left , boolean isPrototype ) {
497+ buffer .append (
498+ assureQualifiedName (removeJavaLang (varBinding .getDeclaringClass ().getQualifiedName ())));
499+ buffer .append ('.' );
500+ if (isPrototype )
501+ buffer .append ("prototype." );
502+ if (left instanceof QualifiedName ) {
503+ QualifiedName leftName = (QualifiedName ) left ;
504+ leftName .getName ().accept (this );
505+ } else if (left instanceof FieldAccess ) {
506+ FieldAccess leftAccess = (FieldAccess ) left ;
507+ leftAccess .getName ().accept (this );
508+ } else {
509+ Name leftName = (Name ) left ;
510+ leftName .accept (this );
511+ }
501512 }
502513
503514 public void endVisit (Block node ) {
@@ -787,32 +798,6 @@ public boolean visit(ParenthesizedExpression node) {
787798 return false ;
788799 }
789800
790- public void endVisit (PostfixExpression node ) {
791- Expression left = node .getOperand ();
792- IVariableBinding varBinding = null ;
793- if (left instanceof Name ) {
794- Name leftName = (Name ) left ;
795- IBinding nameBinding = leftName .resolveBinding ();
796- if (nameBinding instanceof IVariableBinding ) {
797- varBinding = (IVariableBinding ) nameBinding ;
798- }
799- } else if (left instanceof FieldAccess ) {
800- FieldAccess leftAccess = (FieldAccess ) left ;
801- varBinding = leftAccess .resolveFieldBinding ();
802- }
803- if (checkStaticBinding (varBinding )) {
804- return ;
805- }
806- ITypeBinding typeBinding = node .getOperand ().resolveTypeBinding ();
807- if (typeBinding != null && typeBinding .isPrimitive ()) {
808- if ("char" .equals (typeBinding .getName ())) {
809- return ;
810- }
811- }
812- buffer .append (node .getOperator ());
813- super .endVisit (node );
814- }
815-
816801 public boolean visit (PostfixExpression node ) {
817802 Expression left = node .getOperand ();
818803 IVariableBinding varBinding = null ;
@@ -831,7 +816,7 @@ public boolean visit(PostfixExpression node) {
831816 ASTNode parent = node .getParent ();
832817 boolean staticCharType = typeBinding .isPrimitive () && "char" .equals (typeBinding .getName ());
833818 @ SuppressWarnings ("null" )
834- boolean needParenthesis = (supportsObjectStaticFields || !haveDirectStaticAccess (left )
819+ boolean needParenthesis = (/* supportsObjectStaticFields ||*/ !haveDirectStaticAccess (left )
835820 || (typeBinding != null && staticCharType ))
836821 && !(parent instanceof Statement || parent instanceof ParenthesizedExpression );
837822 if (needParenthesis ) {
@@ -850,7 +835,7 @@ public boolean visit(PostfixExpression node) {
850835 buffer .append (", " );
851836 }
852837 }
853- if ((supportsObjectStaticFields || staticCharType ) && !(parent instanceof Statement )) {
838+ if ((/* supportsObjectStaticFields ||*/ staticCharType ) && !(parent instanceof Statement )) {
854839 buffer .append ("$t$ = " );
855840 }
856841 String op = node .getOperator ().toString ();
@@ -868,13 +853,13 @@ public boolean visit(PostfixExpression node) {
868853 addFieldName (varBinding , left , false );
869854 buffer .append (op );
870855 }
871- if (supportsObjectStaticFields ) {
872- buffer .append (", " );
873- addFieldName (varBinding , left , true );
874- buffer .append (" = " );
875- addFieldName (varBinding , left , false );
876- }
877- if ((supportsObjectStaticFields || staticCharType ) && !(parent instanceof Statement )) {
856+ // if (supportsObjectStaticFields) {
857+ // buffer.append(", ");
858+ // addFieldName(varBinding, left, true);
859+ // buffer.append(" = ");
860+ // addFieldName(varBinding, left, false);
861+ // }
862+ if ((/* supportsObjectStaticFields ||*/ staticCharType ) && !(parent instanceof Statement )) {
878863 buffer .append (", $t$" );
879864 }
880865 if (needParenthesis ) {
@@ -916,22 +901,30 @@ private void addCharPlusPlus(String op) {
916901 buffer .append (".charCodeAt(0)" ).append ("++" .equals (op ) ? "+1" : "-1" );
917902 }
918903
919- private void addFieldName ( IVariableBinding varBinding , Expression left , boolean isPrototype ) {
920- buffer . append (
921- assureQualifiedName ( removeJavaLang ( varBinding . getDeclaringClass (). getQualifiedName ()))) ;
922- buffer . append ( '.' );
923- if ( isPrototype )
924- buffer . append ( "prototype." );
925- if (left instanceof QualifiedName ) {
926- QualifiedName leftName = (QualifiedName ) left ;
927- leftName . getName (). accept ( this );
904+ public void endVisit ( PostfixExpression node ) {
905+ Expression left = node . getOperand ();
906+ IVariableBinding varBinding = null ;
907+ if ( left instanceof Name ) {
908+ Name leftName = ( Name ) left ;
909+ IBinding nameBinding = leftName . resolveBinding ( );
910+ if (nameBinding instanceof IVariableBinding ) {
911+ varBinding = (IVariableBinding ) nameBinding ;
912+ }
928913 } else if (left instanceof FieldAccess ) {
929914 FieldAccess leftAccess = (FieldAccess ) left ;
930- leftAccess .getName ().accept (this );
931- } else {
932- Name leftName = (Name ) left ;
933- leftName .accept (this );
915+ varBinding = leftAccess .resolveFieldBinding ();
934916 }
917+ if (checkStaticBinding (varBinding )) {
918+ return ;
919+ }
920+ ITypeBinding typeBinding = node .getOperand ().resolveTypeBinding ();
921+ if (typeBinding != null && typeBinding .isPrimitive ()) {
922+ if ("char" .equals (typeBinding .getName ())) {
923+ return ;
924+ }
925+ }
926+ buffer .append (node .getOperator ());
927+ super .endVisit (node );
935928 }
936929
937930 @ SuppressWarnings ("null" )
@@ -961,7 +954,7 @@ public boolean visit(PrefixExpression node) {
961954 ITypeBinding typeBinding = left .resolveTypeBinding ();
962955 if (checkStaticBinding (varBinding )) {
963956 ASTNode parent = node .getParent ();
964- boolean needParenthesis = (supportsObjectStaticFields || !haveDirectStaticAccess (left )
957+ boolean needParenthesis = (/* supportsObjectStaticFields ||*/ !haveDirectStaticAccess (left )
965958 || (typeBinding != null && typeBinding .isPrimitive () && "char" .equals (typeBinding .getName ())))
966959 && !(parent instanceof Statement || parent instanceof ParenthesizedExpression );
967960 if (needParenthesis ) {
@@ -988,21 +981,21 @@ public boolean visit(PrefixExpression node) {
988981 buffer .append (", " );
989982 }
990983 }
991- if (supportsObjectStaticFields ) {
992- buffer .append (assureQualifiedName (removeJavaLang (varBinding .getDeclaringClass ().getQualifiedName ())));
993- buffer .append (".prototype." );
994- if (left instanceof QualifiedName ) {
995- QualifiedName leftName = (QualifiedName ) left ;
996- leftName .getName ().accept (this );
997- } else if (left instanceof FieldAccess ) {
998- FieldAccess leftAccess = (FieldAccess ) left ;
999- leftAccess .getName ().accept (this );
1000- } else {
1001- Name leftName = (Name ) left ;
1002- leftName .accept (this );
1003- }
1004- buffer .append (" = " );
1005- }
984+ // if (supportsObjectStaticFields) {
985+ // buffer.append(assureQualifiedName(removeJavaLang(varBinding.getDeclaringClass().getQualifiedName())));
986+ // buffer.append(".prototype.");
987+ // if (left instanceof QualifiedName) {
988+ // QualifiedName leftName = (QualifiedName) left;
989+ // leftName.getName().accept(this);
990+ // } else if (left instanceof FieldAccess) {
991+ // FieldAccess leftAccess = (FieldAccess) left;
992+ // leftAccess.getName().accept(this);
993+ // } else {
994+ // Name leftName = (Name) left;
995+ // leftName.accept(this);
996+ // }
997+ // buffer.append(" = ");
998+ // }
1006999 if (typeBinding .isPrimitive () && "char" .equals (typeBinding .getName ())) {
10071000 buffer .append (assureQualifiedName (removeJavaLang (varBinding .getDeclaringClass ().getQualifiedName ())));
10081001 buffer .append ('.' );
@@ -1087,7 +1080,7 @@ public boolean visit(QualifiedName node) {
10871080 if (nameBinding instanceof IVariableBinding ) {
10881081 varBinding = (IVariableBinding ) nameBinding ;
10891082 }
1090- if (!supportsObjectStaticFields && checkStaticBinding (varBinding )) {
1083+ if (/* !supportsObjectStaticFields && */ checkStaticBinding (varBinding )) {
10911084 IBinding qBinding = node .getQualifier ().resolveBinding ();
10921085 if (!(qBinding != null && qBinding instanceof ITypeBinding )) {
10931086 staticFields = true ;
@@ -1682,13 +1675,21 @@ protected static boolean isStatic(IBinding b) {
16821675 return b != null && Modifier .isStatic (b .getModifiers ());
16831676 }
16841677
1685- private boolean checkStaticBinding (IVariableBinding varBinding ) {
1678+ protected boolean checkStaticBinding (IVariableBinding varBinding ) {
16861679 ITypeBinding declaring ;
16871680 String qName ;
16881681 return isStatic (varBinding )
16891682 && (declaring = varBinding .getDeclaringClass ()) != null
16901683 && !(qName = declaring .getQualifiedName ()).startsWith ("org.eclipse.swt.internal.xhtml." )
16911684 && !qName .startsWith ("net.sf.j2s.html." );
16921685 }
1686+
1687+ private boolean haveDirectStaticAccess (Expression exp ) {
1688+ return exp instanceof SimpleName
1689+ || (exp instanceof QualifiedName && ((QualifiedName ) exp ).getQualifier () instanceof SimpleName )
1690+ || (exp instanceof FieldAccess && ((FieldAccess ) exp ).getExpression () instanceof ThisExpression );
1691+
1692+ }
1693+
16931694
16941695}
0 commit comments