本文整理汇总了Java中consulo.dotnet.resolve.DotNetTypeResolveResult.getGenericExtractor方法的典型用法代码示例。如果您正苦于以下问题:Java DotNetTypeResolveResult.getGenericExtractor方法的具体用法?Java DotNetTypeResolveResult.getGenericExtractor怎么用?Java DotNetTypeResolveResult.getGenericExtractor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类consulo.dotnet.resolve.DotNetTypeResolveResult
的用法示例。
在下文中一共展示了DotNetTypeResolveResult.getGenericExtractor方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: compute
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@NotNull
@Override
@RequiredReadAction
protected CSharpResolveContext compute()
{
PsiElement targetElement = null;
DotNetGenericExtractor extractor = DotNetGenericExtractor.EMPTY;
if(myUsingListChild instanceof CSharpUsingNamespaceStatement)
{
targetElement = ((CSharpUsingNamespaceStatement) myUsingListChild).resolve();
}
else if(myUsingListChild instanceof CSharpUsingTypeStatement)
{
DotNetTypeRef typeRef = ((CSharpUsingTypeStatement) myUsingListChild).getTypeRef();
DotNetTypeResolveResult typeResolveResult = typeRef.resolve();
targetElement = typeResolveResult.getElement();
extractor = typeResolveResult.getGenericExtractor();
}
if(targetElement == null)
{
return CSharpResolveContext.EMPTY;
}
return CSharpResolveContextUtil.createContext(extractor, myUsingListChild.getResolveScope(), targetElement);
}
示例2: getSuperContextImpl
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@NotNull
@RequiredReadAction
private CSharpResolveContext getSuperContextImpl(Set<PsiElement> alreadyProcessedItem)
{
List<DotNetTypeRef> superTypes = getExtendTypeRefs();
if(superTypes.isEmpty())
{
return EMPTY;
}
List<CSharpResolveContext> contexts = new ArrayList<>(superTypes.size());
for(DotNetTypeRef dotNetTypeRef : superTypes)
{
DotNetTypeResolveResult typeResolveResult = dotNetTypeRef.resolve();
PsiElement resolvedElement = typeResolveResult.getElement();
if(resolvedElement != null && alreadyProcessedItem.add(resolvedElement))
{
DotNetGenericExtractor genericExtractor = typeResolveResult.getGenericExtractor();
contexts.add(CSharpResolveContextUtil.createContext(genericExtractor, myElement.getResolveScope(), resolvedElement, alreadyProcessedItem));
}
}
if(contexts.isEmpty())
{
return EMPTY;
}
return new CSharpCompositeResolveContext(myElement.getProject(), contexts.toArray(new CSharpResolveContext[contexts.size()]));
}
示例3: unbox
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@NotNull
@RequiredReadAction
public static DotNetTypeRef unbox(@NotNull DotNetTypeRef typeRef)
{
DotNetTypeResolveResult typeResolveResult = typeRef.resolve();
PsiElement element = typeResolveResult.getElement();
if(element == null)
{
return typeRef;
}
if(element instanceof CSharpTypeDeclaration && Comparing.equal(((CSharpTypeDeclaration) element).getVmQName(), DotNetTypes.System.Nullable$1))
{
DotNetGenericExtractor genericExtractor = typeResolveResult.getGenericExtractor();
DotNetGenericParameter[] genericParameters = ((CSharpTypeDeclaration) element).getGenericParameters();
if(genericParameters.length == 1)
{
DotNetTypeRef extract = genericExtractor.extract(genericParameters[0]);
if(extract != null)
{
return extract;
}
}
}
return typeRef;
}
示例4: findIndexOfGeneric
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@RequiredReadAction
private static int findIndexOfGeneric(DotNetTypeResolveResult parameterTypeResolveResult, DotNetGenericParameter methodGenericParameter)
{
PsiElement parameterElement = parameterTypeResolveResult.getElement();
if(parameterElement instanceof DotNetGenericParameterListOwner)
{
DotNetGenericParameter[] genericParameters = ((DotNetGenericParameterListOwner) parameterElement).getGenericParameters();
if(genericParameters.length == 0)
{
return -1;
}
DotNetGenericExtractor genericExtractor = parameterTypeResolveResult.getGenericExtractor();
for(int i = 0; i < genericParameters.length; i++)
{
DotNetTypeRef extractedTypeRef = genericExtractor.extract(genericParameters[i]);
if(extractedTypeRef == null)
{
continue;
}
DotNetTypeResolveResult extractedTypeResolveResult = extractedTypeRef.resolve();
if(methodGenericParameter.isEquivalentTo(extractedTypeResolveResult.getElement()))
{
return i;
}
}
}
return -1;
}
示例5: findPropertyByName
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@Nullable
@RequiredReadAction
public static DotNetPropertyDeclaration findPropertyByName(@NotNull final String name, @Nullable String parentQName, @NotNull DotNetTypeRef typeRef)
{
DotNetTypeResolveResult typeResolveResult = typeRef.resolve();
PsiElement resolvedElement = typeResolveResult.getElement();
if(resolvedElement == null)
{
return null;
}
DotNetGenericExtractor genericExtractor = typeResolveResult.getGenericExtractor();
return findPropertyByName(name, resolvedElement, parentQName, genericExtractor);
}
示例6: resolveVirtualImplementation
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@NotNull
@RequiredReadAction
public static Pair<ResolveVirtualImplementResult, PsiElement> resolveVirtualImplementation(@NotNull DotNetVirtualImplementOwner owner, @NotNull PsiElement scope)
{
DotNetType typeForImplement = owner.getTypeForImplement();
if(typeForImplement == null)
{
return Pair.create(ResolveVirtualImplementResult.CANT_HAVE, null);
}
DotNetTypeRef typeRefForImplement = typeForImplement.toTypeRef();
DotNetTypeResolveResult typeResolveResult = typeRefForImplement.resolve();
PsiElement resolvedElement = typeResolveResult.getElement();
DotNetGenericExtractor genericExtractor = typeResolveResult.getGenericExtractor();
if(!(resolvedElement instanceof CSharpTypeDeclaration))
{
return Pair.create(ResolveVirtualImplementResult.CANT_HAVE, null);
}
for(DotNetNamedElement namedElement : ((CSharpTypeDeclaration) resolvedElement).getMembers())
{
namedElement = GenericUnwrapTool.extract(namedElement, genericExtractor);
if(CSharpElementCompareUtil.isEqual(namedElement, owner, scope))
{
return Pair.<ResolveVirtualImplementResult, PsiElement>create(ResolveVirtualImplementResult.FOUND, namedElement);
}
}
return Pair.<ResolveVirtualImplementResult, PsiElement>create(ResolveVirtualImplementResult.NOT_FOUND, null);
}
示例7: fillFromTypeRef
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@RequiredReadAction
private static void fillFromTypeRef(DotNetTypeRef ref, Set<PsiElement> map)
{
DotNetTypeResolveResult resolveResult = ref.resolve();
PsiElement element = resolveResult.getElement();
if(element instanceof CSharpTypeDeclaration)
{
map.add(element);
}
if(element instanceof DotNetGenericParameterListOwner)
{
DotNetGenericExtractor genericExtractor = resolveResult.getGenericExtractor();
DotNetGenericParameter[] genericParameters = ((DotNetGenericParameterListOwner) element).getGenericParameters();
for(DotNetGenericParameter genericParameter : genericParameters)
{
DotNetTypeRef extractedTypeRef = genericExtractor.extract(genericParameter);
if(extractedTypeRef != null)
{
fillFromTypeRef(extractedTypeRef, map);
}
}
}
}
示例8: isValidTypeRef
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@RequiredReadAction
private boolean isValidTypeRef(DotNetTypeRef typeRef)
{
DotNetTypeResolveResult typeResolveResult = typeRef.resolve();
PsiElement resolvedElement = typeResolveResult.getElement();
if(resolvedElement instanceof CSharpTypeDeclaration)
{
CSharpTypeDeclaration typeDeclaration = (CSharpTypeDeclaration) resolvedElement;
if(typeDeclaration.isEnum())
{
return true;
}
String vmQName = typeDeclaration.getVmQName();
if(ArrayUtil.contains(vmQName, ourSwitchTypes))
{
return true;
}
if(DotNetTypes.System.Nullable$1.equals(vmQName))
{
int genericParametersCount = typeDeclaration.getGenericParametersCount();
if(genericParametersCount > 0)
{
DotNetGenericParameter genericParameter = typeDeclaration.getGenericParameters()[0];
DotNetGenericExtractor genericExtractor = typeResolveResult.getGenericExtractor();
DotNetTypeRef extractedTypRef = genericExtractor.extract(genericParameter);
if(extractedTypRef == null)
{
return false;
}
return isValidTypeRef(extractedTypRef);
}
}
}
return false;
}
示例9: getImplicitOrExplicitTypeRefs
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@NotNull
@RequiredReadAction
public static List<DotNetTypeRef> getImplicitOrExplicitTypeRefs(@NotNull DotNetTypeRef fromTypeRef,
@NotNull DotNetTypeRef leftTypeRef,
@NotNull CSharpCastType explicitOrImplicit,
@NotNull PsiElement scope)
{
DotNetTypeResolveResult typeResolveResult = fromTypeRef.resolve();
PsiElement typeResolveResultElement = typeResolveResult.getElement();
if(!(typeResolveResultElement instanceof DotNetTypeDeclaration))
{
return Collections.emptyList();
}
CSharpResolveContext context = CSharpResolveContextUtil.createContext(DotNetGenericExtractor.EMPTY, scope.getResolveScope(), typeResolveResultElement);
CSharpElementGroup<CSharpConversionMethodDeclaration> conversionMethodGroup = context.findConversionMethodGroup(explicitOrImplicit, true);
if(conversionMethodGroup == null)
{
return Collections.emptyList();
}
DotNetGenericExtractor extractor = typeResolveResult.getGenericExtractor();
List<DotNetTypeRef> list = new SmartList<DotNetTypeRef>();
for(CSharpConversionMethodDeclaration declaration : conversionMethodGroup.getElements())
{
// extract here
declaration = GenericUnwrapTool.extract(declaration, extractor);
DotNetTypeRef[] parameters = declaration.getParameterTypeRefs();
DotNetTypeRef parameterTypeRef = ArrayUtil2.safeGet(parameters, 0);
if(parameterTypeRef == null)
{
continue;
}
if(!isInheritable(parameterTypeRef, leftTypeRef, scope))
{
continue;
}
list.add(declaration.getReturnTypeRef());
}
return list;
}
示例10: process
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@RequiredReadAction
@Override
public void process(@NotNull CSharpResolveOptions options,
@NotNull DotNetGenericExtractor defaultExtractor,
@Nullable PsiElement forceQualifierElement,
@NotNull Processor<ResolveResult> processor)
{
PsiElement element = options.getElement();
DotNetTypeRef resolvedTypeRef = null;
CSharpFieldOrPropertySetBlock block = PsiTreeUtil.getParentOfType(element, CSharpFieldOrPropertySetBlock.class);
if(block != null)
{
PsiElement parent = block.getParent();
if(parent instanceof CSharpShortObjectInitializerExpressionImpl)
{
resolvedTypeRef = ((CSharpShortObjectInitializerExpressionImpl) parent).toTypeRef(true);
}
}
if(resolvedTypeRef == null)
{
CSharpCallArgumentListOwner callArgumentListOwner = PsiTreeUtil.getParentOfType(element, CSharpCallArgumentListOwner.class);
if(callArgumentListOwner instanceof CSharpNewExpression)
{
resolvedTypeRef = ((CSharpNewExpression) callArgumentListOwner).toTypeRef(false);
}
else if(callArgumentListOwner instanceof DotNetAttribute)
{
resolvedTypeRef = ((DotNetAttribute) callArgumentListOwner).toTypeRef();
}
else
{
resolvedTypeRef = DotNetTypeRef.ERROR_TYPE;
}
}
if(resolvedTypeRef == DotNetTypeRef.ERROR_TYPE)
{
return;
}
DotNetTypeResolveResult typeResolveResult = resolvedTypeRef.resolve();
PsiElement typeElement = typeResolveResult.getElement();
if(typeElement == null)
{
return;
}
DotNetGenericExtractor genericExtractor = typeResolveResult.getGenericExtractor();
StubScopeProcessor scopeProcessor = CSharpReferenceExpressionImplUtil.createMemberProcessor(options, processor);
ResolveState state = ResolveState.initial();
state = state.put(CSharpResolveUtil.EXTRACTOR, genericExtractor);
state = state.put(CSharpResolveUtil.SELECTOR, options.getSelector());
CSharpResolveUtil.walkChildren(scopeProcessor, typeElement, false, true, state);
}
示例11: inferenceGenericFromExpressionTypeRefAndParameterTypeRef
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@RequiredReadAction
private static void inferenceGenericFromExpressionTypeRefAndParameterTypeRef(DotNetGenericParameter[] methodGenericParameters,
Map<DotNetGenericParameter, DotNetTypeRef> map,
DotNetTypeRef parameterTypeRef,
DotNetTypeRef expressionTypeRef,
PsiElement scope)
{
if(expressionTypeRef == DotNetTypeRef.AUTO_TYPE || expressionTypeRef == DotNetTypeRef.UNKNOWN_TYPE || expressionTypeRef == DotNetTypeRef.ERROR_TYPE)
{
return;
}
ProgressManager.checkCanceled();
DotNetTypeResolveResult parameterTypeResolveResult = parameterTypeRef.resolve();
PsiElement parameterElement = parameterTypeResolveResult.getElement();
for(DotNetGenericParameter genericParameter : methodGenericParameters)
{
if(map.containsKey(genericParameter))
{
continue;
}
if(genericParameter.isEquivalentTo(parameterElement))
{
map.put(genericParameter, expressionTypeRef);
return;
}
}
DotNetTypeResolveResult expressionResultResult = CSharpTypeUtil.findTypeRefFromExtends(expressionTypeRef, parameterTypeRef, scope);
if(expressionResultResult == null)
{
return;
}
PsiElement expressionElement = expressionResultResult.getElement();
DotNetGenericExtractor expressionExtractor = expressionResultResult.getGenericExtractor();
if(expressionElement instanceof DotNetGenericParameterListOwner)
{
DotNetGenericParameter[] expressionGenericParameters = ((DotNetGenericParameterListOwner) expressionElement).getGenericParameters();
tryToFindTypeArgumentsForParameters(methodGenericParameters, map, parameterTypeResolveResult, expressionExtractor, expressionGenericParameters);
// inference ended
if(map.size() == methodGenericParameters.length)
{
return;
}
// list of deep type arguments <expression, parameter>
List<Couple<DotNetTypeResolveResult>> levels = new SmartList<>();
pushTypeArgumentsDeep(levels, expressionGenericParameters, expressionExtractor, parameterTypeResolveResult.getGenericExtractor());
for(Couple<DotNetTypeResolveResult> level : levels)
{
DotNetTypeResolveResult expressionTypeResult = level.getFirst();
DotNetTypeResolveResult parameterTypeResult = level.getSecond();
DotNetGenericParameter[] otherExpressionGenericParameters = ((DotNetTypeDeclaration) expressionTypeResult.getElement()).getGenericParameters();
tryToFindTypeArgumentsForParameters(methodGenericParameters, map, parameterTypeResult, expressionTypeResult.getGenericExtractor(), otherExpressionGenericParameters);
}
}
}
示例12: generateLinksForType
import consulo.dotnet.resolve.DotNetTypeResolveResult; //导入方法依赖的package包/类
@RequiredReadAction
private static String generateLinksForType(DotNetTypeRef typeRef, PsiElement element, boolean qualified)
{
StringBuilder builder = new StringBuilder();
if(typeRef == DotNetTypeRef.AUTO_TYPE)
{
builder.append("var");
}
else if(typeRef instanceof DotNetArrayTypeRef)
{
builder.append(generateLinksForType(((DotNetArrayTypeRef) typeRef).getInnerTypeRef(), element, qualified));
builder.append("[]");
}
else if(typeRef instanceof CSharpRefTypeRef)
{
builder.append(((CSharpRefTypeRef) typeRef).getType().name());
builder.append(" ");
builder.append(generateLinksForType(((CSharpRefTypeRef) typeRef).getInnerTypeRef(), element, qualified));
}
else if(typeRef instanceof DotNetPointerTypeRef)
{
builder.append(generateLinksForType(((DotNetPointerTypeRef) typeRef).getInnerTypeRef(), element, qualified));
builder.append("*");
}
else
{
DotNetTypeResolveResult dotNetTypeResolveResult = typeRef.resolve();
PsiElement resolved = dotNetTypeResolveResult.getElement();
if(resolved instanceof DotNetQualifiedElement)
{
if(resolved instanceof DotNetGenericParameterListOwner)
{
wrapToLink(resolved, builder, qualified);
DotNetGenericParameter[] genericParameters = ((DotNetGenericParameterListOwner) resolved).getGenericParameters();
if(genericParameters.length > 0)
{
DotNetGenericExtractor genericExtractor = dotNetTypeResolveResult.getGenericExtractor();
builder.append(XmlStringUtil.escapeString("<"));
for(int i = 0; i < genericParameters.length; i++)
{
if(i != 0)
{
builder.append(", ");
}
DotNetGenericParameter parameter = genericParameters[i];
DotNetTypeRef extractedTypeRef = genericExtractor.extract(parameter);
if(extractedTypeRef != null)
{
builder.append(generateLinksForType(extractedTypeRef, element, qualified));
}
else
{
builder.append(parameter.getName());
}
}
builder.append(XmlStringUtil.escapeString(">"));
}
}
else
{
builder.append(((DotNetQualifiedElement) resolved).getName());
}
}
else
{
builder.append(CSharpTypeRefPresentationUtil.buildShortText(typeRef, element));
}
}
return builder.toString();
}