Add nested enum descriptor in php rumtime. (#3009)

pull/3011/head v3.3.0rc1
Paul Yang 8 years ago committed by GitHub
parent e64b618b21
commit fba2acd72e
  1. 3
      php/src/Google/Protobuf/Internal/DescriptorPool.php
  2. 6
      php/src/Google/Protobuf/descriptor.php
  3. 3
      php/tests/generated_class_test.php

@ -95,6 +95,9 @@ class DescriptorPool
foreach ($descriptor->getNestedType() as $nested_type) { foreach ($descriptor->getNestedType() as $nested_type) {
$this->addDescriptor($nested_type); $this->addDescriptor($nested_type);
} }
foreach ($descriptor->getEnumType() as $enum_type) {
$this->addEnumDescriptor($enum_type);
}
} }
public function addEnumDescriptor($descriptor) public function addEnumDescriptor($descriptor)

@ -210,6 +210,12 @@ class Descriptor
$nested_proto, $file_proto, $message_name_without_package)); $nested_proto, $file_proto, $message_name_without_package));
} }
// Handle nested enum.
foreach ($proto->getEnumType() as $enum_proto) {
$desc->addEnumType(EnumDescriptor::buildFromProto(
$enum_proto, $file_proto, $message_name_without_package));
}
// Handle oneof fields. // Handle oneof fields.
foreach ($proto->getOneofDecl() as $oneof_proto) { foreach ($proto->getOneofDecl() as $oneof_proto) {
$desc->addOneofDecl( $desc->addOneofDecl(

@ -839,7 +839,8 @@ class GeneratedClassTest extends TestBase
public function testMessageWithoutNamespace() public function testMessageWithoutNamespace()
{ {
$m = new TestMessage(); $m = new TestMessage();
$m->setOptionalNoNamespaceMessage(new NoNameSpaceMessage()); $sub = new NoNameSpaceMessage();
$m->setOptionalNoNamespaceMessage($sub);
$m->getRepeatedNoNamespaceMessage()[] = new NoNameSpaceMessage(); $m->getRepeatedNoNamespaceMessage()[] = new NoNameSpaceMessage();
$n = new NoNamespaceMessage(); $n = new NoNamespaceMessage();

Loading…
Cancel
Save