Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Arthanareeswaran2020-09-16 03:59:22 +0000
committerJay Arthanareeswaran2020-09-16 03:59:22 +0000
commit27b53ca171a19db4794ec310f4e339e876ea495f (patch)
tree3b12fd95b0afb9a5401d836d115751d13588c5c0 /org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
parenta8b03f929def2f6a9f479a198856e34e6cd4af34 (diff)
parent0a27063a3e6012ba850fd756f98be50be0375dc3 (diff)
downloadeclipse.jdt.core-27b53ca171a19db4794ec310f4e339e876ea495f.tar.gz
eclipse.jdt.core-27b53ca171a19db4794ec310f4e339e876ea495f.tar.xz
eclipse.jdt.core-27b53ca171a19db4794ec310f4e339e876ea495f.zip
Merge remote-tracking branch 'origin/BETA_JAVA15'
Diffstat (limited to 'org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java')
-rw-r--r--org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java139
1 files changed, 124 insertions, 15 deletions
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
index 68aea7e2c3..ca4d6b58f7 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
@@ -31,16 +31,100 @@ package org.eclipse.jdt.internal.codeassist.complete;
import java.util.HashSet;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.internal.compiler.*;
+import org.eclipse.jdt.core.compiler.CharOperation;
+import org.eclipse.jdt.internal.codeassist.impl.AssistParser;
+import org.eclipse.jdt.internal.codeassist.impl.Keywords;
+import org.eclipse.jdt.internal.codeassist.impl.RestrictedIdentifiers;
+import org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.eclipse.jdt.internal.compiler.ast.AND_AND_Expression;
+import org.eclipse.jdt.internal.compiler.ast.ASTNode;
+import org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
+import org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration;
+import org.eclipse.jdt.internal.compiler.ast.AllocationExpression;
+import org.eclipse.jdt.internal.compiler.ast.Annotation;
+import org.eclipse.jdt.internal.compiler.ast.Argument;
+import org.eclipse.jdt.internal.compiler.ast.ArrayAllocationExpression;
+import org.eclipse.jdt.internal.compiler.ast.ArrayInitializer;
+import org.eclipse.jdt.internal.compiler.ast.ArrayReference;
+import org.eclipse.jdt.internal.compiler.ast.AssertStatement;
+import org.eclipse.jdt.internal.compiler.ast.Assignment;
+import org.eclipse.jdt.internal.compiler.ast.BinaryExpression;
+import org.eclipse.jdt.internal.compiler.ast.Block;
+import org.eclipse.jdt.internal.compiler.ast.CaseStatement;
+import org.eclipse.jdt.internal.compiler.ast.CastExpression;
+import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
+import org.eclipse.jdt.internal.compiler.ast.CompoundAssignment;
+import org.eclipse.jdt.internal.compiler.ast.ConditionalExpression;
+import org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
+import org.eclipse.jdt.internal.compiler.ast.EmptyStatement;
+import org.eclipse.jdt.internal.compiler.ast.EqualExpression;
+import org.eclipse.jdt.internal.compiler.ast.ExplicitConstructorCall;
+import org.eclipse.jdt.internal.compiler.ast.Expression;
+import org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
+import org.eclipse.jdt.internal.compiler.ast.ForStatement;
+import org.eclipse.jdt.internal.compiler.ast.IfStatement;
+import org.eclipse.jdt.internal.compiler.ast.ImportReference;
+import org.eclipse.jdt.internal.compiler.ast.Initializer;
+import org.eclipse.jdt.internal.compiler.ast.InstanceOfExpression;
+import org.eclipse.jdt.internal.compiler.ast.IntLiteral;
+import org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
+import org.eclipse.jdt.internal.compiler.ast.MarkerAnnotation;
+import org.eclipse.jdt.internal.compiler.ast.MemberValuePair;
+import org.eclipse.jdt.internal.compiler.ast.MessageSend;
+import org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
+import org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.eclipse.jdt.internal.compiler.ast.ModuleReference;
+import org.eclipse.jdt.internal.compiler.ast.NameReference;
+import org.eclipse.jdt.internal.compiler.ast.NormalAnnotation;
+import org.eclipse.jdt.internal.compiler.ast.OR_OR_Expression;
+import org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference;
+import org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference;
+import org.eclipse.jdt.internal.compiler.ast.PrefixExpression;
+import org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression;
+import org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference;
+import org.eclipse.jdt.internal.compiler.ast.ReferenceExpression;
+import org.eclipse.jdt.internal.compiler.ast.ReturnStatement;
+import org.eclipse.jdt.internal.compiler.ast.SingleNameReference;
+import org.eclipse.jdt.internal.compiler.ast.SingleTypeReference;
+import org.eclipse.jdt.internal.compiler.ast.Statement;
+import org.eclipse.jdt.internal.compiler.ast.StringLiteral;
+import org.eclipse.jdt.internal.compiler.ast.SuperReference;
+import org.eclipse.jdt.internal.compiler.ast.SwitchExpression;
+import org.eclipse.jdt.internal.compiler.ast.SwitchStatement;
+import org.eclipse.jdt.internal.compiler.ast.SynchronizedStatement;
+import org.eclipse.jdt.internal.compiler.ast.ThisReference;
+import org.eclipse.jdt.internal.compiler.ast.ThrowStatement;
+import org.eclipse.jdt.internal.compiler.ast.TrueLiteral;
+import org.eclipse.jdt.internal.compiler.ast.TryStatement;
+import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
+import org.eclipse.jdt.internal.compiler.ast.TypeParameter;
+import org.eclipse.jdt.internal.compiler.ast.TypeReference;
+import org.eclipse.jdt.internal.compiler.ast.UnaryExpression;
+import org.eclipse.jdt.internal.compiler.ast.UnionTypeReference;
+import org.eclipse.jdt.internal.compiler.ast.WhileStatement;
+import org.eclipse.jdt.internal.compiler.ast.Wildcard;
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
-import org.eclipse.jdt.internal.compiler.env.*;
-import org.eclipse.jdt.internal.compiler.ast.*;
-import org.eclipse.jdt.internal.compiler.parser.*;
-import org.eclipse.jdt.internal.compiler.problem.*;
+import org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.eclipse.jdt.internal.compiler.lookup.ExtraCompilerModifiers;
+import org.eclipse.jdt.internal.compiler.parser.JavadocParser;
+import org.eclipse.jdt.internal.compiler.parser.Parser;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredAnnotation;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredBlock;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredElement;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredField;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredInitializer;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredLocalVariable;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredMethod;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredModule;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredPackageVisibilityStatement;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredProvidesStatement;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredType;
+import org.eclipse.jdt.internal.compiler.parser.RecoveredUnit;
+import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
+import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
+import org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
import org.eclipse.jdt.internal.compiler.util.HashtableOfObjectToInt;
import org.eclipse.jdt.internal.compiler.util.Util;
-import org.eclipse.jdt.core.compiler.CharOperation;
-import org.eclipse.jdt.internal.codeassist.impl.*;
public class CompletionParser extends AssistParser {
// OWNER
@@ -1567,12 +1651,21 @@ private boolean checkKeywordAndRestrictedIdentifiers() {
if((this.lastModifiers & ClassFileConstants.AccFinal) == 0) {
keywordsAndRestrictedIndentifiers[count++] = Keywords.INTERFACE;
}
- if (this.options.complianceLevel >= ClassFileConstants.JDK14 && this.options.enablePreviewFeatures == true) {
+ if (this.options.complianceLevel >= ClassFileConstants.JDK14
+ && this.options.enablePreviewFeatures == true) {
keywordsAndRestrictedIndentifiers[count++] = RestrictedIdentifiers.RECORD;
}
-
+ if (this.options.complianceLevel >= ClassFileConstants.JDK15
+ && this.options.enablePreviewFeatures == true) {
+ boolean nonSeal = (this.lastModifiers & ExtraCompilerModifiers.AccNonSealed) != 0;
+ boolean seal = (this.lastModifiers & ExtraCompilerModifiers.AccSealed) != 0;
+ if (!nonSeal && !seal) {
+ keywordsAndRestrictedIndentifiers[count++] = RestrictedIdentifiers.SEALED;
+ keywordsAndRestrictedIndentifiers[count++] = RestrictedIdentifiers.NON_SEALED;
+ }
+ }
}
- if(count != 0) {
+ if (count != 0) {
System.arraycopy(keywordsAndRestrictedIndentifiers, 0, keywordsAndRestrictedIndentifiers = new char[count][], 0, count);
this.assistNode = new CompletionOnKeyword2(ident, pos, keywordsAndRestrictedIndentifiers);
@@ -2146,6 +2239,11 @@ private void classHeaderExtendsOrImplements(boolean isInterface, boolean isRecor
}
keywords[count++] = Keywords.IMPLEMENTS;
}
+ if (this.options.enablePreviewFeatures) {
+ boolean sealed = (type.modifiers & ExtraCompilerModifiers.AccSealed) != 0;
+ if (sealed)
+ keywords[count++] = RestrictedIdentifiers.PERMITS;
+ }
System.arraycopy(keywords, 0, keywords = new char[count][], 0, count);
@@ -2476,15 +2574,27 @@ protected void consumeClassHeaderExtends() {
RecoveredType recoveredType = (RecoveredType)this.currentElement;
/* filter out cases where scanner is still inside type header */
if (!recoveredType.foundOpeningBrace) {
+ char[][] keywords = new char[2][];
+ int count = 0;
TypeDeclaration type = recoveredType.typeDeclaration;
if(type.superInterfaces == null) {
- type.superclass = new CompletionOnKeyword1(
+ keywords[count++] = Keywords.IMPLEMENTS;
+ }
+ if (this.options.enablePreviewFeatures) {
+ boolean sealed = (type.modifiers & ExtraCompilerModifiers.AccSealed) != 0;
+ if (sealed)
+ keywords[count++] = RestrictedIdentifiers.PERMITS;
+ }
+ System.arraycopy(keywords, 0, keywords = new char[count][], 0, count);
+ if(count > 0) {
+ CompletionOnKeyword1 completionOnKeyword = new CompletionOnKeyword1(
this.identifierStack[ptr],
this.identifierPositionStack[ptr],
- Keywords.IMPLEMENTS);
+ keywords);
+ type.superclass = completionOnKeyword;
type.superclass.bits |= ASTNode.IsSuperType;
- this.assistNode = type.superclass;
- this.lastCheckPoint = type.superclass.sourceEnd + 1;
+ this.assistNode = completionOnKeyword;
+ this.lastCheckPoint = completionOnKeyword.sourceEnd + 1;
}
}
}
@@ -2518,7 +2628,6 @@ protected void consumeClassTypeElt() {
super.consumeClassTypeElt();
popElement(K_NEXT_TYPEREF_IS_EXCEPTION);
}
-
@Override
protected void consumeCompilationUnit() {
this.javadoc = null;

Back to the top