Automatically compile aggregate stack traces for complex exceptions
Summary: Fixes T8156. I think this is a little simpler/cleaner than D12796 + D12851?
Test Plan:
With --trace:
[2015-05-25 08:28:38] EXCEPTION: (PhutilAggregateException) Some linters failed:
- Exception: QUACK QUACK QUACK at [<arcanist>/src/lint/engine/ArcanistLintEngine.php:275]
arcanist(head=master, ref.master=9b7c6786cdc9), phutil(head=master, ref.master=65819efa43f1)
#0 <#2> ArcanistPhutilXHPASTLinter::lintRaggedClasstreeEdges(XHPASTNode) called at [<arcanist>/src/lint/linter/ArcanistPhutilXHPASTLinter.php:269]
#1 <#2> call_user_func(array, XHPASTNode) called at [<arcanist>/src/lint/linter/ArcanistPhutilXHPASTLinter.php:120]
#2 <#2> ArcanistPhutilXHPASTLinter::resolveFuture(string, ExecFuture) called at [<arcanist>/src/lint/linter/ArcanistFutureLinter.php:34]
#3 <#2> ArcanistFutureLinter::didLintPaths(array) called at [<arcanist>/src/lint/engine/ArcanistLintEngine.php:602]
#4 <#2> ArcanistLintEngine::executeDidLintOnPaths(ArcanistPhutilXHPASTLinter, array) called at [<arcanist>/src/lint/engine/ArcanistLintEngine.php:553]
#5 <#2> ArcanistLintEngine::executeLintersOnChunk(array, array) called at [<arcanist>/src/lint/engine/ArcanistLintEngine.php:481]
#6 <#2> ArcanistLintEngine::executeLinters(array) called at [<arcanist>/src/lint/engine/ArcanistLintEngine.php:219]
#7 ArcanistLintEngine::run() called at [<arcanist>/src/workflow/ArcanistLintWorkflow.php:331]
#8 ArcanistLintWorkflow::run() called at [<arcanist>/scripts/arcanist.php:387]Without --trace:
Exception
Some linters failed:
- Exception: QUACK QUACK QUACK
(Run with `--trace` for a full exception trace.)Reviewers: joshuaspence
Reviewed By: joshuaspence
Subscribers: epriestley
Maniphest Tasks: T8156
Differential Revision: https://secure.phabricator.com/D13007