diff options
| author | Jonas Devlieghere <jonas@devlieghere.com> | 2019-08-22 02:56:00 +0000 |
|---|---|---|
| committer | Jonas Devlieghere <jonas@devlieghere.com> | 2019-08-22 02:56:00 +0000 |
| commit | 12002fbd211d3197a2ccba63632937ee1e9212f4 (patch) | |
| tree | 5b31b31131517b013550e8e3b5796ee5da2f27b3 | |
| parent | 58eb033a497747331477f8aac36408f24ca0f628 (diff) | |
| download | bcm5719-llvm-12002fbd211d3197a2ccba63632937ee1e9212f4.tar.gz bcm5719-llvm-12002fbd211d3197a2ccba63632937ee1e9212f4.zip | |
[FormatManager] Add static_assert to keep formats in sync.
This adds a static assert that ensures that there's a format info entry
for every format enum value. This should prevent others from making the
same mistake I made and Jason kindly fixed in r369611. (Thanks!)
llvm-svn: 369614
| -rw-r--r-- | lldb/source/DataFormatters/FormatManager.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lldb/source/DataFormatters/FormatManager.cpp b/lldb/source/DataFormatters/FormatManager.cpp index 24038ed29c9..9d89b8a8e22 100644 --- a/lldb/source/DataFormatters/FormatManager.cpp +++ b/lldb/source/DataFormatters/FormatManager.cpp @@ -30,7 +30,7 @@ struct FormatInfo { // current format }; -static FormatInfo g_format_infos[] = { +static constexpr FormatInfo g_format_infos[] = { {eFormatDefault, '\0', "default"}, {eFormatBoolean, 'B', "boolean"}, {eFormatBinary, 'b', "binary"}, @@ -72,6 +72,10 @@ static FormatInfo g_format_infos[] = { {eFormatInstruction, 'i', "instruction"}, {eFormatVoid, 'v', "void"}}; +static_assert((sizeof(g_format_infos) / sizeof(g_format_infos[0])) == + kNumFormats, + "All formats must have a corresponding info entry."); + static uint32_t g_num_format_infos = llvm::array_lengthof(g_format_infos); static bool GetFormatFromFormatChar(char format_char, Format &format) { |

