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