The dash shell is attempting to implement "local", and it's broken.
If "local" isn't part of POSIX, and dash is supposed to be POSIX, then
removing "local" completely from dash would be fine. Implementing "local"
incorrectly is not fine. Non-POSIX words should generate "command not
found", not a shell parsing error.
An undefined feature would behave like this:
dash$ nosuch y=$x
dash: nosuch: not found
not like this:
dash$ local y=$x
local: 2: bad variable name
The dash shell is attempting to implement "local", and it's broken.
If "local" isn't part of POSIX, and dash is supposed to be POSIX, then
removing "local" completely from dash would be fine. Implementing "local"
incorrectly is not fine. Non-POSIX words should generate "command not
found", not a shell parsing error.