Refactory: smarty.ui plugin.
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / lookup / SyntheticAccessMethodBinding.java
index 852739a..3e2ea6f 100644 (file)
@@ -16,31 +16,43 @@ import net.sourceforge.phpdt.internal.compiler.ast.FieldDeclaration;
 
 public class SyntheticAccessMethodBinding extends MethodBinding {
 
-       public FieldBinding targetReadField;            // read access to a field
-       public FieldBinding targetWriteField;           // write access to a field
-       public MethodBinding targetMethod;      // method or constructor
-       
+       public FieldBinding targetReadField; // read access to a field
+
+       public FieldBinding targetWriteField; // write access to a field
+
+       public MethodBinding targetMethod; // method or constructor
+
        public int accessType;
 
-       public final static int FieldReadAccess = 1;            // field read
-       public final static int FieldWriteAccess = 2;           // field write
-       public final static int MethodAccess = 3;               // normal method 
-       public final static int ConstructorAccess = 4;  // constructor
+       public final static int FieldReadAccess = 1; // field read
+
+       public final static int FieldWriteAccess = 2; // field write
+
+       public final static int MethodAccess = 3; // normal method
+
+       public final static int ConstructorAccess = 4; // constructor
+
        public final static int SuperMethodAccess = 5; // super method
 
-       final static char[] AccessMethodPrefix = { 'a', 'c', 'c', 'e', 's', 's', '$' };
+       final static char[] AccessMethodPrefix = { 'a', 'c', 'c', 'e', 's', 's',
+                       '$' };
 
        public int sourceStart = 0; // start position of the matching declaration
+
        public int index; // used for sorting access methods in the class file
-       
-       public SyntheticAccessMethodBinding(FieldBinding targetField, boolean isReadAccess, ReferenceBinding declaringClass) {
+
+       public SyntheticAccessMethodBinding(FieldBinding targetField,
+                       boolean isReadAccess, ReferenceBinding declaringClass) {
 
                this.modifiers = AccDefault | AccStatic;// | AccSynthetic;
                SourceTypeBinding declaringSourceType = (SourceTypeBinding) declaringClass;
-               SyntheticAccessMethodBinding[] knownAccessMethods = declaringSourceType.syntheticAccessMethods();
-               int methodId = knownAccessMethods == null ? 0 : knownAccessMethods.length;
+               SyntheticAccessMethodBinding[] knownAccessMethods = declaringSourceType
+                               .syntheticAccessMethods();
+               int methodId = knownAccessMethods == null ? 0
+                               : knownAccessMethods.length;
                this.index = methodId;
-               this.selector = CharOperation.concat(AccessMethodPrefix, String.valueOf(methodId).toCharArray());
+               this.selector = CharOperation.concat(AccessMethodPrefix, String
+                               .valueOf(methodId).toCharArray());
                if (isReadAccess) {
                        this.returnType = targetField.type;
                        if (targetField.isStatic()) {
@@ -66,16 +78,17 @@ public class SyntheticAccessMethodBinding extends MethodBinding {
                }
                this.thrownExceptions = NoExceptions;
                this.declaringClass = declaringSourceType;
-       
+
                // check for method collision
                boolean needRename;
                do {
-                       check : {
+                       check: {
                                needRename = false;
                                // check for collision with known methods
                                MethodBinding[] methods = declaringSourceType.methods;
                                for (int i = 0, length = methods.length; i < length; i++) {
-                                       if (this.selector == methods[i].selector && this.areParametersEqual(methods[i])) {
+                                       if (this.selector == methods[i].selector
+                                                       && this.areParametersEqual(methods[i])) {
                                                needRename = true;
                                                break check;
                                        }
@@ -83,20 +96,25 @@ public class SyntheticAccessMethodBinding extends MethodBinding {
                                // check for collision with synthetic accessors
                                if (knownAccessMethods != null) {
                                        for (int i = 0, length = knownAccessMethods.length; i < length; i++) {
-                                               if (knownAccessMethods[i] == null) continue;
-                                               if (this.selector == knownAccessMethods[i].selector && this.areParametersEqual(methods[i])) {
+                                               if (knownAccessMethods[i] == null)
+                                                       continue;
+                                               if (this.selector == knownAccessMethods[i].selector
+                                                               && this.areParametersEqual(methods[i])) {
                                                        needRename = true;
                                                        break check;
                                                }
                                        }
                                }
                        }
-                       if (needRename) { // retry with a selector postfixed by a growing methodId
-                               this.selector(CharOperation.concat(AccessMethodPrefix, String.valueOf(++methodId).toCharArray()));
+                       if (needRename) { // retry with a selector postfixed by a growing
+                                                               // methodId
+                               this.selector(CharOperation.concat(AccessMethodPrefix, String
+                                               .valueOf(++methodId).toCharArray()));
                        }
                } while (needRename);
-       
-               // retrieve sourceStart position for the target field for line number attributes
+
+               // retrieve sourceStart position for the target field for line number
+               // attributes
                FieldDeclaration[] fieldDecls = declaringSourceType.scope.referenceContext.fields;
                if (fieldDecls != null) {
                        for (int i = 0, max = fieldDecls.length; i < max; i++) {
@@ -106,73 +124,71 @@ public class SyntheticAccessMethodBinding extends MethodBinding {
                                }
                        }
                }
-       
-       /* did not find the target field declaration - it is a synthetic one
-               public class A {
-                       public class B {
-                               public class C {
-                                       void foo() {
-                                               System.out.println("A.this = " + A.this);
-                                       }
-                               }
-                       }
-                       public static void main(String args[]) {
-                               new A().new B().new C().foo();
-                       }
-               }       
-       */
-               // We now at this point - per construction - it is for sure an enclosing instance, we are going to
+
+               /*
+                * did not find the target field declaration - it is a synthetic one
+                * public class A { public class B { public class C { void foo() {
+                * System.out.println("A.this = " + A.this); } } } public static void
+                * main(String args[]) { new A().new B().new C().foo(); } }
+                */
+               // We now at this point - per construction - it is for sure an enclosing
+               // instance, we are going to
                // show the target field type declaration location.
-               this.sourceStart = declaringSourceType.scope.referenceContext.sourceStart; // use the target declaring class name position instead
+               this.sourceStart = declaringSourceType.scope.referenceContext.sourceStart; // use
+                                                                                                                                                                       // the
+                                                                                                                                                                       // target
+                                                                                                                                                                       // declaring
+                                                                                                                                                                       // class
+                                                                                                                                                                       // name
+                                                                                                                                                                       // position
+                                                                                                                                                                       // instead
        }
 
-       public SyntheticAccessMethodBinding(MethodBinding targetMethod, boolean isSuperAccess, ReferenceBinding receiverType) {
-       
+       public SyntheticAccessMethodBinding(MethodBinding targetMethod,
+                       boolean isSuperAccess, ReferenceBinding receiverType) {
+
                if (targetMethod.isConstructor()) {
                        this.initializeConstructorAccessor(targetMethod);
                } else {
-                       this.initializeMethodAccessor(targetMethod, isSuperAccess, receiverType);
+                       this.initializeMethodAccessor(targetMethod, isSuperAccess,
+                                       receiverType);
                }
        }
 
        /**
-        * An constructor accessor is a constructor with an extra argument (declaringClass), in case of
-        * collision with an existing constructor, then add again an extra argument (declaringClass again).
+        * An constructor accessor is a constructor with an extra argument
+        * (declaringClass), in case of collision with an existing constructor, then
+        * add again an extra argument (declaringClass again).
         */
-        public void initializeConstructorAccessor(MethodBinding targetConstructor) {
-       
+       public void initializeConstructorAccessor(MethodBinding targetConstructor) {
+
                this.targetMethod = targetConstructor;
                this.modifiers = AccDefault;// | AccSynthetic;
-               SourceTypeBinding sourceType = (SourceTypeBinding) targetConstructor.declaringClass; 
-               SyntheticAccessMethodBinding[] knownAccessMethods = 
-                       sourceType.syntheticAccessMethods(); 
+               SourceTypeBinding sourceType = (SourceTypeBinding) targetConstructor.declaringClass;
+               SyntheticAccessMethodBinding[] knownAccessMethods = sourceType
+                               .syntheticAccessMethods();
                this.index = knownAccessMethods == null ? 0 : knownAccessMethods.length;
-       
+
                this.selector = targetConstructor.selector;
                this.returnType = targetConstructor.returnType;
                this.accessType = ConstructorAccess;
                this.parameters = new TypeBinding[targetConstructor.parameters.length + 1];
-               System.arraycopy(
-                       targetConstructor.parameters, 
-                       0, 
-                       this.parameters, 
-                       0, 
-                       targetConstructor.parameters.length); 
-               parameters[targetConstructor.parameters.length] = 
-                       targetConstructor.declaringClass; 
+               System.arraycopy(targetConstructor.parameters, 0, this.parameters, 0,
+                               targetConstructor.parameters.length);
+               parameters[targetConstructor.parameters.length] = targetConstructor.declaringClass;
                this.thrownExceptions = targetConstructor.thrownExceptions;
                this.declaringClass = sourceType;
-       
+
                // check for method collision
                boolean needRename;
                do {
-                       check : {
+                       check: {
                                needRename = false;
                                // check for collision with known methods
                                MethodBinding[] methods = sourceType.methods;
                                for (int i = 0, length = methods.length; i < length; i++) {
                                        if (this.selector == methods[i].selector
-                                               && this.areParametersEqual(methods[i])) {
+                                                       && this.areParametersEqual(methods[i])) {
                                                needRename = true;
                                                break check;
                                        }
@@ -183,7 +199,8 @@ public class SyntheticAccessMethodBinding extends MethodBinding {
                                                if (knownAccessMethods[i] == null)
                                                        continue;
                                                if (this.selector == knownAccessMethods[i].selector
-                                                       && this.areParametersEqual(knownAccessMethods[i])) {
+                                                               && this
+                                                                               .areParametersEqual(knownAccessMethods[i])) {
                                                        needRename = true;
                                                        break check;
                                                }
@@ -192,19 +209,16 @@ public class SyntheticAccessMethodBinding extends MethodBinding {
                        }
                        if (needRename) { // retry with a new extra argument
                                int length = this.parameters.length;
-                               System.arraycopy(
-                                       this.parameters, 
-                                       0, 
-                                       this.parameters = new TypeBinding[length + 1], 
-                                       0, 
-                                       length); 
+                               System.arraycopy(this.parameters, 0,
+                                               this.parameters = new TypeBinding[length + 1], 0,
+                                               length);
                                this.parameters[length] = this.declaringClass;
                        }
                } while (needRename);
-       
-               // retrieve sourceStart position for the target method for line number attributes
-               AbstractMethodDeclaration[] methodDecls = 
-                       sourceType.scope.referenceContext.methods; 
+
+               // retrieve sourceStart position for the target method for line number
+               // attributes
+               AbstractMethodDeclaration[] methodDecls = sourceType.scope.referenceContext.methods;
                if (methodDecls != null) {
                        for (int i = 0, length = methodDecls.length; i < length; i++) {
                                if (methodDecls[i].binding == targetConstructor) {
@@ -216,40 +230,47 @@ public class SyntheticAccessMethodBinding extends MethodBinding {
        }
 
        /**
-        * An method accessor is a method with an access$N selector, where N is incremented in case of collisions.
+        * An method accessor is a method with an access$N selector, where N is
+        * incremented in case of collisions.
         */
-       public void initializeMethodAccessor(MethodBinding targetMethod, boolean isSuperAccess, ReferenceBinding declaringClass) {
-               
+       public void initializeMethodAccessor(MethodBinding targetMethod,
+                       boolean isSuperAccess, ReferenceBinding declaringClass) {
+
                this.targetMethod = targetMethod;
                this.modifiers = AccDefault | AccStatic;// | AccSynthetic;
                SourceTypeBinding declaringSourceType = (SourceTypeBinding) declaringClass;
-               SyntheticAccessMethodBinding[] knownAccessMethods = declaringSourceType.syntheticAccessMethods();
-               int methodId = knownAccessMethods == null ? 0 : knownAccessMethods.length;
+               SyntheticAccessMethodBinding[] knownAccessMethods = declaringSourceType
+                               .syntheticAccessMethods();
+               int methodId = knownAccessMethods == null ? 0
+                               : knownAccessMethods.length;
                this.index = methodId;
-       
-               this.selector = CharOperation.concat(AccessMethodPrefix, String.valueOf(methodId).toCharArray());
+
+               this.selector = CharOperation.concat(AccessMethodPrefix, String
+                               .valueOf(methodId).toCharArray());
                this.returnType = targetMethod.returnType;
                this.accessType = isSuperAccess ? SuperMethodAccess : MethodAccess;
-               
+
                if (targetMethod.isStatic()) {
                        this.parameters = targetMethod.parameters;
                } else {
                        this.parameters = new TypeBinding[targetMethod.parameters.length + 1];
                        this.parameters[0] = declaringSourceType;
-                       System.arraycopy(targetMethod.parameters, 0, this.parameters, 1, targetMethod.parameters.length);
+                       System.arraycopy(targetMethod.parameters, 0, this.parameters, 1,
+                                       targetMethod.parameters.length);
                }
                this.thrownExceptions = targetMethod.thrownExceptions;
                this.declaringClass = declaringSourceType;
-       
+
                // check for method collision
                boolean needRename;
                do {
-                       check : {
+                       check: {
                                needRename = false;
                                // check for collision with known methods
                                MethodBinding[] methods = declaringSourceType.methods;
                                for (int i = 0, length = methods.length; i < length; i++) {
-                                       if (this.selector == methods[i].selector && this.areParametersEqual(methods[i])) {
+                                       if (this.selector == methods[i].selector
+                                                       && this.areParametersEqual(methods[i])) {
                                                needRename = true;
                                                break check;
                                        }
@@ -257,8 +278,11 @@ public class SyntheticAccessMethodBinding extends MethodBinding {
                                // check for collision with synthetic accessors
                                if (knownAccessMethods != null) {
                                        for (int i = 0, length = knownAccessMethods.length; i < length; i++) {
-                                               if (knownAccessMethods[i] == null) continue;
-                                               if (this.selector == knownAccessMethods[i].selector && this.areParametersEqual(knownAccessMethods[i])) {
+                                               if (knownAccessMethods[i] == null)
+                                                       continue;
+                                               if (this.selector == knownAccessMethods[i].selector
+                                                               && this
+                                                                               .areParametersEqual(knownAccessMethods[i])) {
                                                        needRename = true;
                                                        break check;
                                                }
@@ -266,11 +290,13 @@ public class SyntheticAccessMethodBinding extends MethodBinding {
                                }
                        }
                        if (needRename) { // retry with a selector & a growing methodId
-                               this.selector(CharOperation.concat(AccessMethodPrefix, String.valueOf(++methodId).toCharArray()));
+                               this.selector(CharOperation.concat(AccessMethodPrefix, String
+                                               .valueOf(++methodId).toCharArray()));
                        }
                } while (needRename);
-       
-               // retrieve sourceStart position for the target method for line number attributes
+
+               // retrieve sourceStart position for the target method for line number
+               // attributes
                AbstractMethodDeclaration[] methodDecls = declaringSourceType.scope.referenceContext.methods;
                if (methodDecls != null) {
                        for (int i = 0, length = methodDecls.length; i < length; i++) {