@NotNull private static String psiTypeToString(@NotNull PsiTypeElement typeElement) { String name = removeGeneric(typeElement.getType().getPresentableText()); String typeElementString = removeGeneric(typeElement.toString()); int dot = typeElementString.indexOf("."); if (dot != -1) { String outerClasses = typeElementString.substring(typeElementString.indexOf(":") + 1, typeElementString.lastIndexOf(".")); return outerClasses.replaceAll("\\.", "\\$") + "$" + name; } return name; }
@NotNull public static List<PsiTypeElement> getParameterTypeElements(@NotNull PsiParameter parameter) { PsiTypeElement typeElement = parameter.getTypeElement(); return typeElement != null && typeElement.getType() instanceof PsiDisjunctionType ? PsiTreeUtil.getChildrenOfTypeAsList(typeElement, PsiTypeElement.class) : Collections.singletonList(typeElement); }
@Override public void visitClassObjectAccessExpression(PsiClassObjectAccessExpression expression) { if (willScanBytecode) { return; } PsiTypeElement element = expression.getOperand(); PsiType type = element.getType(); if (type instanceof PsiClassType) { checkClassType(element, (PsiClassType) type, null); } }
@NonNull @Override public PsiType[] getTypeArguments() { PsiType[] types = new PsiType[mTypeParameters.length]; for (int i = 0; i < types.length; i++) { types[i] = mTypeParameters[i].getType(); } if (types.length == 1 && types[0] instanceof PsiDiamondType) { return ((PsiDiamondType) types[0]).resolveInferredTypes().getTypes(); } return types; } }
@Override public void visitTypeCastExpression(PsiTypeCastExpression expression) { PsiTypeElement castTypeElement = expression.getCastType(); PsiExpression operand = expression.getOperand(); if (operand == null || castTypeElement == null) { return; } PsiType operandType = operand.getType(); PsiType castType = castTypeElement.getType(); if (castType.equals(operandType)) { return; } if (!(operandType instanceof PsiClassType)) { return; } if (!(castType instanceof PsiClassType)) { return; } PsiClassType classType = (PsiClassType)operandType; PsiClassType interfaceType = (PsiClassType)castType; checkCast(expression, classType, interfaceType); }
@Override public void visitTypeCastExpression(PsiTypeCastExpression expression) { PsiExpression operand = expression.getOperand(); if (operand == null){ myIsConstant = false; return; } operand.accept(this); if (!myIsConstant) return; PsiTypeElement element = expression.getCastType(); if (element == null){ myIsConstant = false; return; } PsiType type = element.getType(); if (type instanceof PsiPrimitiveType) return; if (type.equalsToText(JAVA_LANG_STRING)) return; myIsConstant = false; }
PsiTypeElement typeElement = cast.getCastType(); if (typeElement != null) { PsiType type = typeElement.getType(); if (PsiType.FLOAT.equals(type)) { return number.floatValue();
@Override public void visitTryStatement(PsiTryStatement statement) { PsiResourceList resourceList = statement.getResourceList(); //noinspection VariableNotUsedInsideIf if (resourceList != null) { int api = 19; // minSdk for try with resources int minSdk = getMinSdk(mContext); if (api > minSdk && api > getTargetApi(statement)) { Location location = mContext.getLocation(resourceList); String message = String.format("Try-with-resources requires " + "API level %1$d (current min is %2$d)", api, Math.max(minSdk, getTargetApi(statement))); mContext.report(UNSUPPORTED, statement, location, message); } } if (willScanBytecode) { return; } for (PsiParameter parameter : statement.getCatchBlockParameters()) { PsiTypeElement typeElement = parameter.getTypeElement(); if (typeElement != null) { checkCatchTypeElement(statement, typeElement, typeElement.getType()); } } }
@Nullable public static PsiType getQualifierType(PsiMethodReferenceExpression expression) { PsiType qualifierType = null; final PsiTypeElement typeElement = expression.getQualifierType(); if (typeElement != null) { qualifierType = typeElement.getType(); } else { final PsiElement qualifier = expression.getQualifier(); if (qualifier instanceof PsiExpression) { qualifierType = ((PsiExpression)qualifier).getType(); } } if (qualifierType == null) { final QualifierResolveResult qualifierResolveResult = getQualifierResolveResult(expression); final PsiClass containingClass = qualifierResolveResult.getContainingClass(); if (containingClass == null) { return null; } qualifierType = JavaPsiFacade.getElementFactory(expression.getProject()).createType(containingClass); } return qualifierType; }
PsiType childType = childTypeElement.getType(); if (!type.equals(childType)) { checkCatchTypeElement(statement, childTypeElement, childType);
return; PsiType type = castTypeElement.getType(); String castType = null; if (type instanceof PsiClassType) {
String expectedClass = getExpectedType(name); if (expectedClass != null && cast.getCastType() != null) { String castType = cast.getCastType().getType().getCanonicalText(); if (castType.indexOf('.') == -1) { expectedClass = stripPackage(expectedClass);
final PsiTypeElement typeElement = methodReferenceExpression.getQualifierType(); if (typeElement != null) { PsiType type = replaceArrayType(typeElement.getType(), typeElement); PsiClassType.ClassResolveResult result = PsiUtil.resolveGenericsClassInType(type); containingClass = result.getElement();
if (typeElement == null) return false; PsiType castType = typeElement.getType(); if (castType instanceof PsiPrimitiveType) { if (opType instanceof PsiPrimitiveType) {
final PsiType castType = castTypeElement != null ? castTypeElement.getType() : null; if (castType instanceof PsiIntersectionType) { final PsiType conjunct = extractFunctionalConjunct((PsiIntersectionType)castType);
PsiTypeElement typeElement = ((PsiTypeCastExpression)expr).getCastType(); if (typeElement == null) return; PsiType castType = typeElement.getType(); final PsiExpression innerOperand = ((PsiTypeCastExpression)expr).getOperand(); final PsiType operandType = innerOperand != null ? innerOperand.getType() : null;