当前位置: 首页>>代码示例>>Java>>正文


Java DotNetTypeResolveResult.getGenericExtractor方法代码示例

本文整理汇总了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);
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:27,代码来源:CSharpUsingNamespaceOrTypeResolveContext.java

示例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()]));
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:32,代码来源:CSharpBaseResolveContext.java

示例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;
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:28,代码来源:CSharpNullableTypeUtil.java

示例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;
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:31,代码来源:GenericInferenceUtil.java

示例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);
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:14,代码来源:CSharpSearchUtil.java

示例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);
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:33,代码来源:CSharpLikeMethodDeclarationImplUtil.java

示例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);
			}
		}
	}
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:28,代码来源:ExpectedUsingInfo.java

示例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;
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:41,代码来源:CS0151.java

示例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;
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:48,代码来源:CSharpTypeUtil.java

示例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);
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:62,代码来源:FieldOrPropertyKindProcessor.java

示例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);
		}
	}
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:69,代码来源:GenericInferenceUtil.java

示例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();
}
 
开发者ID:consulo,项目名称:consulo-csharp,代码行数:74,代码来源:CSharpDocumentationProvider.java


注:本文中的consulo.dotnet.resolve.DotNetTypeResolveResult.getGenericExtractor方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。