197973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong/*
297973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong * Copyright (C) 2016 The Android Open Source Project
397973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong *
497973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong * Licensed under the Apache License, Version 2.0 (the "License");
597973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong * you may not use this file except in compliance with the License.
697973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong * You may obtain a copy of the License at
797973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong *
897973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong *      http://www.apache.org/licenses/LICENSE-2.0
997973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong *
1097973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong * Unless required by applicable law or agreed to in writing, software
1197973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong * distributed under the License is distributed on an "AS IS" BASIS,
1297973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1397973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong * See the License for the specific language governing permissions and
1497973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong * limitations under the License.
1597973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong */
1697973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong
1797973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hongpackage android.hardware.tests.bar@1.0;
1897973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong
1997973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hongimport android.hardware.tests.foo@1.0;
2097973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong
2197973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Honginterface IImportRules {
2297973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    // Note that there is a android.hardware.tests.foo@1.0::Outer in types.hal
2397973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    struct Outer {
2497973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong        struct Inner {
2597973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong            int32_t data;
2697973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong        };
2797973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong        string data;
2897973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    };
2997973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong
3097973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule0a(Outer o); // should be resolved to Outer above
3197973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule0a1(IImportRules.Outer o); // should be resolved to Outer above
3297973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule0b(@1.0::IImportRules.Outer o);
330cf302463a15930061bbadfba8396e9164dbcf8aSteven Moreland    rule0b1(android.hardware.tests.bar@1.0::IImportRules.Outer o);
3497973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule0c(android.hardware.tests.foo@1.0::Outer o);
3597973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule0d(@1.0::Outer o); // android.hardware.tests.foo@1.0::Outer
3697973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule0e(Outer.Inner o); // should be resolved to Outer above
3797973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule0f(@1.0::IImportRules.Outer.Inner o);
3897973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule0g(android.hardware.tests.foo@1.0::Outer.Inner o);
3997973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule0h(@1.0::Outer.Inner o); // android.hardware.tests.foo@1.0::Outer.Inner
4097973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong
4197973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule1a(Def abc); // should be resolved to Def in types.hal in this package
4297973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule1b(android.hardware.tests.foo@1.0::Def abc);
4397973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong
4497973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule2a(Unrelated related);
4597973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong
4697973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    // android.hardware.tests.foo@1.0::IFooCallback, since bar@1.0::IFooCallback is not imported.
4797973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong    rule2b(IFooCallback fooCallback);
4897973c69c8b77a0f7ef0ff73f5037cfdcc28f5acYifan Hong};
49