Marcel van Lohuizen | 3c437bd | 2020-04-01 18:19:30 +0200 | [diff] [blame] | 1 | // OpenAPI title. |
| 2 | |
| 3 | $version: "v1alpha1" |
| 4 | |
Marcel van Lohuizen | eac3ea2 | 2020-03-19 09:55:11 +0100 | [diff] [blame] | 5 | T :: { |
| 6 | shared: int |
| 7 | } |
| 8 | T :: {} | { |
Marcel van Lohuizen | 95fcc28 | 2019-06-25 17:37:06 +0200 | [diff] [blame] | 9 | exact: string |
| 10 | } | { |
| 11 | regex: string |
| 12 | } |
Marcel van Lohuizen | eac3ea2 | 2020-03-19 09:55:11 +0100 | [diff] [blame] | 13 | T :: {} | { |
| 14 | count: int |
| 15 | } | { |
| 16 | amount: int |
| 17 | } |
| 18 | T :: { |
| 19 | shared2: int |
| 20 | } |
Marcel van Lohuizen | 95fcc28 | 2019-06-25 17:37:06 +0200 | [diff] [blame] | 21 | |
Marcel van Lohuizen | 7e4dc22 | 2019-10-08 13:14:34 +0200 | [diff] [blame] | 22 | MyInt :: int |
Marcel van Lohuizen | 95fcc28 | 2019-06-25 17:37:06 +0200 | [diff] [blame] | 23 | |
Marcel van Lohuizen | 3c437bd | 2020-04-01 18:19:30 +0200 | [diff] [blame] | 24 | Foo :: { |
Marcel van Lohuizen | eac3ea2 | 2020-03-19 09:55:11 +0100 | [diff] [blame] | 25 | include: T |
| 26 | exclude: [...T] |
Marcel van Lohuizen | 95fcc28 | 2019-06-25 17:37:06 +0200 | [diff] [blame] | 27 | count: MyInt |
| 28 | } |
Marcel van Lohuizen | eac3ea2 | 2020-03-19 09:55:11 +0100 | [diff] [blame] | 29 | |
| 30 | Incompatible :: { |
| 31 | shared: int |
| 32 | } | { |
| 33 | shared: int |
| 34 | extra1: int |
| 35 | } | { |
| 36 | shared: int |
| 37 | extra2: int |
| 38 | } |
| 39 | |
| 40 | WithMap :: { |
| 41 | shared: [string]: int |
| 42 | } | { |
| 43 | shared: [string]: int |
| 44 | extra: int |
| 45 | } | { |
| 46 | shared: string // incompatible |
| 47 | extra: int |
| 48 | } |
| 49 | |
| 50 | Embed :: { |
| 51 | a?: int |
| 52 | |
| 53 | close({}) | |
Marcel van Lohuizen | ed90d00 | 2020-03-30 17:18:12 +0200 | [diff] [blame] | 54 | close({b: T}) | |
Marcel van Lohuizen | eac3ea2 | 2020-03-19 09:55:11 +0100 | [diff] [blame] | 55 | close({c: int}) |
| 56 | |
Marcel van Lohuizen | ed90d00 | 2020-03-30 17:18:12 +0200 | [diff] [blame] | 57 | T :: {b?: int} |
| 58 | |
| 59 | close({}) | |
| 60 | close({d: T}) | |
| 61 | close({e: int}) |
| 62 | |
Marcel van Lohuizen | eac3ea2 | 2020-03-19 09:55:11 +0100 | [diff] [blame] | 63 | // TODO: maybe support builtin to write this as |
| 64 | // oneof({}, |
| 65 | // {b: int}, |
| 66 | // {c: int}) |
| 67 | } |