From 4b303197477bca58325c1375850eff9f29e450c8 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 7 Mar 2011 11:21:29 -0800 Subject: [PATCH] Make XHPAST parse-depth warning an actual warning. Summary: XHPAST encounters a parse-depth problem on some files because PHP 5.2 has an un-overridable parse depth limit for JSON. The text of this error says it is a "warning" but we currently raise an error. Make it a warning instead. The JSON depth is 20 until PHP 5.2.3, where it becomes 128. After PHP 5.3 it defaults to 512 and is user-configurable, which will allow us to resolve this issue in nearly all cases. Since I made if/else express as a list in the AST, this only actually arises in long binary chains, most commonly string concatenation, like: $out = 'a'.'a'.'a'.'a'... ...where each string is a variable or HTML tag and the program is constructing a complicated document. At some point I'll add some PHP 5.3 massaging to the XHPAST decoder itself to raise this limit to something more huge. Test Plan: Ran "arc lint --lintall" on a file with a very deep binary expression tree ("1 + 1 + 1 ...") and received a warning instead of an error. Reviewed By: aran Reviewers: pad, aran CC: epriestley, aran Differential Revision: 54 --- src/lint/linter/xhpast/ArcanistXHPASTLinter.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lint/linter/xhpast/ArcanistXHPASTLinter.php b/src/lint/linter/xhpast/ArcanistXHPASTLinter.php index d642c3cf..fd2f1c8f 100644 --- a/src/lint/linter/xhpast/ArcanistXHPASTLinter.php +++ b/src/lint/linter/xhpast/ArcanistXHPASTLinter.php @@ -79,6 +79,8 @@ class ArcanistXHPASTLinter extends ArcanistLinter { public function getLintSeverityMap() { return array( self::LINT_TODO_COMMENT => ArcanistLintSeverity::SEVERITY_ADVICE, + self::LINT_UNABLE_TO_PARSE + => ArcanistLintSeverity::SEVERITY_WARNING, self::LINT_FORMATTING_CONVENTIONS => ArcanistLintSeverity::SEVERITY_WARNING, self::LINT_NAMING_CONVENTIONS