From 857f08ae47f488978cf8c8cc717245daa40bc7c4 Mon Sep 17 00:00:00 2001 From: epriestley Date: Sat, 28 May 2011 08:15:00 -0700 Subject: [PATCH] Make sure 'id' and 'idx' are not marked as builtin functions? Summary: This is sort of a guess. In D357, arc has gone crazy and removed a bunch of 'utils' dependencies for gc3. I think this is because his HPHP/i has them marked as builtins. However, I don't have an HPHP/i build (and probably don't have the fortitude to build it outside of a Facebook environment, I spent about two hours on it at one point and got maybe 25% of the way through the build process before running into things I didn't know how to resolve) so I'm not sure this is the issue. No one else's diffs have exhibited this problem eitehr, so I'm not confident this is actually the problem or solution. gc3, can you apply this locally to a copy of arcanist and then run 'arc lint' (or 'arc lint --apply-patches') on your commit and see if it restores all the libphutil/utils requirements? Test Plan: unable, see summary Added 'array_keys' to this blacklist and verified the technical behavior of the patch is correct by var_dump()'ing builtins. Reviewed By: gc3 Reviewers: gc3, tuomaspelkonen, jungejason, aran CC: aran, gc3, epriestley Differential Revision: 361 --- scripts/phutil_analyzer.php | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/scripts/phutil_analyzer.php b/scripts/phutil_analyzer.php index 80f5201f..2fdc5134 100755 --- a/scripts/phutil_analyzer.php +++ b/scripts/phutil_analyzer.php @@ -26,15 +26,22 @@ $builtin = array( 'class' => array_fill_keys($builtin_classes, true) + array( 'PhutilBootloader' => true, ), - 'function' => array_fill_keys($builtin_functions, true) + array( - 'empty' => true, - 'isset' => true, - 'echo' => true, - 'print' => true, - 'exit' => true, - 'die' => true, - 'phutil_load_library' => true, - ), + 'function' => array_filter( + array( + 'empty' => true, + 'isset' => true, + 'echo' => true, + 'print' => true, + 'exit' => true, + 'die' => true, + 'phutil_load_library' => true, + + // HPHP/i defines these functions as 'internal', but they are NOT + // builtins and do not exist in vanilla PHP. Make sure we don't mark them + // as builtin since we need to add dependencies for them. + 'idx' => false, + 'id' => false, + ) + array_fill_keys($builtin_functions, true)), 'interface' => array_fill_keys($builtin_interfaces, true), );