Skip to content

Commit

Permalink
Exclude valid constant name from reserved name.
Browse files Browse the repository at this point in the history
  • Loading branch information
TeBoring committed Sep 12, 2017
1 parent ddb9ef9 commit f46a01d
Show file tree
Hide file tree
Showing 9 changed files with 652 additions and 238 deletions.
2 changes: 2 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,8 @@ php_EXTRA_DIST= \
php/tests/proto/test_prefix.proto \
php/tests/proto/test_reserved_enum_lower.proto \
php/tests/proto/test_reserved_enum_upper.proto \
php/tests/proto/test_reserved_enum_value_lower.proto \
php/tests/proto/test_reserved_enum_value_upper.proto \
php/tests/proto/test_reserved_message_lower.proto \
php/tests/proto/test_reserved_message_upper.proto \
php/tests/proto/test_service.proto \
Expand Down
1 change: 1 addition & 0 deletions php/ext/google/protobuf/protobuf.h
Original file line number Diff line number Diff line change
Expand Up @@ -934,5 +934,6 @@ const zend_class_entry* field_type_class(

// Reserved name
bool is_reserved_name(const char* name);
bool is_valid_constant_name(const char* name);

#endif // __GOOGLE_PROTOBUF_PHP_PROTOBUF_H__
368 changes: 295 additions & 73 deletions php/tests/generated_class_test.php

Large diffs are not rendered by default.

148 changes: 73 additions & 75 deletions php/tests/proto/test_reserved_enum_lower.proto
Original file line number Diff line number Diff line change
Expand Up @@ -2,78 +2,76 @@ syntax = "proto3";

package lower_enum;

enum NotAllowed {
abstract = 0;
and = 1;
array = 2;
as = 3;
break = 4;
callable = 5;
case = 6;
catch = 7;
class = 8;
clone = 9;
const = 10;
continue = 11;
declare = 12;
default = 13;
die = 14;
do = 15;
echo = 16;
else = 17;
elseif = 18;
empty = 19;
enddeclare = 20;
endfor = 21;
endforeach = 22;
endif = 23;
endswitch = 24;
endwhile = 25;
eval = 26;
exit = 27;
extends = 28;
final = 29;
for = 30;
foreach = 31;
function = 32;
global = 33;
goto = 34;
if = 35;
implements = 36;
include = 37;
include_once = 38;
instanceof = 39;
insteadof = 40;
interface = 41;
isset = 42;
list = 43;
namespace = 44;
new = 45;
or = 46;
print = 47;
private = 48;
protected = 49;
public = 50;
require = 51;
require_once = 52;
return = 53;
static = 54;
switch = 55;
throw = 56;
trait = 57;
try = 58;
unset = 59;
use = 60;
var = 61;
while = 62;
xor = 63;
int = 64;
float = 65;
bool = 66;
string = 67;
true = 68;
false = 69;
null = 70;
void = 71;
iterable = 72;
}
enum abstract { ZERO1 = 0; }
enum and { ZERO2 = 0; }
enum array { ZERO3 = 0; }
enum as { ZERO4 = 0; }
enum break { ZERO5 = 0; }
enum callable { ZERO6 = 0; }
enum case { ZERO7 = 0; }
enum catch { ZERO8 = 0; }
enum class { ZERO9 = 0; }
enum clone { ZERO10 = 0; }
enum const { ZERO11 = 0; }
enum continue { ZERO12 = 0; }
enum declare { ZERO13 = 0; }
enum default { ZERO14 = 0; }
enum die { ZERO15 = 0; }
enum do { ZERO16 = 0; }
enum echo { ZERO17 = 0; }
enum else { ZERO18 = 0; }
enum elseif { ZERO19 = 0; }
enum empty { ZERO20 = 0; }
enum enddeclare { ZERO21 = 0; }
enum endfor { ZERO22 = 0; }
enum endforeach { ZERO23 = 0; }
enum endif { ZERO24 = 0; }
enum endswitch { ZERO25 = 0; }
enum endwhile { ZERO26 = 0; }
enum eval { ZERO27 = 0; }
enum exit { ZERO28 = 0; }
enum extends { ZERO29 = 0; }
enum final { ZERO30 = 0; }
enum for { ZERO31 = 0; }
enum foreach { ZERO32 = 0; }
enum function { ZERO33 = 0; }
enum global { ZERO34 = 0; }
enum goto { ZERO35 = 0; }
enum if { ZERO36 = 0; }
enum implements { ZERO37 = 0; }
enum include { ZERO38 = 0; }
enum include_once { ZERO39 = 0; }
enum instanceof { ZERO40 = 0; }
enum insteadof { ZERO41 = 0; }
enum interface { ZERO42 = 0; }
enum isset { ZERO43 = 0; }
enum list { ZERO44 = 0; }
enum namespace { ZERO45 = 0; }
enum new { ZERO46 = 0; }
enum or { ZERO47 = 0; }
enum print { ZERO48 = 0; }
enum private { ZERO49 = 0; }
enum protected { ZERO50 = 0; }
enum public { ZERO51 = 0; }
enum require { ZERO52 = 0; }
enum require_once { ZERO53 = 0; }
enum return { ZERO54 = 0; }
enum static { ZERO55 = 0; }
enum switch { ZERO56 = 0; }
enum throw { ZERO57 = 0; }
enum trait { ZERO58 = 0; }
enum try { ZERO59 = 0; }
enum unset { ZERO60 = 0; }
enum use { ZERO61 = 0; }
enum var { ZERO62 = 0; }
enum while { ZERO63 = 0; }
enum xor { ZERO64 = 0; }
enum int { ZERO65 = 0; }
enum float { ZERO66 = 0; }
enum bool { ZERO67 = 0; }
enum string { ZERO68 = 0; }
enum true { ZERO69 = 0; }
enum false { ZERO70 = 0; }
enum null { ZERO71 = 0; }
enum void { ZERO72 = 0; }
enum iterable { ZERO73 = 0; }
148 changes: 73 additions & 75 deletions php/tests/proto/test_reserved_enum_upper.proto
Original file line number Diff line number Diff line change
Expand Up @@ -2,78 +2,76 @@ syntax = "proto3";

package upper_enum;

enum NotAllowed {
ABSTRACT = 0;
AND = 1;
ARRAY = 2;
AS = 3;
BREAK = 4;
CALLABLE = 5;
CASE = 6;
CATCH = 7;
CLASS = 8;
CLONE = 9;
CONST = 10;
CONTINUE = 11;
DECLARE = 12;
DEFAULT = 13;
DIE = 14;
DO = 15;
ECHO = 16;
ELSE = 17;
ELSEIF = 18;
EMPTY = 19;
ENDDECLARE = 20;
ENDFOR = 21;
ENDFOREACH = 22;
ENDIF = 23;
ENDSWITCH = 24;
ENDWHILE = 25;
EVAL = 26;
EXIT = 27;
EXTENDS = 28;
FINAL = 29;
FOR = 30;
FOREACH = 31;
FUNCTION = 32;
GLOBAL = 33;
GOTO = 34;
IF = 35;
IMPLEMENTS = 36;
INCLUDE = 37;
INCLUDE_ONCE = 38;
INSTANCEOF = 39;
INSTEADOF = 40;
INTERFACE = 41;
ISSET = 42;
LIST = 43;
NAMESPACE = 44;
NEW = 45;
OR = 46;
PRINT = 47;
PRIVATE = 48;
PROTECTED = 49;
PUBLIC = 50;
REQUIRE = 51;
REQUIRE_ONCE = 52;
RETURN = 53;
STATIC = 54;
SWITCH = 55;
THROW = 56;
TRAIT = 57;
TRY = 58;
UNSET = 59;
USE = 60;
VAR = 61;
WHILE = 62;
XOR = 63;
INT = 64;
FLOAT = 65;
BOOL = 66;
STRING = 67;
TRUE = 68;
FALSE = 69;
NULL = 70;
VOID = 71;
ITERABLE = 72;
}
enum ABSTRACT { ZERO1 = 0; }
enum AND { ZERO2 = 0; }
enum ARRAY { ZERO3 = 0; }
enum AS { ZERO4 = 0; }
enum BREAK { ZERO5 = 0; }
enum CALLABLE { ZERO6 = 0; }
enum CASE { ZERO7 = 0; }
enum CATCH { ZERO8 = 0; }
enum CLASS { ZERO9 = 0; }
enum CLONE { ZERO10 = 0; }
enum CONST { ZERO11 = 0; }
enum CONTINUE { ZERO12 = 0; }
enum DECLARE { ZERO13 = 0; }
enum DEFAULT { ZERO14 = 0; }
enum DIE { ZERO15 = 0; }
enum DO { ZERO16 = 0; }
enum ECHO { ZERO17 = 0; }
enum ELSE { ZERO18 = 0; }
enum ELSEIF { ZERO19 = 0; }
enum EMPTY { ZERO20 = 0; }
enum ENDDECLARE { ZERO21 = 0; }
enum ENDFOR { ZERO22 = 0; }
enum ENDFOREACH { ZERO23 = 0; }
enum ENDIF { ZERO24 = 0; }
enum ENDSWITCH { ZERO25 = 0; }
enum ENDWHILE { ZERO26 = 0; }
enum EVAL { ZERO27 = 0; }
enum EXIT { ZERO28 = 0; }
enum EXTENDS { ZERO29 = 0; }
enum FINAL { ZERO30 = 0; }
enum FOR { ZERO31 = 0; }
enum FOREACH { ZERO32 = 0; }
enum FUNCTION { ZERO33 = 0; }
enum GLOBAL { ZERO34 = 0; }
enum GOTO { ZERO35 = 0; }
enum IF { ZERO36 = 0; }
enum IMPLEMENTS { ZERO37 = 0; }
enum INCLUDE { ZERO38 = 0; }
enum INCLUDE_ONCE { ZERO39 = 0; }
enum INSTANCEOF { ZERO40 = 0; }
enum INSTEADOF { ZERO41 = 0; }
enum INTERFACE { ZERO42 = 0; }
enum ISSET { ZERO43 = 0; }
enum LIST { ZERO44 = 0; }
enum NAMESPACE { ZERO45 = 0; }
enum NEW { ZERO46 = 0; }
enum OR { ZERO47 = 0; }
enum PRINT { ZERO48 = 0; }
enum PRIVATE { ZERO49 = 0; }
enum PROTECTED { ZERO50 = 0; }
enum PUBLIC { ZERO51 = 0; }
enum REQUIRE { ZERO52 = 0; }
enum REQUIRE_ONCE { ZERO53 = 0; }
enum RETURN { ZERO54 = 0; }
enum STATIC { ZERO55 = 0; }
enum SWITCH { ZERO56 = 0; }
enum THROW { ZERO57 = 0; }
enum TRAIT { ZERO58 = 0; }
enum TRY { ZERO59 = 0; }
enum UNSET { ZERO60 = 0; }
enum USE { ZERO61 = 0; }
enum VAR { ZERO62 = 0; }
enum WHILE { ZERO63 = 0; }
enum XOR { ZERO64 = 0; }
enum INT { ZERO65 = 0; }
enum FLOAT { ZERO66 = 0; }
enum BOOL { ZERO67 = 0; }
enum STRING { ZERO68 = 0; }
enum TRUE { ZERO69 = 0; }
enum FALSE { ZERO70 = 0; }
enum NULL { ZERO71 = 0; }
enum VOID { ZERO72 = 0; }
enum ITERABLE { ZERO73 = 0; }
79 changes: 79 additions & 0 deletions php/tests/proto/test_reserved_enum_value_lower.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
syntax = "proto3";

package lower_enum_value;

enum NotAllowed {
abstract = 0;
and = 1;
array = 2;
as = 3;
break = 4;
callable = 5;
case = 6;
catch = 7;
class = 8;
clone = 9;
const = 10;
continue = 11;
declare = 12;
default = 13;
die = 14;
do = 15;
echo = 16;
else = 17;
elseif = 18;
empty = 19;
enddeclare = 20;
endfor = 21;
endforeach = 22;
endif = 23;
endswitch = 24;
endwhile = 25;
eval = 26;
exit = 27;
extends = 28;
final = 29;
for = 30;
foreach = 31;
function = 32;
global = 33;
goto = 34;
if = 35;
implements = 36;
include = 37;
include_once = 38;
instanceof = 39;
insteadof = 40;
interface = 41;
isset = 42;
list = 43;
namespace = 44;
new = 45;
or = 46;
print = 47;
private = 48;
protected = 49;
public = 50;
require = 51;
require_once = 52;
return = 53;
static = 54;
switch = 55;
throw = 56;
trait = 57;
try = 58;
unset = 59;
use = 60;
var = 61;
while = 62;
xor = 63;
int = 64;
float = 65;
bool = 66;
string = 67;
true = 68;
false = 69;
null = 70;
void = 71;
iterable = 72;
}
Loading

0 comments on commit f46a01d

Please sign in to comment.