tbaeder added a comment. I'm looking at this again and I am not sure how it is meant to work. For example in `Parser::parseClassSpecifier` in `ParseDeclCXX.cpp`. Here `attrs` is a local variable of type `ParsedAttributesWithRange`, already before my patch. `attrs` is then passed to
1. `MaybeParseGNUAttributes` 2. `MaybeParseMicrosoftDeclSpecs` 3. `ParseMicrosoftInheritanceClassAttributes` 4. `MaybeParseCXX11Attributes` and later `parseClassSpecifier` calls `ProhibitAttributes(attrs)` a few times. `ProhibitAttributes` in turn will not do anything if the given attrs have an invalid (i.e. unset) range. So, how could they ever have a valid range set? All the four functions above only take a `ParsedAttributes`, no range. This is one of the cases that now (that `MaybeParseGNUAttributes` sets the range of the given `attrs` if it really parses attributes) generates errors in various test cases. For example in `clang/test/AST/ast-print-record-decl.c`: File /home/tbaeder/llvm-project/clang/test/AST/ast-print-record-decl.c Line 209: an attribute list cannot appear here Am I missing something? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D75844/new/ https://reviews.llvm.org/D75844 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits