package org.eclipse.jdt.internal.codeassist.complete;
import org.eclipse.jdt.internal.compiler.ast.*;
import org.eclipse.jdt.internal.compiler.impl.Constant;
import org.eclipse.jdt.internal.compiler.lookup.*;
public class CompletionOnMessageSend extends MessageSend {
@Override
public TypeBinding resolveType(BlockScope scope) {
this.constant = Constant.NotAConstant;
if (this.arguments != null) {
int argsLength = this.arguments.length;
for (int a = argsLength; --a >= 0;)
this.arguments[a].resolveType(scope);
}
if (this.receiver.isImplicitThis())
throw new CompletionNodeFound(this, null, scope);
this.actualReceiverType = this.receiver.resolveType(scope);
if (this.actualReceiverType == null || this.actualReceiverType.isBaseType())
throw new CompletionNodeFound();
if (this.actualReceiverType.isArrayType())
this.actualReceiverType = scope.getJavaLangObject();
throw new CompletionNodeFound(this, this.actualReceiverType, scope);
}
@Override
public StringBuffer printExpression(int indent, StringBuffer output) {
output.append("<CompleteOnMessageSend:");
if (!this.receiver.isImplicitThis()) this.receiver.printExpression(0, output).append('.');
if (this.typeArguments != null) {
output.append('<');
int max = this.typeArguments.length - 1;
for (int j = 0; j < max; j++) {
this.typeArguments[j].print(0, output);
output.append(", ");
}
this.typeArguments[max].print(0, output);
output.append('>');
}
output.append(this.selector).append('(');
if (this.arguments != null) {
for (int i = 0; i < this.arguments.length; i++) {
if (i > 0) output.append(", ");
this.arguments[i].printExpression(0, output);
}
}
return output.append(")>");
}
}