summaryrefslogtreecommitdiff
path: root/cpp/test/Slice/errorDetection/OptionalParams.ice
blob: 9a0b8e915e9484eb670daa25aa5e406703637f2a (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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// **********************************************************************
//
// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************

module Test
{

const byte C1 = 0;
const short C2 = 0;
const int C3 = -1;
const long C4 = 0x80000001;
const float C5 = 1.1;
const long C6 = 2;

enum E { e1, e2, e3 };
enum Ebis { e1 };

interface I
{
    optional string r1();             // missing tag
    optional() int r2();              // missing tag
    optional(abc) bool r3();          // invalid tag
    optional(0x80000000) short r4();  // out of range
    optional(-0x80000001) long r5();  // out of range
    optional(-1) float r6();          // out of range
    optional(C1) string r7();         // ok
    optional(C3) double r8();         // invalid tag
    optional(C4) byte r9();           // out of range
    optional(C5) bool r10();          // invalid tag
    optional(C6) bool r11();          // ok
    optional(E::e1) int r12();           // ok
    optional(E::e2) void r13();          // syntax error

    void i1(optional string p);             // missing tag
    void i2(optional() int p);              // missing tag
    void i3(optional(abc) bool p);          // invalid tag
    void i4(optional(0x80000000) short p);  // out of range
    void i5(optional(-0x80000001) long p);  // out of range
    void i6(optional(-1) float p);          // out of range
    void i7(optional(C1) string p);         // ok
    void i8(optional(C3) double p);         // invalid tag
    void i9(optional(C4) byte p);           // out of range
    void i10(optional(C5) bool p);          // invalid tag
    void i11(optional(C6) bool p);          // ok
    void i12(optional(e2) int p);           // ok (warning)

    void o1(out optional string p);             // missing tag
    void o2(out optional() int p);              // missing tag
    void o3(out optional(abc) bool p);          // invalid tag
    void o4(out optional(0x80000000) short p);  // out of range
    void o5(out optional(-0x80000001) long p);  // out of range
    void o6(out optional(-1) float p);          // out of range
    void o7(out optional(C1) string p);         // ok
    void o8(out optional(C3) double p);         // invalid tag
    void o9(out optional(C4) byte p);           // out of range
    void o10(out optional(C5) bool p);          // invalid tag
    void o11(out optional(C6) bool p);          // ok
    void o12(out optional(e1) int p);           // ambiguous

    optional(1) int io1(optional(2) int p, out optional(3) int o);      // ok
    optional(1) int io2(out optional(2) int p, out optional(3) int o);  // ok
    optional(1) int io3(optional(2) int p, out optional(1) int o);      // duplicate tag
    optional(1) int io4(out optional(2) int p, out optional(2) int o);  // duplicate tag
    optional(2) int io5(out optional(1) int p, out optional(2) int o);  // duplicate tag
    optional(C1) int io6(optional(E::e2) int p, out optional(E::e1) int o);   // duplicate tag
};

};