+
+ public function testUninitializedSyntheticReference()
+ {
+ $container = new ContainerBuilder();
+ $container->register('foo', 'stdClass')->setPublic(true)->setSynthetic(true);
+ $container->register('bar', 'stdClass')->setPublic(true)->setShared(false)
+ ->setProperty('foo', new Reference('foo', ContainerInterface::IGNORE_ON_UNINITIALIZED_REFERENCE));
+
+ $container->compile();
+
+ $this->assertEquals((object) array('foo' => null), $container->get('bar'));
+
+ $container->set('foo', (object) array(123));
+ $this->assertEquals((object) array('foo' => (object) array(123)), $container->get('bar'));
+ }
+
+ public function testDecoratedSelfReferenceInvolvingPrivateServices()
+ {
+ $container = new ContainerBuilder();
+ $container->register('foo', 'stdClass')
+ ->setPublic(false)
+ ->setProperty('bar', new Reference('foo'));
+ $container->register('baz', 'stdClass')
+ ->setPublic(false)
+ ->setProperty('inner', new Reference('baz.inner'))
+ ->setDecoratedService('foo');
+
+ $container->compile();
+
+ $this->assertSame(array('service_container'), array_keys($container->getDefinitions()));
+ }