Make inout parameters on magic methods a parser error
commit40706d78f19a9dfe3df230bd04093ffed8e811e1
authorDaniel Neiter <dneiter@fb.com>
Thu, 3 Oct 2019 17:21:35 +0000 (3 10:21 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Thu, 3 Oct 2019 17:24:23 +0000 (3 10:24 -0700)
tree248f18ee37af229ad914a0fad79c91fc2b058f7d
parent0a2379a49ff8ac87e3e699a4839f842458d40df2
Make inout parameters on magic methods a parser error

Summary:
We have explicit parser checks to disallow magic methods with byref parameters. When I tried updating these tests, I've discovered, we don't have similar checks against inout parameters on magic methods. Moreover, magic `__set(inout $name, value)` *seems* to work (i.e. the test runs successfuly and calls method, despite calling convention mismatch; I'm not sure if it violates any internal assumptions).

Add equivalent parser check to block inout parameters from magic methods.

Reviewed By: dabek

Differential Revision: D17728519

fbshipit-source-id: f979ecbb7c69647f425b36788e72e7446cfda17e
18 files changed:
hphp/hack/src/parser/rust_parser_errors.rs
hphp/hack/src/parser/syntax_error.rs
hphp/hack/test/typecheck/inout/bad_inout_decl_special_call.php.exp
hphp/hack/test/typecheck/inout/bad_inout_decl_special_get.php.exp
hphp/test/zend/good/Zend/tests/magic_by_ref_001.php
hphp/test/zend/good/Zend/tests/magic_by_ref_001.php.expectf
hphp/test/zend/good/Zend/tests/magic_by_ref_002.php
hphp/test/zend/good/Zend/tests/magic_by_ref_002.php.expectf
hphp/test/zend/good/Zend/tests/magic_by_ref_003.php
hphp/test/zend/good/Zend/tests/magic_by_ref_003.php.expectf
hphp/test/zend/good/Zend/tests/magic_by_ref_004.php
hphp/test/zend/good/Zend/tests/magic_by_ref_004.php.expectf
hphp/test/zend/good/Zend/tests/magic_by_ref_005.php
hphp/test/zend/good/Zend/tests/magic_by_ref_005.php.expectf
hphp/test/zend/good/Zend/tests/magic_by_ref_006.php
hphp/test/zend/good/Zend/tests/magic_by_ref_006.php.expectf
hphp/test/zend/good/Zend/tests/magic_by_ref_007.php
hphp/test/zend/good/Zend/tests/magic_by_ref_007.php.expectf