Smart completion: imports insertion + fixed both behaviour and presentation of qualified members in lookup

This commit is contained in:
Valentin Kipyatkov
2013-12-25 22:26:48 +04:00
parent f303b6dae5
commit 39f07b8354
25 changed files with 223 additions and 56 deletions
@@ -85,6 +85,7 @@ public final class FqNameUnsafe extends FqNameBase {
@Override
@NotNull
public String asString() {
return fqName;
@@ -267,6 +268,7 @@ public final class FqNameUnsafe extends FqNameBase {
@Override
@NotNull
public String toString() {
return isRoot() ? ROOT_NAME.asString() : fqName;
}
@@ -21,6 +21,9 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.TypeProjection;
import java.util.List;
public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
DescriptorRenderer COMPACT_WITH_MODIFIERS = new DescriptorRendererBuilder().setWithDefinedIn(false).build();
@@ -61,6 +64,9 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
@NotNull
String renderType(@NotNull JetType type);
@NotNull
String renderTypeArguments(@NotNull List<TypeProjection> typeArguments);
@NotNull
@Override
String render(@NotNull DeclarationDescriptor declarationDescriptor);
@@ -201,6 +201,17 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
return escape(renderTypeWithoutEscape(type));
}
@NotNull
@Override
public String renderTypeArguments(@NotNull List<TypeProjection> typeArguments) {
if (typeArguments.isEmpty()) return "";
StringBuilder sb = new StringBuilder();
sb.append("<");
appendTypeProjections(typeArguments, sb);
sb.append(">");
return sb.toString();
}
private String renderTypeWithoutEscape(@NotNull JetType type) {
if (type == CANT_INFER_LAMBDA_PARAM_TYPE || type == CANT_INFER_TYPE_PARAMETER) {
return "???";