I was encouraged to file this at https://www.mediawiki.org/w/index.php?title=Topic:Uncadir1bpkjnnbz&topic_showPostId=v6e6trz47cdcxs54&fromnotif=1#flow-post-v6e6trz47cdcxs54
Unlike templates, duplicate named arguments to parser functions do not mask each other. This is particular important to some extensions like (third party) DPL, but also can happen with some core parser funcs.
Steps to reproduce (A bit of a contrived example):
* Add `{{gender:Bawolff|user = male|user = female|user = neutral|random third arg=5}}` to a page. Note how the result is //user = male// [Since my user pref is set to male on enwiki currently]
* Edit page with VE
* Edit the template with VE, change `random third arg` to a new value
* Save page
Expected behaviour:
* VE would change the third argument, but leave the rest alone, since this is a parser function, so these aren't really named arguments but numbered arguments
* The template dialog box would show all of these args
Actual behaviour:
* Visual editor changes the call to //user = neutral// deleting the male and female cases - https://en.wikipedia.org/w/index.php?title=Draft%3ASandbox&type=revision&diff=913430352&oldid=913430299
* The template dialog only shows the last value as the value of the user parameter.
At the very least, parser funcs using hashes should be recognized as not normal templates.