@Documented @Retention(value=RUNTIME) @Target(value={METHOD,CONSTRUCTOR}) @InheritedAnnotation public @interface EnsuresKeyForIf
As an example, consider the following method in java.util.Map
:
@EnsuresKeyForIf(result=true, expression="key", map="this") public boolean containsKey(String key) { ... }If an invocation
m.containsKey(k)
returns true, then the type of k
can be
inferred to be @KeyFor("m")
.KeyFor
,
EnsuresKeyFor
Modifier and Type | Required Element and Description |
---|---|
String[] |
expression
Java expressions that are keys in the given maps after the method returns the given result.
|
String[] |
map
Java expressions that are maps, each of which contains each of the expressions' value after
the method returns the given result.
|
boolean |
result
The value the method must return, in order for the postcondition to hold.
|
public abstract boolean result
public abstract String[] expression
public abstract String[] map