diff --git a/loader/expression.fifty.ts b/loader/expression.fifty.ts index 971bbf7d7..1c71aa75b 100644 --- a/loader/expression.fifty.ts +++ b/loader/expression.fifty.ts @@ -530,7 +530,7 @@ namespace slime { /** * Creates a *Loader*. A Loader loads resources from a specified source. */ - Loader: loader.old.Constructor + Loader: loader.old.Constructor & slime.runtime.internal.old_loaders.Exports["api"] } } diff --git a/loader/expression.js b/loader/expression.js index 428cef26f..079c2ec76 100644 --- a/loader/expression.js +++ b/loader/expression.js @@ -309,8 +309,7 @@ }, Resource: ResourceExport, old: { - // TODO the static type definition for this lacks the properties added by `loaders` -- are they necessary? - Loader: Object.assign(loaders.constructor, loaders, { constructor: null }), + Loader: Object.assign(loaders.constructor, loaders.api, { constructor: null }), loader: loaders.api }, compiler: { diff --git a/loader/jrunscript/expression.js b/loader/jrunscript/expression.js index 2e55a0d20..9f31d1394 100644 --- a/loader/jrunscript/expression.js +++ b/loader/jrunscript/expression.js @@ -899,37 +899,38 @@ * @param { slime.runtime.Exports["old"]["Loader"] } was * @returns */ - function(was/*,api*/) { + function(was) { /** - * @this { slime.old.Loader } + * @type { slime.runtime.exports.Old["Loader"] } */ - var rv = function(p) { - if (!p) throw new TypeError("source argument required for Loader."); - - // Satisfy TypeScript - this.source = void(0); - this.run = void(0); - this.value = void(0); - this.file = void(0); - this.module = void(0); - this.script = void(0); - this.factory = void(0); - this.Child = void(0); - this.get = void(0); - this.toSynchronous = void(0); - - var source = adaptLoaderArgument(p); - - was.call(this,source); - }; - // // Satisfy TypeScript by adding properties that will be added by Object.assign below - // rv.source = void(0); - // rv.series = void(0); - // rv.tools = void(0); - // Object.assign(rv, api); + var rv = Object.assign( + /** + * @this { slime.old.Loader } + */ + function(p) { + if (!p) throw new TypeError("source argument required for Loader."); + + // Satisfy TypeScript + this.source = void(0); + this.run = void(0); + this.value = void(0); + this.file = void(0); + this.module = void(0); + this.script = void(0); + this.factory = void(0); + this.Child = void(0); + this.get = void(0); + this.toSynchronous = void(0); + + var source = adaptLoaderArgument(p); + + was.call(this,source); + }, + was + ); return rv; } - )(slime.old.Loader/*, slime.old.Loader["api"]*/); + )(slime.old.Loader); var $exports_classpath = ( /**