Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Advanced @Contract capabilities

Offen
#30 3 Kommentare 3 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
25/100
Issue-Typ
Feature
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
java
Bereich
tooling

Rechercherichtung

Beginne mit der Überprüfung der Contract-Annotation und der Beisp syntax in diesem Issue, einschließlich des vorgeschlagenen Verhaltens von CacheReference und Reference. Bestimme, ob eine eigenständige erweiterte Contract-Syntax spezifiziert werden kann und welche Validierungsregeln erforderlich sind; die Arbeit ist abgeschlossen, wenn die Syntax und die unterstützten Verhaltensweisen eindeutig definiert und vereinbart sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

I was thinking about possible extra possibilities for the Contract annotation.
I have this example already; I will add more as I stumble upon them:
Consider this method:

    @Contract("CacheReference -> param1; null -> fail; !null -> new")
    protected abstract CacheReference<K, V> advanceIntoCacheRef(Reference<V> reference);

The method should do the following things; as described by the contract:

  • Throw an NPE, if the parameter is null
  • Wrap the parameter Reference (if not instanceof CacheReference, else see next) into a CacheReference
  • Return first parameter if the first parameter is instanceof CacheReference (which is already imported due to return type; return types should be validated by paramN)

Now, obviously this contract won't work, because it doesn't know about more things than nulls; really. Given other capabilities of IntelliJ, it should be fairly easy coming up with a simple, standalone concept for advanced Contract syntax.

Vorherrschende Sprache
Kotlin
Sterne
465
Forks
73
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus JetBrains/java-annotations

Alle Issues in JetBrains/java-annotations

Ähnliche Issues

Weitere Issues zu Kotlin

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.