# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

// Testcase for THRIFT-5253 using Result in result name generates wrong IAsync interface

namespace * Thrift5253


// this works
struct WorksArrrgs { 1: i32 foo }
struct WorksRslt   { 1: i32 foo }

// this does not
struct BrokenResult{ 1: i32 foo }
struct BrokenArgs  { 1: i32 foo }

struct InternalStructs { 1: optional i32 foo }
struct AsyncProcessor  { 1: optional i32 foo }
struct Client          { 1: optional i32 foo }
struct IAsync          { 1: optional i32 foo }

struct ReservedMemberName { 1: optional i32 Isset }

service MyService{
    BrokenResult Broken( 1 : BrokenArgs  foo)
    WorksRslt     Works( 1 : WorksArrrgs foo)

    InternalStructs InternalStructs( 1: InternalStructs foo)
    AsyncProcessor  AsyncProcessor ( 1: AsyncProcessor  foo)
    Client          Client         ( 1: Client  foo)
    IAsync          IAsync         ( 1: IAsync  foo)

    // inconsistent treatment of methods ending in "Async"
    void TestXsync()
    void TestAsync()
}

