The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use lib 'tlib';
use Test::More;

plan tests => 2;

subtest 'Outermost scope' => sub {
    use Test_Compiletime_Hints 'outermost';

    Test_Compiletime_Hints::verify_hint_is('outermost');

    Test_Compiletime_Hints::set_hint_to('outerleast');
    Test_Compiletime_Hints::verify_hint_is('outerleast');

    subtest 'Middle scope' => sub {
        use Test_Compiletime_Hints 'middle';
        Test_Compiletime_Hints::verify_hint_is('middle');

        subtest 'Innermost scope' => sub {
            use Test_Compiletime_Hints 'innermost';
            Test_Compiletime_Hints::verify_hint_is('innermost');

            Test_Compiletime_Hints::set_hint_to('innerleast');
            Test_Compiletime_Hints::verify_hint_is('innerleast');
        };

        Test_Compiletime_Hints::verify_hint_is('middle');
    };

    Test_Compiletime_Hints::verify_hint_is('outerleast');
};

subtest 'Unautovivifiable hints' => sub {
    use Test_Compiletime_Hints 'vivified';
    Test_Compiletime_Hints::verify_hint_is('vivified');
    Test_Compiletime_Hints::set_new_hint_to('unvivified');
};

done_testing();