private void processMemberDefinition()

in javac-ast-extension/src/org/jetbrains/jps/javac/ast/JavacTreeRefScanner.java [128:149]


  private void processMemberDefinition(JavacReferenceCollectorListener.ReferenceCollector refCollector,
                                       JavacRef.JavacElementRefBase ref,
                                       Element element,
                                       TypeMirror retType) {
    refCollector.sinkReference(ref);
    byte dimension = 0;
    if (retType.getKind() == TypeKind.ARRAY) {
      retType = ((ArrayType)retType).getComponentType();
      dimension = 1;
    }
    else if (retType.getKind() == TypeKind.DECLARED) {
      List<? extends TypeMirror> typeArguments = ((DeclaredType)retType).getTypeArguments();
      if (typeArguments.size() == 1 && isIterator((TypeElement)((DeclaredType)retType).asElement(), refCollector)) {
        dimension = -1;
        retType = typeArguments.get(0);
      }
    }
    final JavacRef.JavacElementRefBase returnType = refCollector.asJavacRef(getCurrentEnclosingTypeElement(), retType);
    if (returnType != null) {
      refCollector.sinkDeclaration(new JavacDef.JavacMemberDef(ref, returnType, dimension, isStatic(element)));
    }
  }