HomePhabricator

Return correct frame from mw.getCurrentFrame in certain edge cases

Authored by Anomie on Oct 1 2019, 8:30 PM.

Description

Return correct frame from mw.getCurrentFrame in certain edge cases

When an #invoke is passed as an argument to another #invoke,
mw.getCurrentFrame() at module scope will return the wrong frame.

On the PHP side, we need to always reset the frame when processing
an #invoke, not just when there's no frame already. I don't remember why
I82dde43e wasn't done that way, but changing it doesn't make any tests
fail and Scribunto tends to have good tests.

On the Lua side, we need to do the same. The logic wih mw.getCurrentFrame()
using a global that gets stored, modified, and reset in several places
was getting confusing, so this patch reworks the logic to inject a
globalless mw.getCurrentFrame() into each #invoke's cloned environment
instead.

Bug: T234368
Change-Id: I8cb5bc4dc14c9b448c9f267e0539daa75e72af4c

Details

Committed
jenkins-botOct 14 2019, 2:39 AM
Parents
rELUA4a93593abfbf: build: Upgrade mediawiki-codesniffer to v28.0.0
Branches
Unknown
Tags
Unknown
ChangeId
I8cb5bc4dc14c9b448c9f267e0539daa75e72af4c