/* * Copyright (c) Meta Platforms, Inc. and affiliates. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ struct FirstAnnotation { 1: string name; 2: i64 count = 1; } struct SecondAnnotation { 2: i64 total = 0; 3: SecondAnnotation recurse; 4: UnionAnnotation either; } union UnionAnnotation { 2: i64 left; 3: i64 right; } @FirstAnnotation{name = "my_type"} typedef string annotated_string @FirstAnnotation{name = "my_struct", count = 3} @SecondAnnotation struct MyStruct { @SecondAnnotation{} 5: annotated_string tag; } @FirstAnnotation exception MyException { 1: string message; } @SecondAnnotation{total = 1, either = UnionAnnotation{left = 0}} union MyUnion { 1: i64 int_value; 2: string string_value; } @SecondAnnotation{total = 4, recurse = SecondAnnotation{total = 5}} service MyService { @SecondAnnotation i64 my_function(2: annotated_string param); } @FirstAnnotation{name = "shiny"} enum MyEnum { UNKNOWN = 0, @SecondAnnotation FIRST = 1, } @FirstAnnotation{name = "my_hack_enum"} const map MyConst = {"ENUMERATOR": "value"};