Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java')
-rw-r--r--org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java56
1 files changed, 53 insertions, 3 deletions
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
index 099d883256..ba6cc119a2 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
@@ -26,6 +26,7 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
@@ -50,6 +51,7 @@ import org.eclipse.jdt.core.WorkingCopyOwner;
import org.eclipse.jdt.core.compiler.CategorizedProblem;
import org.eclipse.jdt.core.compiler.CharOperation;
import org.eclipse.jdt.core.compiler.IProblem;
+import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
import org.eclipse.jdt.core.search.IJavaSearchConstants;
import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.core.search.SearchEngine;
@@ -57,9 +59,10 @@ import org.eclipse.jdt.core.search.SearchMatch;
import org.eclipse.jdt.core.search.SearchParticipant;
import org.eclipse.jdt.core.search.SearchPattern;
import org.eclipse.jdt.core.search.SearchRequestor;
+import org.eclipse.jdt.internal.codeassist.complete.AssistNodeParentAnnotationArrayInitializer;
+import org.eclipse.jdt.internal.codeassist.complete.CompletionJavadoc;
import org.eclipse.jdt.internal.codeassist.complete.CompletionNodeDetector;
import org.eclipse.jdt.internal.codeassist.complete.CompletionNodeFound;
-import org.eclipse.jdt.internal.codeassist.complete.AssistNodeParentAnnotationArrayInitializer;
import org.eclipse.jdt.internal.codeassist.complete.CompletionOnAnnotationOfType;
import org.eclipse.jdt.internal.codeassist.complete.CompletionOnArgumentName;
import org.eclipse.jdt.internal.codeassist.complete.CompletionOnBranchStatementLabel;
@@ -2234,7 +2237,8 @@ public final class CompletionEngine
}
}
}
-
+ // javadoc tag completion in module-info file
+ contextAccepted = completeJavadocTagInModuleInfo(parsedUnit);
if (parsedUnit.types != null) {
try {
this.lookupEnvironment.buildTypeBindings(parsedUnit, null /*no access restriction*/);
@@ -2337,6 +2341,43 @@ public final class CompletionEngine
}
}
+ private boolean completeJavadocTagInModuleInfo(CompilationUnitDeclaration parsedUnit) {
+ boolean contextAccepted = false;
+ if (this.parser.assistNodeParent instanceof CompletionJavadoc && parsedUnit.isModuleInfo() ) {
+ try {
+ this.lookupEnvironment.buildTypeBindings(parsedUnit, null /*no access restriction*/);
+ if(this.parser.assistNode instanceof CompletionOnJavadocTag) {
+ ((CompletionOnJavadocTag)this.parser.assistNode).filterPossibleTags(parsedUnit.scope);
+ }
+ throw new CompletionNodeFound(this.parser.assistNode, null, parsedUnit.scope);
+ }
+ catch (CompletionNodeFound e) {
+ if (e.astNode != null) {
+ // if null then we found a problem in the completion node
+ if(DEBUG) {
+ System.out.print("COMPLETION - Completion node : "); //$NON-NLS-1$
+ System.out.println(e.astNode.toString());
+ if(this.parser.assistNodeParent != null) {
+ System.out.print("COMPLETION - Parent Node : "); //$NON-NLS-1$
+ System.out.println(this.parser.assistNodeParent);
+ }
+ }
+ this.lookupEnvironment.unitBeingCompleted = parsedUnit; // better resilient to further error reporting
+ contextAccepted =
+ complete(
+ e.astNode,
+ this.parser.assistNodeParent,
+ this.parser.enclosingNode,
+ parsedUnit,
+ e.qualifiedBinding,
+ e.scope,
+ e.insideTypeAnnotation);
+ }
+ }
+ }
+ return contextAccepted;
+ }
+
private boolean checkForCNF(TypeReference ref, CompilationUnitDeclaration parsedUnit, boolean showAll) {
this.lookupEnvironment.buildTypeBindings(parsedUnit, null);
this.lookupEnvironment.completeTypeBindings(parsedUnit, true);
@@ -5313,7 +5354,16 @@ public final class CompletionEngine
proposal.setDeclarationSignature(getSignature(method.declaringClass));
proposal.setSignature(getSignature(method.returnType));
proposal.setName(method.selector);
- proposal.setCompletion(method.selector);
+ // add "=" to completion since it will always be needed
+ char[] completion= method.selector;
+ if (JavaCore.INSERT.equals(this.javaProject.getOption(DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_ASSIGNMENT_OPERATOR, true))) {
+ completion= CharOperation.concat(completion, new char[] {' '});
+ }
+ completion= CharOperation.concat(completion, new char[] {'='});
+ if (JavaCore.INSERT.equals(this.javaProject.getOption(DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_AFTER_ASSIGNMENT_OPERATOR, true))) {
+ completion= CharOperation.concat(completion, new char[] {' '});
+ }
+ proposal.setCompletion(completion);
proposal.setFlags(method.modifiers);
proposal.setReplaceRange(this.startPosition - this.offset, this.endPosition - this.offset);
proposal.setTokenRange(this.tokenStart - this.offset, this.tokenEnd - this.offset);

Back to the top