import org.checkerframework.checker.units.*;
import org.checkerframework.checker.units.qual.*;
/**
* One possible future extension is adding method annotations to check for consistency of arguments.
* This is not implemented yet; send us a message if you think this would help you!
*
* @skip-test
*/
public class Consistency {
@UnitsSame({0, 1})
@UnitsProduct({0, 1, -1})
@Area int calcArea(@Length int width, @Length int height) {
return width * height;
}
void use() {
@m int m1, m2;
m1 = UnitsTools.toMeter(5);
m2 = UnitsTools.toMeter(51);
@km int km1, km2;
km1 = UnitsTools.toMeter(5);
km2 = UnitsTools.toMeter(5);
@m2 int msq;
@km2 int kmsq;
// good
msq = calcArea(m1, m2);
//:: bad args
msq = calcArea(m1, km2);
//:: bad return
kmsq = calcArea(m1, m2);
// good
kmsq = calcArea(km1, km2);
}
}