mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-26 00:11:26 +07:00
Optimization of resolving domain fields.
This commit is contained in:
@@ -38,6 +38,7 @@ import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements PsiElementFactory {
|
||||
@@ -275,6 +276,29 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps
|
||||
return new PsiClassReferenceType(classReference, null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public PsiClassType createType(@NotNull PsiClass aClass, PsiType parameter) {
|
||||
PsiTypeParameter[] typeParameters = aClass.getTypeParameters();
|
||||
assert typeParameters.length == 1;
|
||||
|
||||
Map<PsiTypeParameter, PsiType> map = Collections.singletonMap(typeParameters[0], parameter);
|
||||
|
||||
return createType(aClass, createSubstitutor(map));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public PsiClassType createType(@NotNull PsiClass aClass, PsiType... parameters) {
|
||||
PsiTypeParameter[] typeParameters = aClass.getTypeParameters();
|
||||
assert parameters.length == typeParameters.length;
|
||||
|
||||
Map<PsiTypeParameter, PsiType> map = new java.util.HashMap<PsiTypeParameter, PsiType>();
|
||||
for (int i = 0; i < parameters.length; i++) {
|
||||
map.put(typeParameters[i], parameters[i]);
|
||||
}
|
||||
|
||||
return createType(aClass, createSubstitutor(map));
|
||||
}
|
||||
|
||||
private static class TypeDetacher extends PsiTypeVisitor<PsiType> {
|
||||
public static final TypeDetacher INSTANCE = new TypeDetacher();
|
||||
|
||||
|
||||
@@ -43,8 +43,8 @@ import java.util.List;
|
||||
public class LightMethodBuilder extends LightElement implements PsiMethod {
|
||||
private final String myName;
|
||||
private Computable<PsiType> myReturnType;
|
||||
private final LightModifierList myModifierList;
|
||||
private LightParameterListBuilder myParameterList;
|
||||
private final PsiModifierList myModifierList;
|
||||
private PsiParameterList myParameterList;
|
||||
private Icon myBaseIcon;
|
||||
private PsiClass myContainingClass;
|
||||
private boolean myConstructor;
|
||||
@@ -61,10 +61,18 @@ public class LightMethodBuilder extends LightElement implements PsiMethod {
|
||||
}
|
||||
|
||||
public LightMethodBuilder(PsiManager manager, Language language, String name) {
|
||||
this(manager, language, name, new LightParameterListBuilder(manager, language), new LightModifierList(manager, language));
|
||||
}
|
||||
|
||||
public LightMethodBuilder(PsiManager manager,
|
||||
Language language,
|
||||
String name,
|
||||
PsiParameterList parameterList,
|
||||
PsiModifierList modifierList) {
|
||||
super(manager, language);
|
||||
myName = name;
|
||||
myModifierList = new LightModifierList(manager, language);
|
||||
myParameterList = new LightParameterListBuilder(manager, language);
|
||||
myParameterList = parameterList;
|
||||
myModifierList = modifierList;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -126,12 +134,12 @@ public class LightMethodBuilder extends LightElement implements PsiMethod {
|
||||
}
|
||||
|
||||
public LightMethodBuilder addModifier(String modifier) {
|
||||
myModifierList.addModifier(modifier);
|
||||
((LightModifierList)myModifierList).addModifier(modifier);
|
||||
return this;
|
||||
}
|
||||
|
||||
public LightMethodBuilder setModifiers(String... modifiers) {
|
||||
myModifierList.clearModifiers();
|
||||
((LightModifierList)myModifierList).clearModifiers();
|
||||
addModifiers(modifiers);
|
||||
return this;
|
||||
}
|
||||
@@ -145,13 +153,8 @@ public class LightMethodBuilder extends LightElement implements PsiMethod {
|
||||
return this;
|
||||
}
|
||||
|
||||
public LightMethodBuilder setReturnType(final PsiType returnType) {
|
||||
return setReturnType(new Computable<PsiType>() {
|
||||
@Override
|
||||
public PsiType compute() {
|
||||
return returnType;
|
||||
}
|
||||
});
|
||||
public LightMethodBuilder setReturnType(PsiType returnType) {
|
||||
return setReturnType(new Computable.PredefinedValueComputable<PsiType>(returnType));
|
||||
}
|
||||
|
||||
public PsiTypeElement getReturnTypeElement() {
|
||||
@@ -164,7 +167,7 @@ public class LightMethodBuilder extends LightElement implements PsiMethod {
|
||||
}
|
||||
|
||||
public LightMethodBuilder addParameter(PsiParameter parameter) {
|
||||
myParameterList.addParameter(parameter);
|
||||
((LightParameterListBuilder)myParameterList).addParameter(parameter);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user