From be3e33f4729d05398bbe76eb431ed146fe314b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Ros=C3=A9?= Date: Tue, 17 Oct 2017 17:14:34 +0200 Subject: [PATCH] [C++] Sanitize operation ids. (#6664) * [C++] Sanitize operation ids. * [C++] Handle reserved words in `toOperationId`. * [C++] Re-order reserved words alphabetically. * [C++] Add missing reserved words. --- .../codegen/languages/AbstractCppCodegen.java | 92 ++++++++++++------- 1 file changed, 57 insertions(+), 35 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCppCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCppCodegen.java index 7dcb9ed1464..1c44d1587c4 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCppCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCppCodegen.java @@ -17,77 +17,90 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg */ setReservedWordsLowerCase( Arrays.asList( + "alignas", + "alignof", + "and", + "and_eq", + "asm", "auto", + "bitand", + "bitor", + "bool", "break", "case", + "catch", "char", + "char16_t", + "char32_t", + "class", + "compl", + "concept", "const", + "constexpr", + "const_cast", "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", + "not", + "not_eq", + "nullptr", + "operator", + "or", + "or_eq", + "private", + "protected", + "public", "register", + "reinterpret_cast", + "requires", "return", "short", "signed", "sizeof", "static", + "static_assert", + "static_cast", "struct", "switch", - "typedef", - "union", - "unsigned", - "void", - "volatile", - "while", - "asm", - "bool", - "catch", - "class", - "const_cast", - "delete", - "dynamic_cast", - "explicit", - "false", - "friend", - "inline", - "mutable", - "namespace", - "new", - "operator", - "private", - "public", - "protected", - "reinterpret_cast", - "static_cast", "template", "this", + "thread_local", "throw", "true", "try", + "typedef", "typeid", "typename", + "union", + "unsigned", "using", "virtual", + "void", + "volatile", "wchar_t", - "and", - "and_eq", - "bitand", - "bitor", - "compl", - "not", - "not_eq", - "or", - "or_eq", + "while", "xor", "xor_eq") ); @@ -127,6 +140,15 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg return sanitizeName("_" + name); } + @Override + public String toOperationId(String operationId) { + if (isReservedWord(operationId)) { + LOGGER.warn(operationId + " (reserved word) cannot be used as method name. Renamed to " + escapeReservedWord(operationId)); + return escapeReservedWord(operationId); + } + return sanitizeName(super.toOperationId(operationId)); + } + @Override public String toParamName(String name) { return sanitizeName(super.toParamName(name));