in Sources/MockoloFramework/Parsers/SwiftSyntaxExtensions.swift [503:548]
func model(with acl: String, declKind: NominalTypeDeclKind, processed: Bool) -> Model {
let isStatic = self.modifiers.isStatic
let params = self.parameterClause.parameters.enumerated().compactMap {
$1.model(inInit: false, declKind: declKind, index: $0)
}
let genericTypeParams = self.genericParameterClause?.parameters.compactMap { $0.model(inInit: false) } ?? []
let genericWhereClause = self.genericWhereClause?.description
let access: SubscriptAccess
switch self.accessorBlock?.accessors {
case .accessors(let accessorDecls):
let hasWriteAccessor = accessorDecls.contains(where: {
switch $0.accessorSpecifier.tokenKind {
case .keyword(.set), .keyword(._modify):
return true
default:
// Also match "modify" which is behind @_spi(ExperimentalLanguageFeatures)
return $0.accessorSpecifier.text == "modify"
}
})
access = hasWriteAccessor ? .getSet : .get
case .getter:
access = .get
case nil:
access = .getSet // fallback
}
let subscriptModel = MethodModel(name: self.subscriptKeyword.text,
returnType: SwiftType(typeSyntax: self.returnClause.type),
kind: .subscriptKind(access),
acl: acl,
genericTypeParams: genericTypeParams,
genericWhereClause: genericWhereClause,
params: params,
isAsync: false,
throwing: .none,
isStatic: isStatic,
offset: self.offset,
length: self.length,
funcsWithArgsHistory: [],
customModifiers: [:],
modelDescription: self.description,
processed: processed)
return subscriptModel
}