diff options
| -rw-r--r-- | clang/lib/AST/StmtPrinter.cpp | 8 | ||||
| -rw-r--r-- | clang/test/Coverage/c-language-features.inc | 12 |
2 files changed, 17 insertions, 3 deletions
diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp index db70cbe72de..0f4fd552461 100644 --- a/clang/lib/AST/StmtPrinter.cpp +++ b/clang/lib/AST/StmtPrinter.cpp @@ -1274,10 +1274,12 @@ void StmtPrinter::VisitDesignatedInitExpr(DesignatedInitExpr *Node) { DEnd = Node->designators_end(); D != DEnd; ++D) { if (D->isFieldDesignator()) { - if (D->getDotLoc().isInvalid()) - OS << D->getFieldName()->getName() << ":"; - else + if (D->getDotLoc().isInvalid()) { + if (IdentifierInfo *II = D->getFieldName()) + OS << II->getName() << ":"; + } else { OS << "." << D->getFieldName()->getName(); + } } else { OS << "["; if (D->isArrayDesignator()) { diff --git a/clang/test/Coverage/c-language-features.inc b/clang/test/Coverage/c-language-features.inc index 0ff1237b12e..356687907d9 100644 --- a/clang/test/Coverage/c-language-features.inc +++ b/clang/test/Coverage/c-language-features.inc @@ -196,3 +196,15 @@ struct s11 { } f0; int f1; }; + +// Unnamed structures. +struct s12 { + struct { + unsigned char aa; + unsigned char bb; + }; +}; + +void f11() { + struct s12 var = { .aa = 33 }; +} |

