summaryrefslogtreecommitdiff
path: root/tests/examplefiles/example.ceylon
blob: 04223c56453cc6badd9835ecc0dda51b31e04fe7 (plain)
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
43
44
45
46
47
48
49
50
51
52
import ceylon.language { parseInteger }

doc "A top-level function,
     with multi-line documentation."
void topLevel(String? a, Integer b=5, String* seqs) {
    function nested(String s) {
        print(s[1..2]);
        return true;
    }
    for (s in seqs.filter((String x) => x.size > 2)) {
        nested(s);
    }
    value uppers = seqs.map((String x) {
        return x.uppercased;
    });
    String|Null z = a;
    {Integer+} ints = { 1, 2, 3, 4, 5 };
    value numbers = [ 1, #ffff, #ffff_ffff, $10101010, $1010_1010_1010_1010,
        123_456_789 ];
    value chars = ['a', '\{#ffff}' ];
}

shared class Example_1<Element>(name, element) satisfies Comparable<Example_1<Element>>
        given Element satisfies Comparable<Element> {
    shared String name;
    shared Element element;
    shared [Integer,String] tuple = [1, "2"];
    shared late String lastName;
    variable Integer cnt = 0;

    shared Integer count => cnt;
    assign count {
        assert(count >= cnt);
        cnt = count;
    }

    shared actual Comparison compare(Example_1<Element> other) {
        return element <=> other.element;
    }

    shared actual String string {
        return "Example with ``element.string``";
    }
}

Example_1<Integer> instance = Example_1 {
    element = 5;
    name = "Named args call \{#0060}";
};

object example1 extends Example_1<Integer>("object", 5) {
}