And it's literally a one-character fix.
I added a semi-colon to the end of the
mkws.makeWidget = function() { ... }
assignment. Before commit
f9a645b74a9d07ca99973840ee0ceeb07b3c4a83
there was no need for a semi-colon because the widget constructor was
a global function defined using the
function makeWidget() { ... }
syntax. But now that it's an assignment statement rather than a
function definition, the semi-colon is needed to end the statement.
When mkws-widget.js was included on its own (as it is with all my
testing scripts), that's not a problem. The statement is terminated by
the end of the file (and JavaScript, trying to be "helpful", doesn't
complain about this, but just accepts it silently). But when something
else -- in this case mkws-widget-main.js -- is appended to it, the
interpretation changes, and the concatenations gets parsed as
heaven-knows-what bizarre construct.
Anyway, all is now well: mkws.js, mkws-complete.js and the individual
source files all work.
I guess all this means we ought to be using some kind of lint-like
program on the MKWS source (though IIRC Jason doesn't like JSLint
itself).