#**************************************************************
#  
#  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.
#  
#**************************************************************

EXPECT FAILURE "interfaceinheritance.tests 1":
interface Base {};
interface Derived {
    interface Base;
    interface Base;
};


EXPECT FAILURE "interfaceinheritance.tests 2":
interface Base {};
interface Derived {
    interface Base;
    [optional] interface Base;
};


EXPECT FAILURE "interfaceinheritance.tests 3":
interface Base {};
interface Derived {
    [optional] interface Base;
    interface Base;
};


EXPECT FAILURE "interfaceinheritance.tests 4":
interface Base {};
interface Derived {
    [optional] interface Base;
    [optional] interface Base;
};


EXPECT FAILURE "interfaceinheritance.tests 5":
interface Base1 {};
interface Base2: Base1 {};
interface Derived {
    interface Base1;
    interface Base2;
};


EXPECT FAILURE "interfaceinheritance.tests 6":
interface Base1 {};
interface Base2: Base1 {};
interface Derived {
    interface Base2;
    interface Base1;
};


EXPECT FAILURE "interfaceinheritance.tests 7":
interface Base1 {};
interface Base2: Base1 {};
interface Derived {
    [optional] interface Base1;
    interface Base2;
};


EXPECT FAILURE "interfaceinheritance.tests 8":
interface Base1 {};
interface Base2: Base1 {};
interface Derived {
    interface Base2;
    [optional] interface Base1;
};


EXPECT SUCCESS "interfaceinheritance.tests 9":
interface Base1 {};
interface Base2: Base1 {};
interface Derived {
    interface Base1;
    [optional] interface Base2;
};


EXPECT SUCCESS "interfaceinheritance.tests 10":
interface Base1 {};
interface Base2: Base1 {};
interface Derived {
    [optional] interface Base2;
    interface Base1;
};


EXPECT SUCCESS "interfaceinheritance.tests 11":
interface Base1 {};
interface Base2: Base1 {};
interface Derived {
    [optional] interface Base1;
    [optional] interface Base2;
};


EXPECT SUCCESS "interfaceinheritance.tests 12":
interface Base1 {};
interface Base2: Base1 {};
interface Derived {
    [optional] interface Base2;
    [optional] interface Base1;
};


EXPECT SUCCESS "interfaceinheritance.tests 13":
interface Base1 {};
interface Base2 { [optional] interface Base1; };
interface Derived {
    interface Base1;
    interface Base2;
};


EXPECT SUCCESS "interfaceinheritance.tests 14":
interface Base1 {};
interface Base2 { [optional] interface Base1; };
interface Derived {
    interface Base2;
    interface Base1;
};


EXPECT FAILURE "interfaceinheritance.tests 15":
interface Base1 {};
interface Base2 { [optional] interface Base1; };
interface Derived {
    [optional] interface Base1;
    interface Base2;
};


EXPECT FAILURE "interfaceinheritance.tests 16":
interface Base1 {};
interface Base2 { [optional] interface Base1; };
interface Derived {
    interface Base2;
    [optional] interface Base1;
};


EXPECT SUCCESS "interfaceinheritance.tests 17":
interface Base1 {};
interface Base2 { [optional] interface Base1; };
interface Derived {
    interface Base1;
    [optional] interface Base2;
};


EXPECT SUCCESS "interfaceinheritance.tests 18":
interface Base1 {};
interface Base2 { [optional] interface Base1; };
interface Derived {
    [optional] interface Base2;
    interface Base1;
};


EXPECT SUCCESS "interfaceinheritance.tests 19":
interface Base1 {};
interface Base2 { [optional] interface Base1; };
interface Derived {
    [optional] interface Base1;
    [optional] interface Base2;
};


EXPECT SUCCESS "interfaceinheritance.tests 20":
interface Base1 {};
interface Base2 { [optional] interface Base1; };
interface Derived {
    [optional] interface Base2;
    [optional] interface Base1;
};


EXPECT SUCCESS "interfaceinheritance.tests 21":
interface Base1 {};
interface Base2: Base1 {};
interface Base3: Base1 {};
interface Derived {
    interface Base2;
    interface Base3;
};


EXPECT SUCCESS "interfaceinheritance.tests 22":
interface Base1 {};
interface Base2: Base1 {};
interface Base3: Base1 {};
interface Derived {
    [optional] interface Base2;
    interface Base3;
};


EXPECT SUCCESS "interfaceinheritance.tests 23":
interface Base1 {};
interface Base2: Base1 {};
interface Base3: Base1 {};
interface Derived {
    interface Base2;
    [optional] interface Base3;
};


EXPECT SUCCESS "interfaceinheritance.tests 24":
interface Base1 {};
interface Base2: Base1 {};
interface Base3: Base1 {};
interface Derived {
    [optional] interface Base2;
    [optional] interface Base3;
};


EXPECT SUCCESS "interfaceinheritance.tests 25":
interface Base {};
interface Derived {
    [optional] interface Base;
};


EXPECT FAILURE "interfaceinheritance.tests 26":
interface Base;
interface Derived {
    interface Base;
};


EXPECT FAILURE "interfaceinheritance.tests 27":
interface Base;
interface Derived {
    [optional] interface Base;
};


EXPECT FAILURE "interfaceinheritance.tests 28":
interface Base {};
typedef Base Hidden;
interface Derived {
    interface Base;
    interface Hidden;
};


EXPECT FAILURE "interfaceinheritance.tests 29":
interface Base {};
typedef Base Hidden;
interface Derived {
    interface Hidden;
    interface Base;
};