private void buildContext(
ASTNode astNode,
ASTNode astNodeParent,
Binding qualifiedBinding,
Scope scope) {
CompletionContext context = new CompletionContext();
// build expected types context
if (this.expectedTypesPtr > -1) {
int length = this.expectedTypesPtr + 1;
char[][] expTypes = new char[length][];
char[][] expKeys = new char[length][];
for (int i = 0; i < length; i++) {
expTypes[i] = getSignature(this.expectedTypes[i]);
expKeys[i] = this.expectedTypes[i].computeUniqueKey();
}
context.setExpectedTypesSignatures(expTypes);
context.setExpectedTypesKeys(expKeys);
}
context.setOffset(this.actualCompletionPosition + 1 - this.offset);
// Set javadoc info
if (astNode instanceof CompletionOnJavadoc) {
this.assistNodeInJavadoc = ((CompletionOnJavadoc)astNode).getCompletionFlags();
context.setJavadoc(this.assistNodeInJavadoc);
}
if (!(astNode instanceof CompletionOnJavadoc)) {
CompletionScanner scanner = (CompletionScanner)this.parser.scanner;
context.setToken(scanner.completionIdentifier);
context.setTokenRange(
scanner.completedIdentifierStart - this.offset,
scanner.completedIdentifierEnd - this.offset,
scanner.endOfEmptyToken - this.offset);
} else if(astNode instanceof CompletionOnJavadocTag) {
CompletionOnJavadocTag javadocTag = (CompletionOnJavadocTag) astNode;
context.setToken(CharOperation.concat(new char[]{'@'}, javadocTag.token));
context.setTokenRange(
javadocTag.tagSourceStart - this.offset,
javadocTag.tagSourceEnd - this.offset,
((CompletionScanner)this.parser.javadocParser.scanner).endOfEmptyToken - this.offset);
} else {
CompletionScanner scanner = (CompletionScanner)this.parser.javadocParser.scanner;
context.setToken(scanner.completionIdentifier);
context.setTokenRange(
scanner.completedIdentifierStart - this.offset,
scanner.completedIdentifierEnd - this.offset,
scanner.endOfEmptyToken - this.offset);
}
if(astNode instanceof CompletionOnStringLiteral) {
context.setTokenKind(CompletionContext.TOKEN_KIND_STRING_LITERAL);
} else {
context.setTokenKind(CompletionContext.TOKEN_KIND_NAME);
}
if(DEBUG) {
System.out.println(context.toString());
}
this.requestor.acceptContext(context);
}