First re-bootstrap of schema
This commit is contained in:
parent
297e1630a8
commit
9ecbd0bdd1
|
@ -192,7 +192,7 @@ export function converterForSimple(
|
||||||
const v = ctx.gentempname();
|
const v = ctx.gentempname();
|
||||||
return [
|
return [
|
||||||
seq(`${dest} = new _.EncodableSet`,
|
seq(`${dest} = new _.EncodableSet`,
|
||||||
anglebrackets(renderType(ctx.mod, vt), '_embedded'),
|
anglebrackets('_embedded', renderType(ctx.mod, vt)),
|
||||||
parens(encoderForSimplePattern(ctx, p.pattern) ?? `v => v`)),
|
parens(encoderForSimplePattern(ctx, p.pattern) ?? `v => v`)),
|
||||||
seq(`for (const ${v} of ${src}) `, ctx.block(() => [
|
seq(`for (const ${v} of ${src}) `, ctx.block(() => [
|
||||||
... converterFor(ctx, M.anonymousSimplePattern(p.pattern), v, vv =>
|
... converterFor(ctx, M.anonymousSimplePattern(p.pattern), v, vv =>
|
||||||
|
@ -203,17 +203,19 @@ export function converterForSimple(
|
||||||
case 'dictof':
|
case 'dictof':
|
||||||
return [`${dest} = void 0`,
|
return [`${dest} = void 0`,
|
||||||
seq(`if (_.Dictionary.isDictionary<_embedded>(${src})) `, ctx.block(() => {
|
seq(`if (_.Dictionary.isDictionary<_embedded>(${src})) `, ctx.block(() => {
|
||||||
|
const srcMap = ctx.gentempname();
|
||||||
const resolver = ctx.mod.resolver();
|
const resolver = ctx.mod.resolver();
|
||||||
const kt = simpleType(resolver, p.key);
|
const kt = simpleType(resolver, p.key);
|
||||||
const vt = simpleType(resolver, p.value);
|
const vt = simpleType(resolver, p.value);
|
||||||
const k = ctx.gentempname();
|
const k = ctx.gentempname();
|
||||||
const v = ctx.gentempname();
|
const v = ctx.gentempname();
|
||||||
return [
|
return [
|
||||||
|
seq(`const ${srcMap} = new _.DictionaryMap(${src})`),
|
||||||
seq(`${dest} = new _.EncodableDictionary`,
|
seq(`${dest} = new _.EncodableDictionary`,
|
||||||
anglebrackets(renderType(ctx.mod, kt), renderType(ctx.mod, vt), '_embedded'),
|
anglebrackets('_embedded', renderType(ctx.mod, kt), renderType(ctx.mod, vt)),
|
||||||
parens(encoderForSimplePattern(ctx, p.key) ?? `k => k`,
|
parens(encoderForSimplePattern(ctx, p.key) ?? `k => k`,
|
||||||
encoderForSimplePattern(ctx, p.value) ?? `v => v`)),
|
encoderForSimplePattern(ctx, p.value) ?? `v => v`)),
|
||||||
seq(`for (const [${k}, ${v}] of ${src}) `, ctx.block(() => [
|
seq(`for (const [${k}, ${v}] of ${srcMap}) `, ctx.block(() => [
|
||||||
... converterFor(ctx, M.anonymousSimplePattern(p.key), k, kk =>
|
... converterFor(ctx, M.anonymousSimplePattern(p.key), k, kk =>
|
||||||
converterFor(ctx, M.anonymousSimplePattern(p.value), v, vv =>
|
converterFor(ctx, M.anonymousSimplePattern(p.value), v, vv =>
|
||||||
[`${dest}.set(${kk}, ${vv})`, `continue`])),
|
[`${dest}.set(${kk}, ${vv})`, `continue`])),
|
||||||
|
@ -251,12 +253,13 @@ function converterForCompound(
|
||||||
case 'tuplePrefix':
|
case 'tuplePrefix':
|
||||||
return converterForTuple(ctx, p.fixed, src, knownArray, p.variable, ks);
|
return converterForTuple(ctx, p.fixed, src, knownArray, p.variable, ks);
|
||||||
case 'dict': {
|
case 'dict': {
|
||||||
|
const srcMap = ctx.gentempname();
|
||||||
const entries = Array.from(p.entries);
|
const entries = Array.from(p.entries);
|
||||||
function loop(i: number): Item[] {
|
function loop(i: number): Item[] {
|
||||||
if (i < entries.length) {
|
if (i < entries.length) {
|
||||||
const [k, n] = entries[i];
|
const [k, n] = entries[i];
|
||||||
const tmpSrc = ctx.gentemp();
|
const tmpSrc = ctx.gentemp();
|
||||||
return [seq(`if ((${tmpSrc} = ${src}.get(${ctx.mod.literal(k)})) !== void 0) `,
|
return [seq(`if ((${tmpSrc} = ${srcMap}.get(${ctx.mod.literal(k)})) !== void 0) `,
|
||||||
ctx.block(() =>
|
ctx.block(() =>
|
||||||
converterFor(
|
converterFor(
|
||||||
ctx,
|
ctx,
|
||||||
|
@ -267,7 +270,9 @@ function converterForCompound(
|
||||||
return ks();
|
return ks();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return [seq(`if (_.Dictionary.isDictionary<_embedded>(${src})) `, ctx.block(() => loop(0)))];
|
return [seq(`if (_.Dictionary.isDictionary<_embedded>(${src})) `, ctx.block(() => [
|
||||||
|
seq(`const ${srcMap} = new _.DictionaryMap(${src})`),
|
||||||
|
... loop(0)]))];
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
((_p: never) => {})(p);
|
((_p: never) => {})(p);
|
||||||
|
|
|
@ -57,7 +57,7 @@ function unconverterFor(ctx: FunctionContext, p: M.Pattern, src: string): Item {
|
||||||
unconverterFor(ctx, M.Pattern.SimplePattern(p.pattern), 'v'),
|
unconverterFor(ctx, M.Pattern.SimplePattern(p.pattern), 'v'),
|
||||||
`)`)));
|
`)`)));
|
||||||
case 'dictof':
|
case 'dictof':
|
||||||
return seq(`new _.Dictionary<_embedded>`, parens(seq(
|
return seq(`_.Dictionary.from<_embedded>`, parens(seq(
|
||||||
`_.Array.from(${src}.entries()).map(([k, v]) => `,
|
`_.Array.from(${src}.entries()).map(([k, v]) => `,
|
||||||
brackets(
|
brackets(
|
||||||
unconverterFor(ctx, M.Pattern.SimplePattern(p.key), 'k'),
|
unconverterFor(ctx, M.Pattern.SimplePattern(p.key), 'k'),
|
||||||
|
@ -95,7 +95,7 @@ function unconverterFor(ctx: FunctionContext, p: M.Pattern, src: string): Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 'dict':
|
case 'dict':
|
||||||
return seq(`new _.Dictionary<_embedded>`, parens(
|
return seq(`_.Dictionary.from<_embedded>`, parens(
|
||||||
brackets(... Array.from(p.entries.entries()).map(([k, n]) =>
|
brackets(... Array.from(p.entries.entries()).map(([k, n]) =>
|
||||||
brackets(
|
brackets(
|
||||||
ctx.mod.literal(k),
|
ctx.mod.literal(k),
|
||||||
|
|
|
@ -47,12 +47,12 @@ export function renderType(ctxt: ModuleContext, t: Type): Item {
|
||||||
return seq(t.typeName, ctxt.genericArgsFor(t));
|
return seq(t.typeName, ctxt.genericArgsFor(t));
|
||||||
}
|
}
|
||||||
case 'set': return seq('_.EncodableSet', anglebrackets(
|
case 'set': return seq('_.EncodableSet', anglebrackets(
|
||||||
renderType(ctxt, t.type),
|
'_embedded',
|
||||||
'_embedded'));
|
renderType(ctxt, t.type)));
|
||||||
case 'dictionary': return seq('_.EncodableDictionary', anglebrackets(
|
case 'dictionary': return seq('_.EncodableDictionary', anglebrackets(
|
||||||
|
'_embedded',
|
||||||
renderType(ctxt, t.key),
|
renderType(ctxt, t.key),
|
||||||
renderType(ctxt, t.value),
|
renderType(ctxt, t.value)));
|
||||||
'_embedded'));
|
|
||||||
case 'array': return seq('Array', anglebrackets(renderType(ctxt, t.type)));
|
case 'array': return seq('Array', anglebrackets(renderType(ctxt, t.type)));
|
||||||
case 'record': return braces(... simpleTypeFields(ctxt, t));
|
case 'record': return braces(... simpleTypeFields(ctxt, t));
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -23,7 +23,7 @@ export function sourceCodeFor(v: Value<M.InputEmbedded>): Item {
|
||||||
return seq('new _.Set<_.Value<_embedded>>', parens(brackets(... Array.from(s).map(k))));
|
return seq('new _.Set<_.Value<_embedded>>', parens(brackets(... Array.from(s).map(k))));
|
||||||
},
|
},
|
||||||
dictionary(d: DictionaryMap<M.InputEmbedded>, k: Fold<M.InputEmbedded, Item>): Item {
|
dictionary(d: DictionaryMap<M.InputEmbedded>, k: Fold<M.InputEmbedded, Item>): Item {
|
||||||
return seq('new _.Dictionary<_embedded>', parens(brackets(... Array.from(d).map(([kk,vv]) =>
|
return seq('_.Dictionary.from<_embedded>', parens(brackets(... Array.from(d).map(([kk,vv]) =>
|
||||||
brackets(k(kk), k(vv))))));
|
brackets(k(kk), k(vv))))));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -920,15 +920,15 @@ export function toModules<_embedded extends _.Embeddable = _.GenericEmbedded>(v:
|
||||||
let result: undefined | Modules<_embedded>;
|
let result: undefined | Modules<_embedded>;
|
||||||
_tmp0 = void 0;
|
_tmp0 = void 0;
|
||||||
if (_.Dictionary.isDictionary<_embedded>(v)) {
|
if (_.Dictionary.isDictionary<_embedded>(v)) {
|
||||||
const vMap = _.Dictionary.asMap(v);
|
const _tmp1 = new _.DictionaryMap(v);
|
||||||
_tmp0 = new _.EncodableDictionary<_embedded, ModulePath, Schema<_embedded>>(fromModulePath, fromSchema<_embedded>);
|
_tmp0 = new _.EncodableDictionary<_embedded, ModulePath, Schema<_embedded>>(fromModulePath, fromSchema<_embedded>);
|
||||||
for (const [_tmp1, _tmp2] of vMap) {
|
for (const [_tmp2, _tmp3] of _tmp1) {
|
||||||
let _tmp3: (ModulePath) | undefined;
|
let _tmp4: (ModulePath) | undefined;
|
||||||
_tmp3 = toModulePath(_tmp1);
|
_tmp4 = toModulePath(_tmp2);
|
||||||
if (_tmp3 !== void 0) {
|
if (_tmp4 !== void 0) {
|
||||||
let _tmp4: (Schema<_embedded>) | undefined;
|
let _tmp5: (Schema<_embedded>) | undefined;
|
||||||
_tmp4 = toSchema(_tmp2);
|
_tmp5 = toSchema(_tmp3);
|
||||||
if (_tmp4 !== void 0) {_tmp0.set(_tmp3, _tmp4); continue;};
|
if (_tmp5 !== void 0) {_tmp0.set(_tmp4, _tmp5); continue;};
|
||||||
};
|
};
|
||||||
_tmp0 = void 0;
|
_tmp0 = void 0;
|
||||||
break;
|
break;
|
||||||
|
@ -959,26 +959,26 @@ export function toSchema<_embedded extends _.Embeddable = _.GenericEmbedded>(v:
|
||||||
_tmp0 = _.is(v.label, $schema) ? {} : void 0;
|
_tmp0 = _.is(v.label, $schema) ? {} : void 0;
|
||||||
if (_tmp0 !== void 0) {
|
if (_tmp0 !== void 0) {
|
||||||
if (_.Dictionary.isDictionary<_embedded>(v[0])) {
|
if (_.Dictionary.isDictionary<_embedded>(v[0])) {
|
||||||
const v0 = _.Dictionary.asMap(v[0]);
|
let _tmp2: (_.Value<_embedded>) | undefined;
|
||||||
let _tmp1: (_.Value<_embedded>) | undefined;
|
const _tmp1 = new _.DictionaryMap(v[0]);
|
||||||
if ((_tmp1 = v0.get($version)) !== void 0) {
|
if ((_tmp2 = _tmp1.get($version)) !== void 0) {
|
||||||
let _tmp2: (Version) | undefined;
|
let _tmp3: (Version) | undefined;
|
||||||
_tmp2 = toVersion(_tmp1);
|
_tmp3 = toVersion(_tmp2);
|
||||||
if (_tmp2 !== void 0) {
|
if (_tmp3 !== void 0) {
|
||||||
let _tmp3: (_.Value<_embedded>) | undefined;
|
let _tmp4: (_.Value<_embedded>) | undefined;
|
||||||
if ((_tmp3 = v0.get($embeddedType)) !== void 0) {
|
if ((_tmp4 = _tmp1.get($embeddedType)) !== void 0) {
|
||||||
let _tmp4: (EmbeddedTypeName) | undefined;
|
let _tmp5: (EmbeddedTypeName) | undefined;
|
||||||
_tmp4 = toEmbeddedTypeName(_tmp3);
|
_tmp5 = toEmbeddedTypeName(_tmp4);
|
||||||
if (_tmp4 !== void 0) {
|
if (_tmp5 !== void 0) {
|
||||||
let _tmp5: (_.Value<_embedded>) | undefined;
|
let _tmp6: (_.Value<_embedded>) | undefined;
|
||||||
if ((_tmp5 = v0.get($definitions)) !== void 0) {
|
if ((_tmp6 = _tmp1.get($definitions)) !== void 0) {
|
||||||
let _tmp6: (Definitions<_embedded>) | undefined;
|
let _tmp7: (Definitions<_embedded>) | undefined;
|
||||||
_tmp6 = toDefinitions(_tmp5);
|
_tmp7 = toDefinitions(_tmp6);
|
||||||
if (_tmp6 !== void 0) {
|
if (_tmp7 !== void 0) {
|
||||||
result = {
|
result = {
|
||||||
"version": _tmp2,
|
"version": _tmp3,
|
||||||
"embeddedType": _tmp4,
|
"embeddedType": _tmp5,
|
||||||
"definitions": _tmp6,
|
"definitions": _tmp7,
|
||||||
__as_preserve__() {return fromSchema(this);},
|
__as_preserve__() {return fromSchema(this);},
|
||||||
__preserve_on__(e) { e.push(fromSchema(this)); },
|
__preserve_on__(e) { e.push(fromSchema(this)); },
|
||||||
__preserve_text_on__(w) { w.push(fromSchema(this)); }
|
__preserve_text_on__(w) { w.push(fromSchema(this)); }
|
||||||
|
@ -1090,15 +1090,15 @@ export function toDefinitions<_embedded extends _.Embeddable = _.GenericEmbedded
|
||||||
let result: undefined | Definitions<_embedded>;
|
let result: undefined | Definitions<_embedded>;
|
||||||
_tmp0 = void 0;
|
_tmp0 = void 0;
|
||||||
if (_.Dictionary.isDictionary<_embedded>(v)) {
|
if (_.Dictionary.isDictionary<_embedded>(v)) {
|
||||||
const vMap = _.Dictionary.asMap(v);
|
const _tmp1 = new _.DictionaryMap(v);
|
||||||
_tmp0 = new _.EncodableDictionary<_embedded, symbol, Definition<_embedded>>(k => k, fromDefinition<_embedded>);
|
_tmp0 = new _.EncodableDictionary<_embedded, symbol, Definition<_embedded>>(k => k, fromDefinition<_embedded>);
|
||||||
for (const [_tmp1, _tmp2] of vMap) {
|
for (const [_tmp2, _tmp3] of _tmp1) {
|
||||||
let _tmp3: (symbol) | undefined;
|
let _tmp4: (symbol) | undefined;
|
||||||
_tmp3 = typeof _tmp1 === 'symbol' ? _tmp1 : void 0;
|
_tmp4 = typeof _tmp2 === 'symbol' ? _tmp2 : void 0;
|
||||||
if (_tmp3 !== void 0) {
|
if (_tmp4 !== void 0) {
|
||||||
let _tmp4: (Definition<_embedded>) | undefined;
|
let _tmp5: (Definition<_embedded>) | undefined;
|
||||||
_tmp4 = toDefinition(_tmp2);
|
_tmp5 = toDefinition(_tmp3);
|
||||||
if (_tmp4 !== void 0) {_tmp0.set(_tmp3, _tmp4); continue;};
|
if (_tmp5 !== void 0) {_tmp0.set(_tmp4, _tmp5); continue;};
|
||||||
};
|
};
|
||||||
_tmp0 = void 0;
|
_tmp0 = void 0;
|
||||||
break;
|
break;
|
||||||
|
@ -1623,15 +1623,15 @@ export function toDictionaryEntries<_embedded extends _.Embeddable = _.GenericEm
|
||||||
let result: undefined | DictionaryEntries<_embedded>;
|
let result: undefined | DictionaryEntries<_embedded>;
|
||||||
_tmp0 = void 0;
|
_tmp0 = void 0;
|
||||||
if (_.Dictionary.isDictionary<_embedded>(v)) {
|
if (_.Dictionary.isDictionary<_embedded>(v)) {
|
||||||
const vMap = _.Dictionary.asMap(v);
|
const _tmp1 = new _.DictionaryMap(v);
|
||||||
_tmp0 = new _.EncodableDictionary<_embedded, _.Value<_embedded>, NamedSimplePattern<_embedded>>(k => k, fromNamedSimplePattern<_embedded>);
|
_tmp0 = new _.EncodableDictionary<_embedded, _.Value<_embedded>, NamedSimplePattern<_embedded>>(k => k, fromNamedSimplePattern<_embedded>);
|
||||||
for (const [_tmp1, _tmp2] of vMap) {
|
for (const [_tmp2, _tmp3] of _tmp1) {
|
||||||
let _tmp3: (_.Value<_embedded>) | undefined;
|
let _tmp4: (_.Value<_embedded>) | undefined;
|
||||||
_tmp3 = _tmp1;
|
_tmp4 = _tmp2;
|
||||||
if (_tmp3 !== void 0) {
|
if (_tmp4 !== void 0) {
|
||||||
let _tmp4: (NamedSimplePattern<_embedded>) | undefined;
|
let _tmp5: (NamedSimplePattern<_embedded>) | undefined;
|
||||||
_tmp4 = toNamedSimplePattern(_tmp2);
|
_tmp5 = toNamedSimplePattern(_tmp3);
|
||||||
if (_tmp4 !== void 0) {_tmp0.set(_tmp3, _tmp4); continue;};
|
if (_tmp5 !== void 0) {_tmp0.set(_tmp4, _tmp5); continue;};
|
||||||
};
|
};
|
||||||
_tmp0 = void 0;
|
_tmp0 = void 0;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue