/* Test protected vars - assignable within the class, but read-only
 * outside the class
 */
using namespace oadl;

class foo {
    protected var a;
    public const pi = 3.14159265358979;
    public proc set(b)
    {
        a = b;
    }
    public proc show()
    {
        say("a = ", a, "\n");
    }
}

foo bar {}

proc main()
{
    bar.set(3);
    bar.show();
    try {
        bar.a = 4;
    }
    catch(n) {
        if( n == AccessCheck ) {
            say("Protected works!\n");
        }
        else {
            say("Unexpected error: ", n, "\n");
        }
    }
    try {
        bar.pi = 5;
    }
    catch(n) {
        if( n == AccessCheck ) {
            say("Constants work!\n");
        }
        else {
            say("Unexpected error: ", n, "\n");
        }
    }
}