File: Consistency.java

package info (click to toggle)
checker-framework-java 3.2.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 22,840 kB
  • sloc: java: 145,910; xml: 839; sh: 518; makefile: 401; perl: 26
file content (42 lines) | stat: -rw-r--r-- 973 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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);
    }
}