Advanced @Contract capabilities
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
Piste de recherche
Commencez par examiner l’annotation Contract et la syntaxe d’exemple de cette issue, y compris le comportement proposé de CacheReference et Reference. Déterminez s’il est possible de spécifier une syntaxe de contrat avancée autonome et quelles règles de validation sont nécessaires ; le travail est terminé lorsque la syntaxe et les comportements pris en charge sont clairement définis et approuvés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Kotlin
- Étoiles
- 465
- Forks
- 74
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de JetBrains/java-annotations
-
@TestOnly should be allowed for ElementType.PACKAGEPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
JetBrains/java-annotations#123 ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
JetBrains/java-annotations#134 · 6 commentaires · 1 réaction ·
-
Add AndroidTarget as KMP targetPeut-être à nouveau libre @serjsysoev l’a pris il y a 522 jours, et aucune pull request n’est ouverte. Ouverte
JetBrains/java-annotations#125 · 1 réaction · 1 personne assignée ·
-
Double/float range annotationOuverte
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
JetBrains/java-annotations#122 · 2 commentaires ·
-
Allow use of @Language on (formatted-)string literalsPeut-être à nouveau libre @serjsysoev l’a pris il y a 697 jours, et aucune pull request n’est ouverte. Ouverte
JetBrains/java-annotations#117 · 4 commentaires · 1 personne assignée ·
Toutes les issues de JetBrains/java-annotations
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
Kotlin/kotlin-lsp#288 ·
-
needs-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
chrisbanes/haze#1536 ·
Les mainteneurs répondent en général sous 1 jour
-
Cassiopeia drops the `präsentiert von` credit printed in the event bodyPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverteafk-ok area:data-quality importer size:S
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
enorm-labs/event-junkie#3166 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
rajpreetcodes/Skills_MCP_Server#25 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
com-lihaoyi/mill#7776 ·
Les mainteneurs répondent en général sous 1 jour