### Eclipse Workspace Patch 1.0
#P org.eclipse.jdt.ui
Index: core extension/org/eclipse/jdt/internal/corext/fix/CleanUpConstants.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/CleanUpConstants.java,v
retrieving revision 1.28
diff -u -r1.28 CleanUpConstants.java
--- core extension/org/eclipse/jdt/internal/corext/fix/CleanUpConstants.java 23 Sep 2009 17:11:21 -0000 1.28
+++ core extension/org/eclipse/jdt/internal/corext/fix/CleanUpConstants.java 30 Aug 2010 19:16:46 -0000
@@ -663,6 +663,19 @@
public static final String VARIABLE_DECLARATION_USE_TYPE_ARGUMENTS_FOR_RAW_TYPE_REFERENCES= "cleanup.use_arguments_for_raw_type_references"; //$NON-NLS-1$
/**
+ * Correct modifiers order for variable declarations.
+ *
+ * Possible values: {TRUE, FALSE}
+ *
+ *
+ *
+ * @see CleanUpOptions#TRUE
+ * @see CleanUpOptions#FALSE
+ * @since 3.7
+ */
+ public static final String VARIABLE_DECLARATIONS_SORT_MODIFIERS= "cleanup.correct_variable_modifiers_order"; //$NON-NLS-1$
+
+ /**
* Removes unused imports.
*
* Possible values: {TRUE, FALSE}
@@ -1135,6 +1148,9 @@
options.setOption(VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES, CleanUpOptions.TRUE);
options.setOption(VARIABLE_DECLARATIONS_USE_FINAL_PARAMETERS, CleanUpOptions.FALSE);
options.setOption(VARIABLE_DECLARATIONS_USE_FINAL_PRIVATE_FIELDS, CleanUpOptions.TRUE);
+
+ //Modifiers Order
+ options.setOption(VARIABLE_DECLARATIONS_SORT_MODIFIERS, CleanUpOptions.FALSE);
//Unused Code
options.setOption(REMOVE_UNUSED_CODE_IMPORTS, CleanUpOptions.TRUE);
@@ -1215,6 +1231,9 @@
options.setOption(VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES, CleanUpOptions.FALSE);
options.setOption(VARIABLE_DECLARATIONS_USE_FINAL_PARAMETERS, CleanUpOptions.FALSE);
options.setOption(VARIABLE_DECLARATIONS_USE_FINAL_PRIVATE_FIELDS, CleanUpOptions.TRUE);
+
+ //Modifiers Order
+ options.setOption(VARIABLE_DECLARATIONS_SORT_MODIFIERS, CleanUpOptions.TRUE);
//Unused Code
options.setOption(REMOVE_UNUSED_CODE_IMPORTS, CleanUpOptions.FALSE);
Index: core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.java,v
retrieving revision 1.42
diff -u -r1.42 FixMessages.java
--- core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.java 16 Nov 2009 16:55:03 -0000 1.42
+++ core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.java 30 Aug 2010 19:16:46 -0000
@@ -117,6 +117,8 @@
public static String VariableDeclarationFix_changeModifierOfUnknownToFinal_description;
public static String VariableDeclarationFix_ChangeMidifiersToFinalWherPossible_description;
+ public static String VariableDeclarationFix_sortModifiers_description;
+
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, FixMessages.class);
Index: core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties,v
retrieving revision 1.48
diff -u -r1.48 FixMessages.properties
--- core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties 20 May 2010 09:16:59 -0000 1.48
+++ core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties 30 Aug 2010 19:16:46 -0000
@@ -83,6 +83,8 @@
VariableDeclarationFix_add_final_change_name=Add final
VariableDeclarationFix_ChangeMidifiersToFinalWherPossible_description=Change modifiers to final where possible
+VariableDeclarationFix_sortModifiers_description=Correct modifiers order
+
PotentialProgrammingProblemsFix_calculatingUIDFailed_unknown=Could not calculate a serial version id for {0}. The type will be ignored.
PotentialProgrammingProblemsFix_add_id_change_name=Add Serial Version ID
PotentialProgrammingProblemsFix_calculatingUIDFailed_exception=Could not calculate serial version ids for serializable types in project {0}. The types will be ignored. Reason: {1}.
Index: core extension/org/eclipse/jdt/internal/corext/fix/SortModifiersFix.java
===================================================================
RCS file: core extension/org/eclipse/jdt/internal/corext/fix/SortModifiersFix.java
diff -N core extension/org/eclipse/jdt/internal/corext/fix/SortModifiersFix.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ core extension/org/eclipse/jdt/internal/corext/fix/SortModifiersFix.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Chris West (Faux) - [clean up] "Use modifier 'final' where possible" can introduce compile errors - https://bugs.eclipse.org/bugs/show_bug.cgi?id=272532
+ *******************************************************************************/
+package org.eclipse.jdt.internal.corext.fix;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+
+import org.eclipse.text.edits.TextEditGroup;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.BodyDeclaration;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.SimpleName;
+import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
+
+import org.eclipse.jdt.internal.corext.dom.HierarchicalASTVisitor;
+import org.eclipse.jdt.internal.corext.dom.ModifierRewrite;
+import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite;
+
+import org.eclipse.jdt.ui.cleanup.ICleanUpFix;
+
+public class SortModifiersFix extends CompilationUnitRewriteOperationsFix {
+
+ private static class WithModifiersNodeFinder extends HierarchicalASTVisitor {
+
+ private final List fWithModifiersNodes;
+ private final List fOperations;
+
+ public WithModifiersNodeFinder(List withModifiersNodes, List operations) {
+ fWithModifiersNodes= withModifiersNodes;
+ fOperations= operations;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean visit(BodyDeclaration node) {
+ if (node.modifiers().size() > 1) {
+ fWithModifiersNodes.add(node);
+ fOperations.add(createSortModifiersOperation(node));
+ }
+ return super.visit(node);
+ }
+
+ }
+
+ private static class SortModifiersOperation extends CompilationUnitRewriteOperation {
+
+ private final BodyDeclaration fWithModifiersNode;
+
+ public SortModifiersOperation(BodyDeclaration withModifiersNode) {
+ fWithModifiersNode= withModifiersNode;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void rewriteAST(CompilationUnitRewrite cuRewrite, LinkedProposalModel model) throws CoreException {
+ ASTRewrite rewrite= cuRewrite.getASTRewrite();
+
+ TextEditGroup group= createTextEditGroup(FixMessages.VariableDeclarationFix_sortModifiers_description, cuRewrite);
+
+ int modifiers= fWithModifiersNode.getModifiers();
+ ModifierRewrite modifierRewrite= ModifierRewrite.create(rewrite, fWithModifiersNode);
+ modifierRewrite.setModifiers(0, group);
+ modifierRewrite.setModifiers(modifiers, group);
+ }
+ }
+
+ private static SortModifiersOperation createSortModifiersOperation(BodyDeclaration withModifiersNode) {
+ return new SortModifiersOperation(withModifiersNode);
+ }
+
+ public static SortModifiersFix createFix(final CompilationUnit compilationUnit, ASTNode[] selectedNodes) {
+ List withModifiersNode= new LinkedList();
+ List operations= new ArrayList();
+ WithModifiersNodeFinder visitor= new WithModifiersNodeFinder(withModifiersNode, operations);
+ compilationUnit.accept(visitor);
+ if (selectedNodes.length == 1) {
+ if (selectedNodes[0] instanceof SimpleName) {
+ selectedNodes[0]= selectedNodes[0].getParent();
+ }
+ selectedNodes[0].accept(visitor);
+ } else {
+ for (int i= 0; i < selectedNodes.length; i++) {
+ ASTNode selectedNode= selectedNodes[i];
+ selectedNode.accept(visitor);
+ }
+ }
+ if (operations.size() == 0)
+ return null;
+
+ CompilationUnitRewriteOperation[] fixRewriteOperations= (CompilationUnitRewriteOperation[])operations.toArray(new CompilationUnitRewriteOperation[operations.size()]);
+
+ return new SortModifiersFix(FixMessages.VariableDeclarationFix_sortModifiers_description, compilationUnit, fixRewriteOperations);
+ }
+
+ public static ICleanUpFix createCleanUp(CompilationUnit compilationUnit) {
+ List withModifiersNodes= new LinkedList();
+ List operations= new ArrayList();
+ WithModifiersNodeFinder finder= new WithModifiersNodeFinder(withModifiersNodes, operations);
+ compilationUnit.accept(finder);
+
+ CompilationUnitRewriteOperation[] fixRewriteOperations= (CompilationUnitRewriteOperation[])operations.toArray(new CompilationUnitRewriteOperation[operations.size()]);
+
+ return new SortModifiersFix(FixMessages.VariableDeclarationFix_sortModifiers_description, compilationUnit, fixRewriteOperations);
+ }
+
+ protected SortModifiersFix(String name, CompilationUnit compilationUnit, CompilationUnitRewriteOperation[] fixRewriteOperations) {
+ super(name, compilationUnit, fixRewriteOperations);
+ }
+
+}
Index: plugin.xml
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/plugin.xml,v
retrieving revision 1.842
diff -u -r1.842 plugin.xml
--- plugin.xml 29 Jul 2010 09:15:47 -0000 1.842
+++ plugin.xml 30 Aug 2010 19:16:56 -0000
@@ -6597,6 +6597,11 @@
runAfter="org.eclipse.jdt.ui.cleanup.loop">
+
+
Index: ui/org/eclipse/jdt/internal/ui/fix/SortModifiersCleanUp.java
===================================================================
RCS file: ui/org/eclipse/jdt/internal/ui/fix/SortModifiersCleanUp.java
diff -N ui/org/eclipse/jdt/internal/ui/fix/SortModifiersCleanUp.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ui/org/eclipse/jdt/internal/ui/fix/SortModifiersCleanUp.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.internal.ui.fix;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+
+import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
+import org.eclipse.jdt.internal.corext.fix.SortModifiersFix;
+
+import org.eclipse.jdt.ui.cleanup.CleanUpContext;
+import org.eclipse.jdt.ui.cleanup.CleanUpRequirements;
+import org.eclipse.jdt.ui.cleanup.ICleanUpFix;
+
+public class SortModifiersCleanUp extends AbstractCleanUp {
+
+ public SortModifiersCleanUp(Map options) {
+ super(options);
+ }
+
+ public SortModifiersCleanUp() {
+ super();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public CleanUpRequirements getRequirements() {
+ return new CleanUpRequirements(requireAST(), false, false, null);
+ }
+
+ private boolean requireAST() {
+ return isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_SORT_MODIFIERS);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ICleanUpFix createFix(CleanUpContext context) throws CoreException {
+ CompilationUnit compilationUnit= context.getAST();
+ if (compilationUnit == null)
+ return null;
+
+ boolean addFinal= isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_SORT_MODIFIERS);
+ if (!addFinal)
+ return null;
+
+ return SortModifiersFix.createCleanUp(compilationUnit);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String[] getStepDescriptions() {
+ List result= new ArrayList();
+ return (String[])result.toArray(new String[result.size()]);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getPreview() {
+ StringBuffer buf= new StringBuffer();
+
+ if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_SORT_MODIFIERS)) {
+ buf.append("abstract public class A {\n"); //$NON-NLS-1$
+ buf.append(" static public final int FIELD= 0;\n"); //$NON-NLS-1$
+ buf.append(" final synchronized protected void foo() {}\n"); //$NON-NLS-1$
+ } else {
+ buf.append("public abstract class A {\n"); //$NON-NLS-1$
+ buf.append(" public static final int FIELD= 0;\n"); //$NON-NLS-1$
+ buf.append(" synchronized protected final void foo() {}\n"); //$NON-NLS-1$
+ }
+ buf.append("}\n"); //$NON-NLS-1$
+
+ return buf.toString();
+ }
+
+}
Index: ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java,v
retrieving revision 1.19
diff -u -r1.19 CleanUpMessages.java
--- ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java 21 May 2010 07:30:58 -0000 1.19
+++ ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java 30 Aug 2010 19:16:58 -0000
@@ -53,6 +53,7 @@
public static String CodeStyleTabPage_CheckboxName_UseFinalForFields;
public static String CodeStyleTabPage_CheckboxName_UseFinalForLocals;
public static String CodeStyleTabPage_CheckboxName_UseFinalForParameters;
+ public static String CodeStyleTabPage_CheckboxName_SortModifiers;
public static String CodeStyleTabPage_CheckboxName_UseParentheses;
public static String CodeStyleTabPage_GroupName_ControlStatments;
public static String CodeStyleTabPage_GroupName_Expressions;
Index: ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties,v
retrieving revision 1.26
diff -u -r1.26 CleanUpMessages.properties
--- ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties 20 May 2010 09:16:59 -0000 1.26
+++ ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties 30 Aug 2010 19:16:58 -0000
@@ -43,6 +43,7 @@
CodeStyleTabPage_GroupName_VariableDeclarations=Variable declarations
CodeStyleTabPage_CheckboxName_UseFinalForFields=Private &fields
CodeStyleTabPage_CheckboxName_UseFinalForLocals=&Local variables
+CodeStyleTabPage_CheckboxName_SortModifiers=Sort modifiers
CodeStyleTabPage_CheckboxName_ConvertForLoopToEnhanced=Conver&t for loops to enhanced
CodeStyleTabPage_GroupName_ControlStatments=Control statements
CodeStyleTabPage_RadioName_UseBlocksSpecial=Always &except for single 'return' or 'throw' statements
Index: ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CodeStyleTabPage.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CodeStyleTabPage.java,v
retrieving revision 1.12
diff -u -r1.12 CodeStyleTabPage.java
--- ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CodeStyleTabPage.java 10 Oct 2008 17:27:19 -0000 1.12
+++ ui/org/eclipse/jdt/internal/ui/preferences/cleanup/CodeStyleTabPage.java 30 Aug 2010 19:16:58 -0000
@@ -21,6 +21,7 @@
import org.eclipse.jdt.internal.ui.fix.ControlStatementsCleanUp;
import org.eclipse.jdt.internal.ui.fix.ConvertLoopCleanUp;
import org.eclipse.jdt.internal.ui.fix.ExpressionsCleanUp;
+import org.eclipse.jdt.internal.ui.fix.SortModifiersCleanUp;
import org.eclipse.jdt.internal.ui.fix.VariableDeclarationCleanUp;
public final class CodeStyleTabPage extends AbstractCleanUpTabPage {
@@ -36,7 +37,8 @@
new ControlStatementsCleanUp(values),
new ConvertLoopCleanUp(values),
new ExpressionsCleanUp(values),
- new VariableDeclarationCleanUp(values)
+ new VariableDeclarationCleanUp(values),
+ new SortModifiersCleanUp(values),
};
}
@@ -72,5 +74,8 @@
final CheckboxPreference useFinalParametersPref= createCheckboxPref(variableGroup, 1, CleanUpMessages.CodeStyleTabPage_CheckboxName_UseFinalForParameters, CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PARAMETERS, CleanUpModifyDialog.FALSE_TRUE);
final CheckboxPreference useFinalVariablesPref= createCheckboxPref(variableGroup, 1, CleanUpMessages.CodeStyleTabPage_CheckboxName_UseFinalForLocals, CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES, CleanUpModifyDialog.FALSE_TRUE);
registerSlavePreference(useFinalPref, new CheckboxPreference[] {useFinalFieldsPref, useFinalParametersPref, useFinalVariablesPref});
+
+ final CheckboxPreference sortModifiersPref= createCheckboxPref(variableGroup, numColumns, CleanUpMessages.CodeStyleTabPage_CheckboxName_SortModifiers, CleanUpConstants.VARIABLE_DECLARATIONS_SORT_MODIFIERS, CleanUpModifyDialog.FALSE_TRUE);
+ registerPreference(sortModifiersPref);
}
}
Index: ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java,v
retrieving revision 1.163
diff -u -r1.163 QuickAssistProcessor.java
--- ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java 13 Jul 2010 17:32:48 -0000 1.163
+++ ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java 30 Aug 2010 19:17:00 -0000
@@ -115,6 +115,7 @@
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
import org.eclipse.jdt.internal.corext.fix.ControlStatementsFix;
import org.eclipse.jdt.internal.corext.fix.ConvertLoopFix;
+import org.eclipse.jdt.internal.corext.fix.SortModifiersFix;
import org.eclipse.jdt.internal.corext.fix.IProposableFix;
import org.eclipse.jdt.internal.corext.fix.LinkedProposalModel;
import org.eclipse.jdt.internal.corext.fix.VariableDeclarationFix;
@@ -139,6 +140,7 @@
import org.eclipse.jdt.internal.ui.JavaPluginImages;
import org.eclipse.jdt.internal.ui.fix.ControlStatementsCleanUp;
import org.eclipse.jdt.internal.ui.fix.ConvertLoopCleanUp;
+import org.eclipse.jdt.internal.ui.fix.SortModifiersCleanUp;
import org.eclipse.jdt.internal.ui.fix.VariableDeclarationCleanUp;
import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
import org.eclipse.jdt.internal.ui.text.correction.proposals.ASTRewriteCorrectionProposal;
@@ -201,6 +203,7 @@
|| getConvertIterableLoopProposal(context, coveringNode, null)
|| getRemoveBlockProposals(context, coveringNode, null)
|| getMakeVariableDeclarationFinalProposals(context, null)
+ || getSortModifiersProposals(context, null)
|| getMissingCaseStatementProposals(context, coveringNode, null)
|| getConvertStringConcatenationProposals(context, null);
}
@@ -239,6 +242,7 @@
getConvertIterableLoopProposal(context, coveringNode, resultingCollections);
getRemoveBlockProposals(context, coveringNode, resultingCollections);
getMakeVariableDeclarationFinalProposals(context, resultingCollections);
+ getSortModifiersProposals(context, resultingCollections);
getConvertStringConcatenationProposals(context, resultingCollections);
getMissingCaseStatementProposals(context, coveringNode, resultingCollections);
}
@@ -1872,6 +1876,29 @@
resultingCollections.add(proposal);
return true;
}
+
+ private static boolean getSortModifiersProposals(IInvocationContext context, Collection resultingCollections) {
+ SelectionAnalyzer analyzer= new SelectionAnalyzer(Selection.createFromStartLength(context.getSelectionOffset(), context.getSelectionLength()), false);
+ context.getASTRoot().accept(analyzer);
+ ASTNode[] selectedNodes= analyzer.getSelectedNodes();
+ if (selectedNodes.length == 0)
+ return false;
+
+ IProposableFix fix= SortModifiersFix.createFix(context.getASTRoot(), selectedNodes);
+ if (fix == null)
+ return false;
+
+ if (resultingCollections == null)
+ return true;
+
+ Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);
+ Map options= new Hashtable();
+ options.put(CleanUpConstants.VARIABLE_DECLARATIONS_SORT_MODIFIERS, CleanUpOptions.TRUE);
+ SortModifiersCleanUp cleanUp= new SortModifiersCleanUp(options);
+ FixCorrectionProposal proposal= new FixCorrectionProposal(fix, cleanUp, 5, image, context);
+ resultingCollections.add(proposal);
+ return true;
+ }
private static boolean getInlineLocalProposal(IInvocationContext context, final ASTNode node, Collection proposals) throws CoreException {
if (!(node instanceof SimpleName))