struct test_t { int x, y; }; void foo0(test_t a); void foo1(test_t* a); // syntax highlight fails void foo2(test_t& a); // syntax highlight fails void foo1a(test_t* a, test_t* b); // syntax highlight fails void foo2a(test_t& a, test_t& b); // syntax highlight fails void foo1b(int x, test_t* a); void foo2b(int x, test_t& a); void foo1c(test_t* a, int x); void foo2c(test_t& a, int x); void foo1d(const test_t* a); void foo2d(const test_t& a); void test(test_t& x) // on definitions, it works { foo2(x); // syntax highlight fails foo1b(1, x); }