# Kotlin in Maguyva: codegrafen voor Android en de JVM

Canonical source: https://maguyva.ai/nl/languages/kotlin

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva ondersteunt Kotlin met AST, symbolen en graaf, zodat AI-agents klassen, extension functions en coroutines volgen in Android- en JVM-code.

## Ondersteuningsoverzicht

- Tier: AST- en symboolondersteuning
- Programmeren
- Extensies: .kt, .kts
- Echte AST-parsing voor syntaxbewust zoeken en structurele context.
- Benoemde symbolen voeden semantische lookup en kruisverwijzingen. Graafnavigatie is beschikbaar wanneer relatie-extractie is ingeschakeld.
- Deze taal draagt symbolen en relaties bij aan graafbewust zoeken; ondersteunde kanttypen variëren met de eigen constructies van de taal.
- Zowel AST-parsing als symboolextractie zijn beschikbaar.

## Beste toepassing

- Android-teams met grote multimodule-apps waarin ViewModels, repositories en use cases elkaar over modules heen aanroepen.
- Server-side Kotlin en Kotlin/JVM-services die Kotlin combineren met oudere Java-code.
- Gradle-builds in Kotlin script (`.kts`) die agents samen met de applicatiecode moeten lezen.

## Agentworkflows

- Elke aanroeper van een repository- of use-caseklasse vinden voordat de API verandert.
- Een coroutineflow volgen vanaf de `launch` in een ViewModel via `withContext` tot in de datalaag.
- Vóór een refactoring in kaart brengen welke klassen een interface implementeren of een basismethode overschrijven.

## Waar Kotlin oppervlakkige AI-tools laat struikelen

Kotlin is beknopt omdat het bedrading verbergt. `apply`, `let`, `also`, `run` en `with` veranderen wat `this` en `it` betekenen. Extension functions hangen gedrag aan types die elders zijn gedefinieerd. Coroutines verplaatsen werk via `launch`, `async` en `withContext`. Een agent die één bestand tegelijk leest, ziet de aanroepen maar niet de receivers erachter.

Maguyva lost een groter deel van die structuur al bij het indexeren op, zodat een agent kan vragen wie een functie aanroept en het echte antwoord krijgt.

## Wat Maguyva in Kotlin extraheert

Maguyva dekt `.kt` en `.kts`. Functies, klassen, objects en companion objects worden geëxtraheerd, en functiesignaturen leggen extension receivers, parameternamen, standaardwaarden en `vararg`-parameters vast.

Aanroeprelaties behouden klasse-gekwalificeerde namen, zodat `OrderRepository.save` te onderscheiden blijft van een andere `save`. Receivertypering volgt `this` binnen `apply` en `run`, `it` binnen `let` en `also`, en het argument van `with`, zodat aanroepen in scope functions naar het juiste type worden opgelost. Coroutine-builders en Flow-operatoren (`launch`, `async`, `withContext`, `coroutineScope`, `supervisorScope`, `flow`, `emit`, `delay`, `Channel`) blijven bewust in de graaf.

De graaf legt ook overerving vast, interface-implementatie, overrides, instantiëring, annotaties, typeverwijzingen, lees- en schrijfacties, en randen voor het gooien en afvangen van exceptions.

## Voorbeeldprompts voor agents

- "Wie roept `CheckoutUseCase.invoke` aan, en vanuit welke ViewModels?" (`find_symbol`, daarna `dependency_search` incoming)
- "Volg de syncflow van `SyncWorker` tot de netwerkclient." (`get_task_context`)
- "Welke klassen implementeren `PaymentGateway`?" (`dependency_search`)

## Bekende beperkingen

- Ongeveer 250 aanroepen uit de Kotlin-standaardbibliotheek en het platform worden uit de relaties gefilterd, dus helpers zoals `listOf`, `map`, `filter` en `println` zijn geen randen in de graaf. Gebruik daarvoor `text_pattern_search`.

## Volgende stappen

Koppel een repository via de [snelstart](/nl/docs/quickstart) en bekijk daarna de ondersteuningsmatrix op de [compatibiliteitspagina](/nl/docs/compatibility). Lees bij gemengde codebases ook de [Java-gids](/nl/languages/java).

## Enginedetails

- Kotlin-ondersteuning dekt `.kt` en `.kts`. Signaturen leggen extension receivers, parameternamen, standaardwaarden en `vararg`-parameters vast.
- Receivertypering volgt `this` in `apply` en `run`, `it` in `let` en `also`, en het argument van `with`, en aanroepen behouden klasse-gekwalificeerde namen.
- Coroutine-builders en Flow-operatoren zoals `launch`, `withContext` en `flow` blijven in de graaf, terwijl ongeveer 250 aanroepen uit de standaardbibliotheek worden gefilterd.

## Nuttige MCP-instappunten

- `find_symbol`: Gebruik het voor een klasse, use case of extension function wanneer je de definitie en verwijzingen nodig hebt.
- `dependency_search`: Gebruik vóór een API-wijziging incoming-traversal op een repository of interface om aanroepers en implementaties te zien.
- `get_task_context`: Gebruik het voor prompts zoals "volg de syncflow van `SyncWorker` tot de netwerkclient".
