Isset in Zephir

Hi,

I having a small problem of how zephir extends PHPs isset.

I was looking at the code for issettest.zep (in the zephir extension), more specifically at these 3 functions:

    public function testIssetProperty1(var a)
    {
        return isset a->b;
    }

    public function testIssetProperty2(var a, var b)
    {
        return isset a->{b};
    }

    public function testIssetProperty3(var a)
    {
        return isset a->{"b"};
    }

and translates them to PHP as:

        function zephir_isset_property($object, $property) {
          if (isset($object) && isset($property)) {
            if (is_object($object) && is_string($property)) {
              return property_exists($object, $property);
            }
          }
          return false;
        }

    public function testIssetProperty1($a)
    {
        return zephir_isset_property($a, 'b');
    }

    public function testIssetProperty2(var a, var b)
    {
        return zephir_isset_property($a, $b);
    }

    public function testIssetProperty3(var a)
    {
        return zephir_isset_property($a, 'b');
    }

Is this correct?

If YES, I noticed the following problem in the C generated code. The function testIssetProperty3 is converted to

    PHP_METHOD(Test_IssetTest, testIssetProperty3) {
    zval *a;

    zephir_fetch_params(0, 1, 0, &a);

    RETURN_BOOL((0 == 0));
    }

From my understanding of the code, this mean that it always returns 'TRUE' independently of the value between the {}. Is this correct?

TIA.

edited Feb '16

The a var is alvays object?