summaryrefslogtreecommitdiffhomepage
path: root/CompilerDriver/cc2/regression-tests/mixed-string-interpolation.cpp2
blob: ad7797f7ed41f74d9b929f746243e1c8be694027 (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
53
#include <iostream>
#include <string_view>
#include <utility>
#include <tuple>

struct custom_struct_with_no_stringize_customization { } custom;

main: () -> int = {
    a := 2;
    b: std::optional<int> = ();
    std::cout << "a = (a)$, b = (b)$\n";

    b = 42;
    std::cout << "a^2 + b = (a * a + b.value())$\n";

    sv: std::string_view = "my string_view";
    std::cout << "sv = (sv)$\n";

    osv: std::optional<std::string_view> = ();
    std::cout << "osv = (osv)$\n";
    osv = "string literal bound to optional string_view";
    std::cout << "osv = (osv)$\n";

    var: std::variant<std::monostate, std::string, double> = ();
    std::cout << "var = (var)$\n";
    var = "abracadabra";
    std::cout << "var = (var)$\n";
    var = 2.71828;
    std::cout << "var = (var)$\n";

    mypair: std::pair<int, double> = (12, 3.4);
    std::cout << "mypair = (mypair)$\n";

    tup1: std::tuple<int> = (12);
    tup2: std::tuple<int, double> = (12, 3.4);
    tup3: std::tuple<int, double, std::string> = (12, 3.4, "456");
    std::cout << "tup1 = (tup1)$\n";
    std::cout << "tup2 = (tup2)$\n";
    std::cout << "tup3 = (tup3)$\n";

    p: std::pair<std::string_view, std::optional<std::string>> = ("first", std::nullopt);
    std::cout << "p = (p)$\n";

    t: std::tuple<double, std::optional<std::pair<std::string_view, int>>, std::optional<std::tuple<int, int, int>>> = (3.14, std::nullopt, std::nullopt);
    std::cout << "t = (t)$\n";

    vv: std::variant<int, std::string, std::pair<int, double> > = ();
    std::cout << "vv = (vv)$\n";
    vv = std::make_pair(1,2.3);
    std::cout << "vv = (vv)$\n";

    std::cout << "custom = (custom)$\n";
}