Implement effects of 'mutable', and a few comments from Chris on its parsing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59470 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index f601fe4..68dcdc8 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -447,6 +447,8 @@
         else
           Diag(DS.getThreadSpecLoc(),
                diag::err_mutable_function);
+        // FIXME: It would be nicer if the keyword was ignored only for this
+        // declarator. Otherwise we could get follow-up errors.
         D.getMutableDeclSpec().ClearStorageClassSpecs();
       } else {
         QualType T = GetTypeForDeclarator(D, S);
@@ -460,6 +462,8 @@
             Diag(DS.getStorageClassSpecLoc(), err);
           else
             Diag(DS.getThreadSpecLoc(), err);
+          // FIXME: It would be nicer if the keyword was ignored only for this
+          // declarator. Otherwise we could get follow-up errors.
           D.getMutableDeclSpec().ClearStorageClassSpecs();
         }
       }