rsmith added inline comments.

================
Comment at: include/clang/AST/Type.h:4852-4855
+/// \brief Represents a type occurrence that either (1) refers to the type
+/// using an elaborated type keyword, e.g., struct S, (2) refers to the type
+/// via a qualified name, e.g., N::M::type, (3) owns a (re)declaration of that
+/// type, or (4) some combination of those.
----------------
I think it's better to keep this as-is: the "owns a (re)declaration" case is a 
special case of using an elaborated type keyword.


================
Comment at: include/clang/AST/Type.h:4905
+  ///
+  /// FIXME: This is set for tag types but not necessarily other types.
+  /// FIXME: The TypeDecl returned is not always exactly faithful to the
----------------
Are there other types for which it would be meaningful? (If not, we could store 
and expose this as a `TagDecl` instead.)


================
Comment at: include/clang/AST/Type.h:4906-4916
+  /// FIXME: The TypeDecl returned is not always exactly faithful to the
+  /// original source because, when building the AST, the parser (1) adds
+  /// all attributes declared on a tag to all later redeclarations of that
+  /// tag (that is, tag occurrences declaring an attribute or member list),
+  /// and (2) drops attributes declared on a tag after an occurrence of that
+  /// tag declaring a member list.  When printing the AST, the first change
+  /// should not affect semantics or diagnostics because it merely reveals
----------------
You can use `isInherited()` on the attribute to find out whether it was written 
on that declaration or inherited.


https://reviews.llvm.org/D45463



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to