module M {
  typedef long ArgType;
  const long I = 10;
  interface A {
    struct S {
      struct T {
        ArgType x[I]; // ArgType and I introduced
      } m;
    };
    struct U {
      long I; // OK, I is not a type name
    };
    enum I { I1, I2 }; // Error: I redefined
  }; // Potential scope of ArgType and I ends here
};
