struct An1
{
    An3 x;
}

struct An3
{
    An2 y;
}

struct An2
{
    int y;
}

extern fn void printf(char* string);

macro void An2.@helloWorld(&an2)
{
    printf("An2 hello\n");
}

fn void check()
{
    printf("Checking\n");
}


fn void test1()
{
    An1 an;
    an.x.y.@helloWorld; // #error:  macro name must be followed by '('
}

fn void test2()
{
    An2 a;
    a.@helloWorld; // #error: A macro name must be followed by '('
}

fn void test3()
{
    An2 a;
    a.@helloWorld.b; // #error: There is no member or method 'b' on 'void'
}

