Inconsistent shadowing behavior in procedure arguments
While shadowing variables seems to be disallowed everywhere else, procedure arguments can shadow everything, including other procedure definitions:
int x;
struct S {
int y;
void test(int x, int x, int y, int y) {}
}
mainAgent {}