@Nullable public static List<String> getParametersTypesList(PsiParameter[] psiParameters) { if (psiParameters.length == 0) { return null; } List<String> parameters = new ArrayList<>(); for (PsiParameter psiParameter : psiParameters) { if (psiParameter.getTypeElement() == null || psiParameter.getName() == null) { continue; } parameters.add(psiTypeToString(psiParameter.getTypeElement())); } return parameters; }
@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); }
@Nullable public static LinkedList<MethodConfig.Parameter> getParametersList(PsiParameter[] psiParameters) { if (psiParameters.length == 0) { return null; } LinkedList<MethodConfig.Parameter> parameters = new LinkedList<>(); for (PsiParameter psiParameter : psiParameters) { if (psiParameter.getTypeElement() == null || psiParameter.getName() == null) { continue; } parameters.add(new MethodConfig.Parameter(psiTypeToString(psiParameter.getTypeElement()), false)); } return parameters; }
@Override public boolean hasFormalParameterTypes() { PsiParameter[] parameters = getParameterList().getParameters(); for (PsiParameter parameter : parameters) { if (parameter.getTypeElement() == null) { return false; } } return true; } }
@Nullable public static PsiTypeElement getPropertyTypeElement(final PsiMember member) { if (member instanceof PsiField) { return ((PsiField)member).getTypeElement(); } else if (member instanceof PsiMethod) { final PsiMethod psiMethod = (PsiMethod)member; if (isSimplePropertyGetter(psiMethod)) { return psiMethod.getReturnTypeElement(); } else if (isSimplePropertySetter(psiMethod)) { return psiMethod.getParameterList().getParameters()[0].getTypeElement(); } } return null; }
@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()); } } }