fix(php): escape reserved words in enum variables names (#5356)

Signed-off-by: Vincent Giersch <vincent@giersch.fr>
This commit is contained in:
Vincent Giersch 2017-04-10 17:19:06 +02:00 committed by wing328
parent c6959b0d21
commit 99f0ab496b
2 changed files with 12 additions and 4 deletions

View File

@ -315,7 +315,7 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig {
} }
@Override @Override
public String escapeReservedWord(String name) { public String escapeReservedWord(String name) {
if(this.reservedWordsMappings().containsKey(name)) { if(this.reservedWordsMappings().containsKey(name)) {
return this.reservedWordsMappings().get(name); return this.reservedWordsMappings().get(name);
} }
@ -679,8 +679,8 @@ public class PhpClientCodegen extends DefaultCodegen implements CodegenConfig {
enumName = enumName.replaceFirst("^_", ""); enumName = enumName.replaceFirst("^_", "");
enumName = enumName.replaceFirst("_$", ""); enumName = enumName.replaceFirst("_$", "");
if (enumName.matches("\\d.*")) { // starts with number if (isReservedWord(enumName) || enumName.matches("\\d.*")) { // reserved word or starts with number
return "_" + enumName; return escapeReservedWord(enumName);
} else { } else {
return enumName; return enumName;
} }

View File

@ -334,7 +334,15 @@ public class PhpModelTest {
} }
@Test(description = "test enum variable names for reserved words")
public void testReservedWord() throws Exception {
final DefaultCodegen codegen = new PhpClientCodegen();
Assert.assertEquals(codegen.toEnumVarName("public", null), "_PUBLIC");
Assert.assertEquals(codegen.toEnumVarName("Private", null), "_PRIVATE");
Assert.assertEquals(codegen.toEnumVarName("IF", null), "_IF");
// should not escape non-reserved
Assert.assertEquals(codegen.toEnumVarName("hello", null), "HELLO");
}
} }