Java 类com.intellij.psi.PsiParameter 实例源码

项目:rxlint    文件:RxJava2SubscriberCheck.java   
private boolean checkMethodSignature(PsiMethod method) {
    // subscribe() calls that have no return type are custom Observers whose error handling we cannot check
    if (PsiType.VOID.equals(method.getReturnType())) {
        return false;
    }
    int argCount = method.getParameterList().getParametersCount();
    // when more than one argument is given, there is usually one error callback included
    if (argCount > 1) {
        return false;
    }
    // no arguments, no error handling
    if (argCount == 0) {
        return true;
    }
    // if we have only one argument, check that it's not a BiConsumer
    PsiParameter parameter = method.getParameterList().getParameters()[0];
    return !"io.reactivex.functions.BiConsumer".equals(parameter.getType().getCanonicalText());
}
项目:manifold-ij    文件:ManAugmentProvider.java   
private PsiElement findExtensionMethodNavigationElement( PsiClass extClass, PsiMethod plantedMethod )
{
  PsiMethod[] found = extClass.findMethodsByName( plantedMethod.getName(), false );
  outer:
  for( PsiMethod m : found )
  {
    PsiParameter[] extParams = m.getParameterList().getParameters();
    PsiParameter[] plantedParams = plantedMethod.getParameterList().getParameters();
    if( extParams.length - 1 == plantedParams.length )
    {
      for( int i = 1; i < extParams.length; i++ )
      {
        PsiParameter extParam = extParams[i];
        PsiParameter plantedParam = plantedParams[i - 1];
        PsiType extErased = TypeConversionUtil.erasure( extParam.getType() );
        PsiType plantedErased = TypeConversionUtil.erasure( plantedParam.getType() );
        if( !extErased.toString().equals( plantedErased.toString() ) )
        {
          continue outer;
        }
      }
      return m.getNavigationElement();
    }
  }
  return null;
}
项目:manifold-ij    文件:VarHandler.java   
@Nullable
public PsiType inferType( PsiTypeElement typeElement )
{
  PsiType psiType = null;

  final PsiElement parent = typeElement.getParent();
  if( (parent instanceof PsiLocalVariable && isVar( (PsiLocalVariable)parent )) ||
      (parent instanceof PsiParameter && isVarForEach( (PsiParameter)parent )) )
  {

    if( parent instanceof PsiLocalVariable )
    {
      psiType = processLocalVariableInitializer( ((PsiLocalVariable)parent).getInitializer() );
    }
    else
    {
      psiType = processForeach( ((PsiParameter)parent).getDeclarationScope() );
    }

    if( null == psiType )
    {
      psiType = PsiType.getJavaLangObject( typeElement.getManager(), GlobalSearchScope.allScope( typeElement.getProject() ) );
    }
  }
  return psiType;
}
项目:Android_Lint_SRP_Practice_Example    文件:MultiFunctionFlagStructureDetector.java   
void check(@NonNull PsiMethod method) {
    if (mClass != null &&
            !mClassFields.isEmpty()) {

        // メソッド引数に boolean のパラメータがある場合のみ対象とする
        Map<String, PsiParameter> parameters = new HashMap<>();
        PsiParameter[] params = method.getParameterList().getParameters();
        for (PsiParameter param : params) {
            if (param.getType() != PsiType.BOOLEAN) continue;
            parameters.put(param.getName(), param);
        }
        if (parameters.isEmpty()) return;

        mMethod = method;
        mFlagMethodParameters.clear();
        mFlagMethodParameters.putAll(parameters);
        mFlagLogic = null;
    }
}
项目:Android_Lint_SRP_Practice_Example    文件:ElementUtil.java   
private static void seekChildren(PsiElement element, PsiIdentifier target, Find find) {
    for (PsiElement child : element.getChildren()) {
        if (child instanceof PsiLocalVariable) {
            PsiLocalVariable localVariable = (PsiLocalVariable) child;
            if (isSameName(target, localVariable.getNameIdentifier())) {
                find.findLocalVariable = localVariable;
                return;
            }
        }
        if (child instanceof PsiParameter) {
            PsiParameter parameter = (PsiParameter) child;
            if (isSameName(target, parameter.getNameIdentifier())) {
                find.findParameter = parameter;
                return;
            }
        }
        seekChildren(child, target, find);
        if (!find.isEmpty()) return;
    }
}
项目:intellij-ce-playground    文件:JavaConstructorBodyWithSuperCallGenerator.java   
@Override
public void generateFieldInitialization(@NotNull StringBuilder buffer,
                                        @NotNull PsiField[] fields,
                                        @NotNull PsiParameter[] parameters) {
  for (int i = 0, length = fields.length; i < length; i++) {
    String fieldName = fields[i].getName();
    String paramName = parameters[i].getName();
    if (fieldName.equals(paramName)) {
      buffer.append("this.");
    }
    buffer.append(fieldName);
    buffer.append("=");
    buffer.append(paramName);
    buffer.append(";\n");
  }
}
项目:intellij-ce-playground    文件:ParameterListFixer.java   
@Override
public void apply(Editor editor, JavaSmartEnterProcessor processor, PsiElement psiElement) throws IncorrectOperationException {
  if (psiElement instanceof PsiParameterList) {
    String text = psiElement.getText();
    if (StringUtil.startsWithChar(text, '(') && !StringUtil.endsWithChar(text, ')')) {
      PsiParameter[] params = ((PsiParameterList)psiElement).getParameters();
      int offset;
      if (params.length == 0) {
        offset = psiElement.getTextRange().getStartOffset() + 1;
      }
      else {
        offset = params[params.length - 1].getTextRange().getEndOffset();
      }
      editor.getDocument().insertString(offset, ")");
    }
  }
}
项目:intellij-ce-playground    文件:AppendAccessorsUsageInfo.java   
private void appendAccessors(final Set<PsiParameter> params, boolean isGetter) {
  final PsiElement element = getElement();
  if (element != null) {
    for (PsiParameter parameter : params) {
      final IntroduceParameterObjectProcessor.ParameterChunk parameterChunk =
        IntroduceParameterObjectProcessor.ParameterChunk.getChunkByParameter(parameter, parameters);
      LOGGER.assertTrue(parameterChunk != null);
      final PsiField field = parameterChunk.getField();
      if (field != null) {
        element.add(isGetter
                    ? GenerateMembersUtil.generateGetterPrototype(field)
                    : GenerateMembersUtil.generateSetterPrototype(field));
      }

    }
  }
}
项目:intellij-ce-playground    文件:AppendAccessorsUsageInfo.java   
private void appendConflicts(StringBuffer buf, final Set<PsiParameter> paramsNeeding) {
  if (!paramsNeeding.isEmpty()) {
    buf.append(paramsNeeding == paramsNeedingGetters ? "Getters" : "Setters");
    buf.append(" for the following fields are required:\n");
    buf.append(StringUtil.join(paramsNeeding, new Function<PsiParameter, String>() {
      public String fun(PsiParameter psiParameter) {
        final IntroduceParameterObjectProcessor.ParameterChunk chunk =
          IntroduceParameterObjectProcessor.ParameterChunk.getChunkByParameter(psiParameter, parameters);
        if (chunk != null) {
          final PsiField field = chunk.getField();
          if (field != null) {
            return field.getName();
          }
        }
        return psiParameter.getName();
      }
    }, ", "));
    buf.append(".\n");
  }
}
项目:intellij-ce-playground    文件:AutomaticParametersRenamer.java   
public AutomaticParametersRenamer(PsiParameter param, String newParamName) {
  final PsiElement scope = param.getDeclarationScope();
  if (scope instanceof PsiMethod) {
    final PsiMethod method = (PsiMethod)scope;
    final int parameterIndex = method.getParameterList().getParameterIndex(param);
    if (parameterIndex < 0) return;
    for (PsiMethod overrider : OverridingMethodsSearch.search(method)) {
      final PsiParameter[] parameters = overrider.getParameterList().getParameters();
      if (parameterIndex >= parameters.length) continue;
      final PsiParameter inheritedParam = parameters[parameterIndex];
      if (!Comparing.strEqual(inheritedParam.getName(), newParamName)) {
        myElements.add(inheritedParam);
        suggestAllNames(inheritedParam.getName(), newParamName);
      }
    }
  }
}
项目:intellij-ce-playground    文件:IntroduceParameterSettingsUI.java   
public IntroduceParameterSettingsUI(PsiLocalVariable onLocalVariable,
                                    PsiExpression onExpression,
                                    PsiMethod methodToReplaceIn,
                                    TIntArrayList parametersToRemove) {
  myHasInitializer = onLocalVariable != null && onLocalVariable.getInitializer() != null;
  myIsInvokedOnDeclaration = onExpression == null;
  final PsiParameter[] parameters = methodToReplaceIn.getParameterList().getParameters();
  myParametersToRemove = new PsiParameter[parameters.length];
  myParametersToRemoveChecked = new boolean[parameters.length];
  parametersToRemove.forEach(new TIntProcedure() {
    public boolean execute(final int paramNum) {
      myParametersToRemove[paramNum] = parameters[paramNum];
      return true;
    }
  });
  myIsLocalVariable = onLocalVariable != null;
}
项目:intellij-ce-playground    文件:MethodJavaDocHelper.java   
public MethodJavaDocHelper(PsiMethod method) {
  myMethod = method;
  myDocComment = myMethod.getDocComment();
  if (myDocComment == null) {
    myDoCorrectJavaDoc = false;
    return;
  }
  final PsiParameter[] parameters = myMethod.getParameterList().getParameters();
  if (parameters.length != 0) {
    final PsiDocTag[] paramTags = myDocComment.findTagsByName("param");
    if (paramTags.length > 0) {
      myDoCorrectJavaDoc = true;
    } else {
      myDoCorrectJavaDoc = false;
    }
  } else {
    myDoCorrectJavaDoc = true;
  }
}
项目:intellij-ce-playground    文件:ChainCompletionLookupElementUtil.java   
public static String fillMethodParameters(final PsiMethod method, @Nullable final TIntObjectHashMap<SubLookupElement> replaceElements) {
  final TIntObjectHashMap<SubLookupElement> notNullReplaceElements = replaceElements == null ?
      new TIntObjectHashMap<SubLookupElement>(0) :
      replaceElements;

  final PsiParameter[] parameters = method.getParameterList().getParameters();
  final StringBuilder sb = new StringBuilder();
  for (int i = 0; i < parameters.length; i++) {
    if (i != 0) {
      sb.append(", ");
    }
    final PsiParameter parameter = parameters[i];
    final SubLookupElement replaceElement = notNullReplaceElements.get(i);
    if (replaceElement != null) {
      sb.append(replaceElement.getInsertString());
    } else {
      sb.append(parameter.getName());
    }
  }
  return sb.toString();
}
项目:intellij-ce-playground    文件:ParametersMatcher.java   
private static MatchResult matchParameters(final PsiMethod method, final ChainCompletionContext context, final Set<String> additionalExcludedNames) {
  int matched = 0;
  int unMatched = 0;
  boolean hasTarget = false;
  for (final PsiParameter parameter : method.getParameterList().getParameters()) {
    final PsiType type = parameter.getType();
    final String canonicalText = type.getCanonicalText();
    if (context.contains(canonicalText) || type instanceof PsiPrimitiveType) {
      matched++;
    }
    else {
      unMatched++;
    }
    if (context.getTarget().getClassQName().equals(canonicalText) || additionalExcludedNames.contains(canonicalText)) {
      hasTarget = true;
    }
  }
  return new MatchResult(matched, unMatched, hasTarget);
}
项目:intellij-ce-playground    文件:ParameterNameDiffersFromOverriddenParameterInspectionBase.java   
@Override
public void visitMethod(@NotNull PsiMethod method) {
  final PsiParameterList parameterList = method.getParameterList();
  if (parameterList.getParametersCount() == 0) {
    return;
  }
  final Query<MethodSignatureBackedByPsiMethod> query =
    SuperMethodsSearch.search(
      method, method.getContainingClass(), true, false);
  final MethodSignatureBackedByPsiMethod methodSignature =
    query.findFirst();
  if (methodSignature == null) {
    return;
  }
  final PsiMethod superMethod = methodSignature.getMethod();
  final PsiParameter[] parameters = parameterList.getParameters();
  checkParameters(superMethod, parameters);
}
项目:intellij-ce-playground    文件:BadExceptionCaughtInspectionBase.java   
@Override
public void visitCatchSection(PsiCatchSection section) {
  super.visitCatchSection(section);
  final PsiParameter parameter = section.getParameter();
  if (parameter == null) {
    return;
  }
  final PsiTypeElement typeElement = parameter.getTypeElement();
  if (typeElement == null) {
    return;
  }
  final PsiTypeElement[] childTypeElements = PsiTreeUtil.getChildrenOfType(typeElement, PsiTypeElement.class);
  if (childTypeElements != null) {
    for (PsiTypeElement childTypeElement : childTypeElements) {
      checkTypeElement(childTypeElement);
    }
  }
  else {
    checkTypeElement(typeElement);
  }
}
项目:intellij-ce-playground    文件:UnassignedVariableAccessInspection.java   
@Override
protected void check(@NotNull GrControlFlowOwner owner, @NotNull ProblemsHolder problemsHolder) {
  Instruction[] flow = owner.getControlFlow();
  ReadWriteVariableInstruction[] reads = ControlFlowBuilderUtil.getReadsWithoutPriorWrites(flow, true);
  for (ReadWriteVariableInstruction read : reads) {
    PsiElement element = read.getElement();
    if (element instanceof GroovyPsiElement && !(element instanceof GrClosableBlock)) {
      String name = read.getVariableName();
      GroovyPsiElement property = ResolveUtil.resolveProperty((GroovyPsiElement)element, name);
      if (property != null &&
          !(property instanceof PsiParameter) &&
          !(property instanceof PsiField) &&
          PsiTreeUtil.isAncestor(owner, property, false) &&
          !(myIgnoreBooleanExpressions && isBooleanCheck(element))
        ) {
        problemsHolder.registerProblem(element, GroovyInspectionBundle.message("unassigned.access.tooltip", name));
      }
    }
  }
}
项目:intellij-ce-playground    文件:GrConstructorBodyGenerator.java   
@Override
public void generateFieldInitialization(@NotNull StringBuilder buffer,
                                        @NotNull PsiField[] fields,
                                        @NotNull PsiParameter[] parameters) {
  for (int i = 0, length = fields.length; i < length; i++) {
    String fieldName = fields[i].getName();
    String paramName = parameters[i].getName();
    if (fieldName.equals(paramName)) {
      buffer.append("this.");
    }
    buffer.append(fieldName);
    buffer.append("=");
    buffer.append(paramName);
    buffer.append("\n");
  }
}
项目:intellij-ce-playground    文件:LocalVarAnalyzer.java   
public static Result searchForVarsToWrap(GroovyPsiElement root, Result analyzedVars, ExpressionContext context) {
  LocalVarAnalyzer visitor = new LocalVarAnalyzer();
  root.accept(visitor);

  Map<PsiVariable, String> varToName = analyzedVars == null ? new HashMap<PsiVariable, String>() : analyzedVars.varToName;
  Set<PsiVariable> toWrap = analyzedVars == null ? new HashSet<PsiVariable>() : analyzedVars.toWrap;
  Set<PsiVariable> toMakeFinal = analyzedVars == null ? new HashSet<PsiVariable>() : analyzedVars.toMakeFinal;
  for (PsiVariable v : visitor.touched) {
    if (visitor.rewritten.contains(v)) {
      toWrap.add(v);
      if (v instanceof PsiParameter) {
        varToName.put(v, GenerationUtil.suggestVarName(v.getType(), root, context));
      }
      else {
        varToName.put(v, v.getName());
      }
    }
    else {
      toMakeFinal.add(v);
      varToName.put(v, v.getName());
    }
  }
  return analyzedVars == null ? new Result(toMakeFinal, toWrap, varToName) : analyzedVars;
}
项目:google-cloud-intellij    文件:ApiParameterInspection.java   
private boolean hasParameterName(PsiParameter psiParameter) {
  PsiModifierList modifierList = psiParameter.getModifierList();
  if (modifierList == null) {
    return false;
  }

  PsiAnnotation annotation = modifierList.findAnnotation("javax.inject.Named");
  if (annotation != null) {
    return true;
  }

  annotation = modifierList.findAnnotation(GctConstants.APP_ENGINE_ANNOTATION_NAMED);
  if (annotation != null) {
    return true;
  }

  return false;
}
项目:google-cloud-intellij    文件:RestSignatureInspectionTest.java   
private void initializePsiMethod(String methodName, String httpMethodValue, String pathValue) {
  PsiAnnotationMemberValue mockAnnotationMemberValue1 = mock(PsiAnnotationMemberValue.class);
  when(mockAnnotationMemberValue1.getText()).thenReturn(httpMethodValue);

  PsiAnnotationMemberValue mockAnnotationMemberValue2 = mock(PsiAnnotationMemberValue.class);
  when(mockAnnotationMemberValue2.getText()).thenReturn(pathValue);

  PsiAnnotation mockAnnotation = mock(PsiAnnotation.class);
  when(mockAnnotation.getQualifiedName())
      .thenReturn(GctConstants.APP_ENGINE_ANNOTATION_API_METHOD);
  when(mockAnnotation.findAttributeValue("httpMethod")).thenReturn(mockAnnotationMemberValue1);
  when(mockAnnotation.findAttributeValue("path")).thenReturn(mockAnnotationMemberValue2);
  PsiAnnotation[] mockAnnotationsArray = {mockAnnotation};

  PsiModifierList mockModifierList = mock(PsiModifierList.class);
  when(mockModifierList.getAnnotations()).thenReturn(mockAnnotationsArray);

  mockPsiMethod = mock(PsiMethod.class);
  when(mockPsiMethod.getModifierList()).thenReturn(mockModifierList);
  when(mockPsiMethod.getName()).thenReturn(methodName);
  when(mockPsiMethod.getContainingClass()).thenReturn(mockPsiClass);

  PsiParameterList mockParameterList = mock(PsiParameterList.class);
  when(mockParameterList.getParameters()).thenReturn(new PsiParameter[0]);
  when(mockPsiMethod.getParameterList()).thenReturn(mockParameterList);
}
项目:google-cloud-intellij    文件:NamedResourceInspectionTest.java   
/**
 * Tests that the NamedResourceInspection's quick fix flagged with {@link
 * NamedResourceError#MISSING_NAME} for an @Named annotation with a {@link PsiParameter} parent
 * updates the query name to to the name of the {@link PsiParameter}.
 */
public void testQuickFix_noQueryNameSpecifiedWithParameter() {
  Project myProject = myFixture.getProject();
  PsiParameter parameter =
      JavaPsiFacade.getInstance(myProject)
          .getElementFactory()
          .createParameterFromText("@javax.inject.Named() String foobar", null);
  PsiAnnotation[] annotationsList = parameter.getModifierList().getAnnotations();
  assert (annotationsList.length == 1);
  NamedResourceInspection.MissingNameQuickFix myQuickFix =
      new NamedResourceInspection().new MissingNameQuickFix();
  MockProblemDescriptor problemDescriptor =
      new MockProblemDescriptor(annotationsList[0], "", ProblemHighlightType.ERROR);

  myQuickFix.applyFix(myProject, problemDescriptor);
  assertEquals("@javax.inject.Named(\"foobar\")", annotationsList[0].getText());
}
项目:tools-idea    文件:AnnotationsAwareDataFlowRunner.java   
@Override
protected Collection<DfaMemoryState> createInitialStates(@NotNull PsiElement psiBlock, InstructionVisitor visitor) {
  final Collection<DfaMemoryState> initialStates = super.createInitialStates(psiBlock, visitor);
  if (initialStates == null) {
    return null;
  }

  final PsiElement parent = psiBlock.getParent();
  if (parent instanceof PsiMethod) {
    PsiMethod method = (PsiMethod)parent;

    //todo move out from generic runner
    for (PsiParameter parameter : method.getParameterList().getParameters()) {
      if (NullableNotNullManager.isNotNull(parameter)) {
        final DfaVariableValue value = getFactory().getVarFactory().createVariableValue(parameter, false);
        for (final DfaMemoryState initialState : initialStates) {
          initialState.applyNotNull(value);
        }
      }
    }
  }
  return initialStates;
}
项目:tools-idea    文件:ChainCompletionLookupElementUtil.java   
public static String fillMethodParameters(final PsiMethod method, @Nullable final TIntObjectHashMap<SubLookupElement> replaceElements) {
  final TIntObjectHashMap<SubLookupElement> notNullReplaceElements = replaceElements == null ?
      new TIntObjectHashMap<SubLookupElement>(0) :
      replaceElements;

  final PsiParameter[] parameters = method.getParameterList().getParameters();
  final StringBuilder sb = new StringBuilder();
  for (int i = 0; i < parameters.length; i++) {
    if (i != 0) {
      sb.append(", ");
    }
    final PsiParameter parameter = parameters[i];
    final SubLookupElement replaceElement = notNullReplaceElements.get(i);
    if (replaceElement != null) {
      sb.append(replaceElement.getInsertString());
    } else {
      sb.append(parameter.getName());
    }
  }
  return sb.toString();
}
项目:tools-idea    文件:MethodChainsSearchUtil.java   
public static boolean checkParametersForTypesQNames(final PsiMethod[] psiMethods, final Set<String> excludedTypesQNames) {
  if (psiMethods.length == 0) {
    return true;
  }
  for (final PsiMethod method : psiMethods) {
    boolean hasTargetInParams = false;
    for (final PsiParameter param : method.getParameterList().getParameters()) {
      final String paramType = param.getType().getCanonicalText();
      if (excludedTypesQNames.contains(paramType)) {
        hasTargetInParams = true;
        break;
      }
    }
    if (!hasTargetInParams) {
      return true;
    }
  }
  return false;
}
项目:tools-idea    文件:JavaConstructorBodyWithSuperCallGenerator.java   
@Override
public void generateFieldInitialization(@NotNull StringBuilder buffer,
                                        @NotNull PsiField[] fields,
                                        @NotNull PsiParameter[] parameters) {
  for (int i = 0, length = fields.length; i < length; i++) {
    String fieldName = fields[i].getName();
    String paramName = parameters[i].getName();
    if (fieldName.equals(paramName)) {
      buffer.append("this.");
    }
    buffer.append(fieldName);
    buffer.append("=");
    buffer.append(paramName);
    buffer.append(";\n");
  }
}
项目:tools-idea    文件:DefineParamsDefaultValueAction.java   
@Nullable
@Override
protected PsiParameter[] getParams(PsiElement element) {
  final PsiMethod method = PsiTreeUtil.getParentOfType(element, PsiMethod.class);
  final PsiParameter[] parameters = method.getParameterList().getParameters();
  final ParameterClassMember[] members = new ParameterClassMember[parameters.length];
  for (int i = 0; i < members.length; i++) {
    members[i] = new ParameterClassMember(parameters[i]);
  }
  final MemberChooser<ParameterClassMember> chooser = new MemberChooser<ParameterClassMember>(members, false, true, element.getProject());
  chooser.selectElements(members);
  chooser.setTitle("Choose " + (method.isConstructor() ? "Constructor" : "Method") + " Parameters");
  chooser.show();
  if (chooser.isOK()) {
    final List<ParameterClassMember> elements = chooser.getSelectedElements();
    if (elements != null) {
      PsiParameter[] params = new PsiParameter[elements.size()];
      for (int i = 0; i < params.length; i++) {
        params[i] = elements.get(i).getParameter();
      }
      return params;
    }
  }
  return null;
}
项目:tools-idea    文件:ParameterListFixer.java   
@Override
public void apply(Editor editor, JavaSmartEnterProcessor processor, PsiElement psiElement) throws IncorrectOperationException {
  if (psiElement instanceof PsiParameterList) {
    String text = psiElement.getText();
    if (StringUtil.startsWithChar(text, '(') && !StringUtil.endsWithChar(text, ')')) {
      PsiParameter[] params = ((PsiParameterList)psiElement).getParameters();
      int offset;
      if (params.length == 0) {
        offset = psiElement.getTextRange().getStartOffset() + 1;
      }
      else {
        offset = params[params.length - 1].getTextRange().getEndOffset();
      }
      editor.getDocument().insertString(offset, ")");
    }
  }
}
项目:tools-idea    文件:AppendAccessorsUsageInfo.java   
private void appendAccessors(final Set<PsiParameter> params, boolean isGetter) {
  final PsiElement element = getElement();
  if (element != null) {
    for (PsiParameter parameter : params) {
      final IntroduceParameterObjectProcessor.ParameterChunk parameterChunk =
        IntroduceParameterObjectProcessor.ParameterChunk.getChunkByParameter(parameter, parameters);
      LOGGER.assertTrue(parameterChunk != null);
      final PsiField field = parameterChunk.getField();
      if (field != null) {
        element.add(isGetter
                    ? GenerateMembersUtil.generateGetterPrototype(field)
                    : GenerateMembersUtil.generateSetterPrototype(field));
      }

    }
  }
}
项目:tools-idea    文件:AppendAccessorsUsageInfo.java   
private void appendConflicts(StringBuffer buf, final Set<PsiParameter> paramsNeeding) {
  if (!paramsNeeding.isEmpty()) {
    buf.append(paramsNeeding == paramsNeedingGetters ? "Getters" : "Setters");
    buf.append(" for the following fields are required:\n");
    buf.append(StringUtil.join(paramsNeeding, new Function<PsiParameter, String>() {
      public String fun(PsiParameter psiParameter) {
        final IntroduceParameterObjectProcessor.ParameterChunk chunk =
          IntroduceParameterObjectProcessor.ParameterChunk.getChunkByParameter(psiParameter, parameters);
        if (chunk != null) {
          final PsiField field = chunk.getField();
          if (field != null) {
            return field.getName();
          }
        }
        return psiParameter.getName();
      }
    }, ", "));
    buf.append(".\n");
  }
}
项目:tools-idea    文件:AutomaticParametersRenamer.java   
public AutomaticParametersRenamer(PsiParameter param, String newParamName) {
  final PsiElement scope = param.getDeclarationScope();
  if (scope instanceof PsiMethod) {
    final PsiMethod method = (PsiMethod)scope;
    final int parameterIndex = method.getParameterList().getParameterIndex(param);
    if (parameterIndex < 0) return;
    for (PsiMethod overrider : OverridingMethodsSearch.search(method)) {
      final PsiParameter[] parameters = overrider.getParameterList().getParameters();
      if (parameterIndex >= parameters.length) continue;
      final PsiParameter inheritedParam = parameters[parameterIndex];
      if (!Comparing.strEqual(inheritedParam.getName(), newParamName)) {
        myElements.add(inheritedParam);
        suggestAllNames(inheritedParam.getName(), newParamName);
      }
    }
  }
}
项目:tools-idea    文件:IntroduceParameterSettingsUI.java   
public IntroduceParameterSettingsUI(PsiLocalVariable onLocalVariable,
                                    PsiExpression onExpression,
                                    PsiMethod methodToReplaceIn,
                                    TIntArrayList parametersToRemove) {
  myHasInitializer = onLocalVariable != null && onLocalVariable.getInitializer() != null;
  myIsInvokedOnDeclaration = onExpression == null;
  final PsiParameter[] parameters = methodToReplaceIn.getParameterList().getParameters();
  myParametersToRemove = new PsiParameter[parameters.length];
  myParametersToRemoveChecked = new boolean[parameters.length];
  parametersToRemove.forEach(new TIntProcedure() {
    public boolean execute(final int paramNum) {
      myParametersToRemove[paramNum] = parameters[paramNum];
      return true;
    }
  });
  myIsLocalVariable = onLocalVariable != null;
}
项目:tools-idea    文件:MethodJavaDocHelper.java   
public MethodJavaDocHelper(PsiMethod method) {
  myMethod = method;
  myDocComment = myMethod.getDocComment();
  if (myDocComment == null) {
    myDoCorrectJavaDoc = false;
    return;
  }
  final PsiParameter[] parameters = myMethod.getParameterList().getParameters();
  if (parameters.length != 0) {
    final PsiDocTag[] paramTags = myDocComment.findTagsByName("param");
    if (paramTags.length > 0) {
      myDoCorrectJavaDoc = true;
    } else {
      myDoCorrectJavaDoc = false;
    }
  } else {
    myDoCorrectJavaDoc = true;
  }
}
项目:tools-idea    文件:ParameterNameDiffersFromOverriddenParameterInspection.java   
@Override
public void visitMethod(@NotNull PsiMethod method) {
  final PsiParameterList parameterList = method.getParameterList();
  if (parameterList.getParametersCount() == 0) {
    return;
  }
  final Query<MethodSignatureBackedByPsiMethod> query =
    SuperMethodsSearch.search(
      method, method.getContainingClass(), true, false);
  final MethodSignatureBackedByPsiMethod methodSignature =
    query.findFirst();
  if (methodSignature == null) {
    return;
  }
  final PsiMethod superMethod = methodSignature.getMethod();
  final PsiParameter[] parameters = parameterList.getParameters();
  checkParameters(superMethod, parameters);
}
项目:tools-idea    文件:BadExceptionCaughtInspection.java   
@Override
public void visitCatchSection(PsiCatchSection section) {
  super.visitCatchSection(section);
  final PsiParameter parameter = section.getParameter();
  if (parameter == null) {
    return;
  }
  final PsiTypeElement typeElement = parameter.getTypeElement();
  if (typeElement == null) {
    return;
  }
  final PsiTypeElement[] childTypeElements = PsiTreeUtil.getChildrenOfType(typeElement, PsiTypeElement.class);
  if (childTypeElements != null) {
    for (PsiTypeElement childTypeElement : childTypeElements) {
      checkTypeElement(childTypeElement);
    }
  }
  else {
    checkTypeElement(typeElement);
  }
}
项目:tools-idea    文件:ParameterOfConcreteClassInspection.java   
@Override
public void visitParameter(@NotNull PsiParameter parameter) {
  super.visitParameter(parameter);

  if (parameter.getDeclarationScope() instanceof PsiCatchSection) {
    return;
  }
  final PsiTypeElement typeElement = parameter.getTypeElement();
  if (typeElement == null) {
    return;
  }
  if (!ConcreteClassUtil.typeIsConcreteClass(typeElement,
                                             ignoreAbstractClasses)) {
    return;
  }
  final String variableName = parameter.getName();
  registerError(typeElement, variableName);
}
项目:tools-idea    文件:UnassignedVariableAccessInspection.java   
protected void check(GrControlFlowOwner owner, ProblemsHolder problemsHolder) {
  Instruction[] flow = owner.getControlFlow();
  ReadWriteVariableInstruction[] reads = ControlFlowBuilderUtil.getReadsWithoutPriorWrites(flow, true);
  for (ReadWriteVariableInstruction read : reads) {
    PsiElement element = read.getElement();
    if (element instanceof GroovyPsiElement) {
      String name = read.getVariableName();
      GroovyPsiElement property = ResolveUtil.resolveProperty((GroovyPsiElement)element, name);
      if (property != null &&
          !(property instanceof PsiParameter) &&
          !(property instanceof PsiField) &&
          PsiTreeUtil.isAncestor(owner, property, false) &&
          !GppTypeConverter.hasTypedContext(element) &&
          !(myIgnoreBooleanExpressions && isBooleanCheck(element))
        ) {
        problemsHolder.registerProblem(element, GroovyInspectionBundle.message("unassigned.access.tooltip", name));
      }
    }
  }
}
项目:tools-idea    文件:GrConstructorBodyGenerator.java   
@Override
public void generateFieldInitialization(@NotNull StringBuilder buffer,
                                        @NotNull PsiField[] fields,
                                        @NotNull PsiParameter[] parameters) {
  for (int i = 0, length = fields.length; i < length; i++) {
    String fieldName = fields[i].getName();
    String paramName = parameters[i].getName();
    if (fieldName.equals(paramName)) {
      buffer.append("this.");
    }
    buffer.append(fieldName);
    buffer.append("=");
    buffer.append(paramName);
    buffer.append("\n");
  }
}
项目:tools-idea    文件:LocalVarAnalyzer.java   
public static Result searchForVarsToWrap(GroovyPsiElement root, Result analyzedVars, ExpressionContext context) {
  LocalVarAnalyzer visitor = new LocalVarAnalyzer();
  root.accept(visitor);

  Map<PsiVariable, String> varToName = analyzedVars == null ? new HashMap<PsiVariable, String>() : analyzedVars.varToName;
  Set<PsiVariable> toWrap = analyzedVars == null ? new HashSet<PsiVariable>() : analyzedVars.toWrap;
  Set<PsiVariable> toMakeFinal = analyzedVars == null ? new HashSet<PsiVariable>() : analyzedVars.toMakeFinal;
  for (PsiVariable v : visitor.touched) {
    if (visitor.rewritten.contains(v)) {
      toWrap.add(v);
      if (v instanceof PsiParameter) {
        varToName.put(v, GenerationUtil.suggestVarName(v.getType(), root, context));
      }
      else {
        varToName.put(v, v.getName());
      }
    }
    else {
      toMakeFinal.add(v);
      varToName.put(v, v.getName());
    }
  }
  return analyzedVars == null ? new Result(toMakeFinal, toWrap, varToName) : analyzedVars;
}
项目:ParcelablePlease    文件:CodeGenerator.java   
/**
 * Finds and removes a given method
 * @param methodName
 * @param arguments
 */
private void findAndRemoveMethod(String methodName, String... arguments) {
  // Maybe there's an easier way to do this with mClass.findMethodBySignature(), but I'm not an expert on Psi*
  PsiMethod[] methods = psiClass.findMethodsByName(methodName, false);

  for (PsiMethod method : methods) {
    PsiParameterList parameterList = method.getParameterList();

    if (parameterList.getParametersCount() == arguments.length) {
      boolean shouldDelete = true;

      PsiParameter[] parameters = parameterList.getParameters();

      for (int i = 0; i < arguments.length; i++) {
        if (!parameters[i].getType().getCanonicalText().equals(arguments[i])) {
          shouldDelete = false;
        }
      }

      if (shouldDelete) {
        method.delete();
      }
    }
  }
}