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