MSVC accepts this:

class A {
  A::A();
};

Clang accepts regular member functions with extra qualification as an MS 
extension, but not constructors. The attached patch changes the parser to defer 
rejecting qualified constructors so that the same Sema logic can apply to 
constructors as regular member functions. This also improves the error message 
when MS extensions are disabled (in my opinion). Before it was:

/Users/jason/Desktop/test.cpp:2:8: error: expected member name or ';' after 
declaration specifiers
  A::A();
  ~~~~ ^
1 error generated.

After:

/Users/jason/Desktop/test.cpp:2:6: error: extra qualification on member 'A'
  A::A();
  ~~~^
1 error generated.

All tests pass and I added one additional test for this case.

Jason

Attachment: over-qualified-ctor.diff
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to