| <html><body> |
| This intention changes a library method contract. |
| |
| Method contract has the following syntax:<br/> |
| contract ::= (clause ';')* clause<br/> |
| clause ::= args '->' effect<br/> |
| args ::= ((arg ',')* arg )?<br/> |
| arg ::= value-constraint<br/> |
| value-constraint ::= 'any' | 'null' | '!null' | 'false' | 'true'<br/> |
| effect ::= value-constraint | 'fail' | 'exit'<p/> |
| |
| The constraints denote the following:<br/> |
| <ul> |
| <li> _ - any value |
| <li> null - null value |
| <li> !null - a value statically proved to be not-null |
| <li> true - true boolean value |
| <li> false - false boolean value |
| <li> fail - the method throws exception, if the arguments satisfy argument constraints |
| <li> exit - the method terminates the current process, if the arguments satisfy argument constraints |
| </ul> |
| Examples:<p/> |
| <code>@Contract("_, null -> null")</code> - method returns null if its second argument is null<br/> |
| <code>@Contract("_, null -> null; _, !null -> !null")</code> - method returns null if its second argument is null and not-null otherwise<br/> |
| <code>@Contract("true -> fail")</code> - a typical assertFalse method which throws an exception if <code>true</code> is passed to it<br/> |
| |
| </body></html> |