On Fri, Feb 19, 2021 at 8:04 AM Christian Schneider <cschn...@cschneid.com> wrote:
> Hi there, > we encountered small annoyances over time which could be easy to fix but > would break tests. > Why does this matter? While it is easy to fix the PHP test suite they > could potentially affect other projects' code, most probably tests. > > Here are the two things on our current list: > > Stack traces: > ========== > Stack traces for certain constructs do not include the exact location in > the stack frame: > $a[(object)null] = 1; > $e->getTrace() => [] # <-- no stack trace > while for > file(); / file(null); > $e->getTrace() => [ ["file"]=> .. ]. > > What version are you testing with. I know Niki killed some unnecessary frames in 8.0's stacktrace output. (A whole repro script is more useful than a snippet wherein $e comes into being seemingly from nowhere). > Indentation in var_export: > ==================== > The indentation for > var_export((object)[(object)[]]); > is off by one for nested structures: > (object) array( > '0' => # <-- extra space before index > (object) array( > and the fix would be to change > buffer_append_spaces(buf, level + 2) > to > buffer_append_spaces(buf, level + 1) > in ext/standard/var.c > > This breaks about 60 PHP tests relying on the var_export format. > > I think shifting the indentation in var_export() could probably be done without a major BC break. Trimming trailing whitespace would also resolve one of my long-time annoyances with the function. Feel free to propose that as a PR and/or an RFC. -Sara