Advanced @Contract capabilities
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
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 notinstanceof CacheReference, else see next) into aCacheReference - Return first parameter if the first parameter is
instanceof CacheReference(which is already imported due to return type; return types should be validated byparamN)
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
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus JetBrains/java-annotations
-
@TestOnly should be allowed for ElementType.PACKAGEEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
JetBrains/java-annotations#123 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
JetBrains/java-annotations#134 · 6 Kommentare · 1 Reaktion ·
-
Add AndroidTarget as KMP targetEvtl. wieder frei @serjsysoev hat das vor 524 Tagen übernommen, und es ist kein Pull Request offen. Offen
JetBrains/java-annotations#125 · 1 Reaktion · 1 zugewiesene Person ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
JetBrains/java-annotations#122 · 2 Kommentare ·
-
Allow use of @Language on (formatted-)string literalsEvtl. wieder frei @serjsysoev hat das vor 700 Tagen übernommen, und es ist kein Pull Request offen. Offen
JetBrains/java-annotations#117 · 4 Kommentare · 1 zugewiesene Person ·
Alle Issues in JetBrains/java-annotations
Ähnliche Issues
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
:maddi-inspection-kotlin:test runs out of heap in a full maddi test run; exit 1 with no failing testOffenbuild/ci front-end:kotlin
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
bisq-network/bisq-mobile#1948 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
streetcomplete/StreetComplete#7286 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag