/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /// Taken from `https://en.cppreference.com/w/cpp/keyword` /// Some experimental keywords were filtered out and the resulting list was /// sorted using a rust program. const RESERVED_KEYWORDS: &[&str] = &[ "alignas", "alignof", "auto", "bool", "break", "case", "catch", "char", "char16_t", "char32_t", "char8_t", "class", "const", "const_cast", "consteval", "constexpr", "continue", "decltype", "default", "delete", "do", "double", "dynamic_cast", "else", "enum", "explicit", "export", "extern", "false", "float", "for", "friend", "goto", "if", "inline", "int", "long", "mutable", "namespace", "new", "noexcept", "nullptr", "operator", "private", "protected", "public", "register", "reinterpret_cast", "return", "short", "signed", "sizeof", "static", "static_assert", "static_cast", "struct", "switch", "template", "this", "thread_local", "throw", "true", "try", "typedef", "typename", "union", "unsigned", "using", "virtual", "void", "volatile", "wchar_t", "while", ]; pub fn escape(rust_identifier: &mut String) { if RESERVED_KEYWORDS .binary_search(&rust_identifier.as_ref()) .is_ok() { rust_identifier.push('_'); } }