override fun buildStubTree()

in psi/src/com/intellij/r/psi/skeleton/RSkeletonFileStubBuilder.kt [33:84]


  override fun buildStubTree(fileContent: FileContent): Stub {
    val skeletonFileStub = RSkeletonFileStub()
    val content = fileContent.getContent()
    val binPackage: LibrarySummary.RLibraryPackage = ByteArrayInputStream(content).use {
      LibrarySummary.RLibraryPackage.parseFrom(it)
    }
    for (symbol in binPackage.symbolsList) {
      when (symbol.representationCase) {
        RepresentationCase.S4CLASSREPRESENTATION -> {
          val s4ClassRepresentation = symbol.s4ClassRepresentation
          RSkeletonCallExpressionStub(skeletonFileStub,
                                      R_SKELETON_CALL_EXPRESSION,
                                      RS4ClassInfo(symbol.name,
                                                   s4ClassRepresentation.packageName,
                                                   s4ClassRepresentation.slotsList.map { RS4ClassSlot(it.name, it.type, it.declarationClass)
                                                   },
                                                 s4ClassRepresentation.superClassesList.map {
                                                   RS4SuperClass(it.name, it.distance) },
                                                   s4ClassRepresentation.isVirtual
                                      )
          )
        }
        else -> {
          val functionRepresentation = symbol.functionRepresentation
          val (s4GenericOrMethodInfo, extraNamedArguments) =
          when (symbol.type) {
            Type.S4GENERIC -> {
              val signature = functionRepresentation.s4GenericSignature.let { RS4GenericSignature(it.parametersList, it.valueClassesList, false) }
              RS4GenericInfo(symbol.name, signature) to FunctionRepresentation.ExtraNamedArguments.getDefaultInstance()
            }
            Type.S4METHOD -> {
              val methodsParameters = functionRepresentation.s4ParametersInfo.s4MethodParametersList.map {
                RS4MethodParameterInfo(it.name, it.type)
              }
              RS4RawMethodInfo(symbol.name, methodsParameters) to FunctionRepresentation.ExtraNamedArguments.getDefaultInstance()
            }
            else -> null to functionRepresentation.extraNamedArguments
          }
          RSkeletonAssignmentStub(skeletonFileStub,
                                  R_SKELETON_ASSIGNMENT_STATEMENT,
                                  symbol.name,
                                  symbol.type,
                                  functionRepresentation.parameters,
                                  symbol.exported,
                                  RExtraNamedArgumentsInfo(extraNamedArguments.argNamesList,
                                                           extraNamedArguments.funArgNamesList),
                                s4GenericOrMethodInfo)
        }
      }
    }
    return skeletonFileStub
  }