Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 1861 Details for
Bug 21804
Need to surface compiler setting COMPILER_PB_STATIC_ACCESS_RECEIVER
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
quickfix for non-static access to static member
bug21804-patch-2.txt (text/plain), 9.00 KB, created by
Renaud Waldura
on 2002-08-19 23:42:40 EDT
(
hide
)
Description:
quickfix for non-static access to static member
Filename:
MIME Type:
Creator:
Renaud Waldura
Created:
2002-08-19 23:42:40 EDT
Size:
9.00 KB
patch
obsolete
>Index: CorrectionMessages.properties >=================================================================== >RCS file: /home/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.properties,v >retrieving revision 1.14 >diff -u -r1.14 CorrectionMessages.properties >--- CorrectionMessages.properties 13 Aug 2002 10:19:38 -0000 1.14 >+++ CorrectionMessages.properties 20 Aug 2002 03:25:46 -0000 >@@ -31,7 +31,7 @@ > LocalCorrectionsSubProcessor.missingreturntype.description=Set return type to ''{0}'' > LocalCorrectionsSubProcessor.externalizestrings.description=Externalize Strings > LocalCorrectionsSubProcessor.externalizestrings.dialog.title=Externalize Strings >- >+LocalCorrectionsSubProcessor.changeaccesstostatic.description=Change access to static > > UnresolvedElementsSubProcessor.changemethod.description=Change to ''{0}(..)'' > UnresolvedElementsSubProcessor.createmethod.description=Create method ''{0}(..)'' >Index: JavaCorrectionProcessor.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/JavaCorrectionProcessor.java,v >retrieving revision 1.36 >diff -u -r1.36 JavaCorrectionProcessor.java >--- JavaCorrectionProcessor.java 23 Jul 2002 13:17:28 -0000 1.36 >+++ JavaCorrectionProcessor.java 20 Aug 2002 03:25:46 -0000 >@@ -206,8 +206,12 @@ > case IProblem.NonExternalizedStringLiteral: > LocalCorrectionsSubProcessor.addNLSProposals(problemPos, proposals); > break; >+ case IProblem.NonStaticAccessToStaticField: >+ case IProblem.NonStaticAccessToStaticMethod: >+ LocalCorrectionsSubProcessor.addAccessToStaticProposals(problemPos, proposals); >+ break; > default: >- proposals.add(new NoCorrectionProposal(problemPos)); >+ proposals.add(new NoCorrectionProposal(problemPos)); > } > } catch (CoreException e) { > JavaPlugin.log(e); >Index: LocalCorrectionsSubProcessor.java >=================================================================== >RCS file: /home/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java,v >retrieving revision 1.16 >diff -u -r1.16 LocalCorrectionsSubProcessor.java >--- LocalCorrectionsSubProcessor.java 12 Aug 2002 10:19:36 -0000 1.16 >+++ LocalCorrectionsSubProcessor.java 20 Aug 2002 03:25:46 -0000 >@@ -1,6 +1,7 @@ > package org.eclipse.jdt.internal.ui.text.correction; > > import java.util.ArrayList; >+import java.util.Iterator; > import java.util.List; > > import org.eclipse.core.runtime.CoreException; >@@ -22,12 +23,17 @@ > import org.eclipse.jdt.core.dom.BodyDeclaration; > import org.eclipse.jdt.core.dom.CompilationUnit; > import org.eclipse.jdt.core.dom.Expression; >+import org.eclipse.jdt.core.dom.FieldAccess; > import org.eclipse.jdt.core.dom.FieldDeclaration; > import org.eclipse.jdt.core.dom.ITypeBinding; > import org.eclipse.jdt.core.dom.MethodDeclaration; >+import org.eclipse.jdt.core.dom.MethodInvocation; >+import org.eclipse.jdt.core.dom.Name; >+import org.eclipse.jdt.core.dom.QualifiedName; > import org.eclipse.jdt.core.dom.ReturnStatement; > import org.eclipse.jdt.core.dom.SimpleName; > import org.eclipse.jdt.core.dom.Statement; >+import org.eclipse.jdt.core.dom.ThisExpression; > import org.eclipse.jdt.core.dom.Type; > import org.eclipse.jdt.core.dom.VariableDeclarationFragment; > import org.eclipse.jdt.core.dom.VariableDeclarationStatement; >@@ -35,7 +41,9 @@ > import org.eclipse.jdt.internal.corext.codemanipulation.CodeGenerationSettings; > import org.eclipse.jdt.internal.corext.codemanipulation.ImportEdit; > import org.eclipse.jdt.internal.corext.codemanipulation.StubUtility; >+import org.eclipse.jdt.internal.corext.dom.ASTNodes; > import org.eclipse.jdt.internal.corext.dom.ASTRewriteAnalyzer; >+import org.eclipse.jdt.internal.corext.dom.Bindings; > import org.eclipse.jdt.internal.corext.dom.GenericVisitor; > import org.eclipse.jdt.internal.corext.refactoring.changes.CompilationUnitChange; > import org.eclipse.jdt.internal.corext.refactoring.nls.NLSRefactoring; >@@ -88,10 +96,7 @@ > String label= CorrectionMessages.getFormattedString("LocalCorrectionsSubProcessor.addcast.description", castDestType); //$NON-NLS-1$ > InsertCorrectionProposal proposal= new InsertCorrectionProposal(label, cu, pos, cast, 1); > >- CodeGenerationSettings settings= JavaPreferencesSettings.getCodeGenerationSettings(); >- ImportEdit edit= new ImportEdit(cu, settings); >- edit.addImport(castDestType); >- proposal.getCompilationUnitChange().addTextEdit("import", edit); //$NON-NLS-1$ >+ addImportToProposal(cu, castDestType, proposal); > > proposals.add(proposal); > >@@ -116,9 +121,8 @@ > > label= CorrectionMessages.getFormattedString("LocalCorrectionsSubProcessor.addcast_var.description", simpleCastType); //$NON-NLS-1$ > ReplaceCorrectionProposal varProposal= new ReplaceCorrectionProposal(label, cu, type.getStartPosition(), type.getLength(), simpleCastType, 1); >- edit= new ImportEdit(cu, settings); >- edit.addImport(castType); >- varProposal.getCompilationUnitChange().addTextEdit("import", edit); //$NON-NLS-1$ >+ >+ addImportToProposal(cu, castType, varProposal); > > proposals.add(varProposal); > } >@@ -164,10 +168,8 @@ > Image image= JavaPluginImages.get(JavaPluginImages.IMG_OBJS_EXCEPTION); > ASTRewriteCorrectionProposal proposal= new ASTRewriteCorrectionProposal(label, cu, astRoot, 0, image); > >- ImportEdit edit= new ImportEdit(cu, JavaPreferencesSettings.getCodeGenerationSettings()); >- edit.addImport(uncaughtName); >- proposal.getCompilationUnitChange().addTextEdit("import", edit); //$NON-NLS-1$ >- >+ addImportToProposal(cu, uncaughtName, proposal); >+ > proposals.add(proposal); > } > } >@@ -256,10 +258,7 @@ > String label= CorrectionMessages.getFormattedString("LocalCorrectionsSubProcessor.missingreturntype.description", type.getName()); //$NON-NLS-1$ > InsertCorrectionProposal proposal= new InsertCorrectionProposal(label, cu, pos, str, 1); > >- CodeGenerationSettings settings= JavaPreferencesSettings.getCodeGenerationSettings(); >- ImportEdit edit= new ImportEdit(problemPos.getCompilationUnit(), settings); >- edit.addImport(type.getName()); >- proposal.getCompilationUnitChange().addTextEdit("import", edit); //$NON-NLS-1$ >+ addImportToProposal(problemPos.getCompilationUnit(), type, proposal); > > proposals.add(proposal); > } >@@ -334,6 +333,60 @@ > proposals.add(proposal); > } > >+ /** >+ * A static field or method is accessed using a non-static reference. E.g. >+ * <pre> >+ * File f = new File(); >+ * f.pathSeparator; >+ * </pre> >+ * This correction changes <code>f</code> above to <code>File</code>. >+ * >+ * @param problemPos >+ * @param proposals >+ */ >+ public static void addAccessToStaticProposals(ProblemPosition problemPos, List proposals) throws CoreException { >+ ICompilationUnit cu= problemPos.getCompilationUnit(); >+ >+ CompilationUnit astRoot= AST.parseCompilationUnit(cu, true); >+ ASTNode selectedNode= ASTResolving.findSelectedNode(astRoot, problemPos.getOffset(), problemPos.getLength()); >+ >+ if (selectedNode != null) { >+ Name qualifier= getQualifier(selectedNode); >+ >+ if (qualifier != null) { >+ ITypeBinding type= qualifier.resolveTypeBinding(); >+ >+ String label= CorrectionMessages.getString("LocalCorrectionsSubProcessor.changeaccesstostatic.description"); >+ ReplaceCorrectionProposal proposal= new ReplaceCorrectionProposal(label, cu, qualifier.getStartPosition(), qualifier.getLength(), type.getName(), 0); >+ >+ addImportToProposal(cu, type, proposal); >+ >+ proposals.add(proposal); >+ } >+ } >+ } > >+ private static void addImportToProposal(ICompilationUnit cu, ITypeBinding type, CUCorrectionProposal proposal) throws CoreException { >+ addImportToProposal(cu, Bindings.getFullyQualifiedImportName(type), proposal); >+ } >+ >+ private static void addImportToProposal(ICompilationUnit cu, String typeName, CUCorrectionProposal proposal) throws CoreException { >+ ImportEdit edit= new ImportEdit(cu, JavaPreferencesSettings.getCodeGenerationSettings()); >+ edit.addImport(typeName); >+ proposal.getCompilationUnitChange().addTextEdit("import", edit); //$NON-NLS-1$ >+ } >+ >+ private static Name getQualifier(ASTNode node) { >+ if (node instanceof QualifiedName) { >+ QualifiedName qn= (QualifiedName) node; >+ return qn.getQualifier(); >+ } else if (node instanceof MethodInvocation) { >+ MethodInvocation mi= (MethodInvocation) node; >+ if (mi.getExpression() instanceof Name) { >+ return (Name) mi.getExpression(); >+ } >+ } >+ return null; >+ } > > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 21804
:
1849
| 1861