json -> yaml for IR
parent
3cc324d1da
commit
04c2be0550
|
@ -0,0 +1,4 @@
|
|||
declare module 'yaml-js' {
|
||||
declare function load(string): mixed;
|
||||
declare function dump(mixed, null, null, {indent?: number, width?: number}): string;
|
||||
}
|
|
@ -28,7 +28,8 @@
|
|||
"json-stringify-pretty-compact": "^1.0.4",
|
||||
"optimist": "^0.6.1",
|
||||
"resolve": "^1.5.0",
|
||||
"wu": "^2.1.0"
|
||||
"wu": "^2.1.0",
|
||||
"yaml-js": "^0.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "^7.0.0-beta.32",
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import stringify from 'json-stringify-pretty-compact';
|
||||
import * as yaml from 'yaml-js';
|
||||
import * as optimist from 'optimist';
|
||||
|
||||
import collect from '.';
|
||||
|
@ -17,7 +17,12 @@ function run(path: string) {
|
|||
try {
|
||||
const {types} = collect(path);
|
||||
|
||||
console.log(stringify(types, {maxLength: 100}));
|
||||
const output = yaml.dump({types}, null, null, {
|
||||
indent: 4,
|
||||
width: 100,
|
||||
});
|
||||
|
||||
console.log(output.trimRight());
|
||||
} catch (ex) {
|
||||
console.error(ex.message);
|
||||
console.error(ex.stack);
|
||||
|
|
|
@ -56,7 +56,7 @@ function processInterfaceDeclaration(ctx: Context, node: InterfaceDeclaration) {
|
|||
|
||||
parts.push({
|
||||
kind: 'reference',
|
||||
to: type.id,
|
||||
to: type.id.slice(),
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@ function processClassDeclaration(ctx: Context, node: ClassDeclaration) {
|
|||
|
||||
const baseRef = {
|
||||
kind: 'reference',
|
||||
to: base.id,
|
||||
to: base.id.slice(),
|
||||
};
|
||||
|
||||
ctx.define(name, {
|
||||
|
@ -326,7 +326,7 @@ function makeReference(ctx: Context, node: GenericTypeAnnotation): ?Type {
|
|||
|
||||
return {
|
||||
kind: 'reference',
|
||||
to: type.id,
|
||||
to: type.id.slice(),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -136,7 +136,10 @@ function values(params: (?Type)[], resolve: TypeId => Type): ?Type {
|
|||
|
||||
invariant(record.kind === 'record');
|
||||
|
||||
const variants = wu(record.fields).pluck('value').toArray();
|
||||
const variants = wu(record.fields)
|
||||
.pluck('value')
|
||||
.map(clone)
|
||||
.toArray();
|
||||
|
||||
// TODO: empty records.
|
||||
// TODO: dedup values.
|
||||
|
|
19
src/utils.js
19
src/utils.js
|
@ -10,6 +10,21 @@ export function last<T>(list: T[]): T {
|
|||
return list[list.length - 1];
|
||||
}
|
||||
|
||||
export function clone<T: Object>(obj: T): T {
|
||||
return Object.assign({}, obj);
|
||||
export function clone<T>(that: T): T {
|
||||
if (that == null || typeof that !== 'object') {
|
||||
return that;
|
||||
}
|
||||
|
||||
if (that instanceof Array) {
|
||||
return that.map(clone);
|
||||
}
|
||||
|
||||
const obj = {};
|
||||
|
||||
for (const key in that) {
|
||||
obj[key] = clone(that[key]);
|
||||
}
|
||||
|
||||
// TODO: we skip complex objects.
|
||||
return (obj: $FlowFixMe);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import * as assert from 'assert';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as yaml from 'yaml-js';
|
||||
|
||||
import collect from '../src';
|
||||
|
||||
|
@ -10,11 +11,11 @@ function run(title) {
|
|||
// Run the collector only if the suite will be checked.
|
||||
before(() => {
|
||||
actual = collect(title + '.js');
|
||||
expected = JSON.parse(fs.readFileSync(title + '.json', 'utf8'));
|
||||
expected = yaml.load(fs.readFileSync(title + '.yaml', 'utf8'));
|
||||
});
|
||||
|
||||
it('should provide expected types', () => {
|
||||
assert.deepEqual(actual.types, expected.types);
|
||||
assert.deepEqual((actual: any).types, (expected: any).types);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["any", "X"],
|
||||
"kind": "any"
|
||||
},
|
||||
{
|
||||
"id": ["any", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "y",
|
||||
"value": {"kind": "any"},
|
||||
"required": true
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
types:
|
||||
- kind: any
|
||||
id: [any, X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: y
|
||||
value: {kind: any}
|
||||
required: true
|
||||
id: [any, Y]
|
|
@ -1,67 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["arrays", "Type"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "a",
|
||||
"value": {"kind": "array", "items": {"kind": "string"}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"value": {"kind": "array", "items": {"kind": "string"}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "c",
|
||||
"value": {"kind": "array", "items": {"kind": "string"}},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["arrays", "Interface"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "a",
|
||||
"value": {"kind": "array", "items": {"kind": "string"}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"value": {"kind": "array", "items": {"kind": "string"}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "c",
|
||||
"value": {"kind": "array", "items": {"kind": "string"}},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["arrays", "Class"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "a",
|
||||
"value": {"kind": "array", "items": {"kind": "string"}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"value": {"kind": "array", "items": {"kind": "string"}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "c",
|
||||
"value": {"kind": "array", "items": {"kind": "string"}},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
- name: b
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
- name: c
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
id: [arrays, Type]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
- name: b
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
- name: c
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
id: [arrays, Interface]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
- name: b
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
- name: c
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
id: [arrays, Class]
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["disorder", "Z"],
|
||||
"kind": "string"
|
||||
},
|
||||
{
|
||||
"id": ["disorder", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "z", "value": {"kind": "reference", "to": ["disorder", "Z"]}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["disorder", "X"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "y", "value": {"kind": "reference", "to": ["disorder", "Y"]}, "required": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
types:
|
||||
- kind: string
|
||||
id: [disorder, Z]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: z
|
||||
value:
|
||||
kind: reference
|
||||
to: [disorder, Z]
|
||||
required: true
|
||||
id: [disorder, Y]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: y
|
||||
value:
|
||||
kind: reference
|
||||
to: [disorder, Y]
|
||||
required: true
|
||||
id: [disorder, X]
|
|
@ -1,42 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["elementType", "X", "boolean"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "x",
|
||||
"value": {
|
||||
"kind": "union",
|
||||
"variants": [
|
||||
{"kind": "boolean"},
|
||||
{"kind": "string"}
|
||||
]
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"id": ["elementType", "Y", "x"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "y",
|
||||
"value": {
|
||||
"kind": "union",
|
||||
"variants": [
|
||||
{"kind": "boolean"},
|
||||
{"kind": "string"}
|
||||
]
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"id": ["elementType", "Z"],
|
||||
"kind": "union",
|
||||
"variants": [
|
||||
{"kind": "boolean"},
|
||||
{"kind": "string"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value:
|
||||
kind: union
|
||||
variants:
|
||||
- {kind: boolean}
|
||||
- {kind: string}
|
||||
required: true
|
||||
id: [elementType, X, boolean]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: y
|
||||
value:
|
||||
kind: union
|
||||
variants:
|
||||
- {kind: boolean}
|
||||
- {kind: string}
|
||||
required: true
|
||||
id: [elementType, Y, x]
|
||||
- kind: union
|
||||
variants:
|
||||
- {kind: boolean}
|
||||
- {kind: string}
|
||||
id: [elementType, Z]
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"types": []
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
types: []
|
|
@ -1,49 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["enums", "Type"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "a",
|
||||
"value": {
|
||||
"kind": "union",
|
||||
"variants": [
|
||||
{"kind": "literal", "value": "one"},
|
||||
{"kind": "literal", "value": "two"}
|
||||
]
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"id": ["enums", "Interface"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "a",
|
||||
"value": {
|
||||
"kind": "union",
|
||||
"variants": [
|
||||
{"kind": "literal", "value": "one"},
|
||||
{"kind": "literal", "value": "two"}
|
||||
]
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"id": ["enums", "Class"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "a",
|
||||
"value": {
|
||||
"kind": "union",
|
||||
"variants": [
|
||||
{"kind": "literal", "value": "one"},
|
||||
{"kind": "literal", "value": "two"}
|
||||
]
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: union
|
||||
variants:
|
||||
- {kind: literal, value: one}
|
||||
- {kind: literal, value: two}
|
||||
required: true
|
||||
id: [enums, Type]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: union
|
||||
variants:
|
||||
- {kind: literal, value: one}
|
||||
- {kind: literal, value: two}
|
||||
required: true
|
||||
id: [enums, Interface]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: union
|
||||
variants:
|
||||
- {kind: literal, value: one}
|
||||
- {kind: literal, value: two}
|
||||
required: true
|
||||
id: [enums, Class]
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["exact", "X"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "x", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "y", "value": {"kind": "boolean"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["exact", "Y"],
|
||||
"kind": "reference",
|
||||
"to": ["exact", "X"]
|
||||
},
|
||||
{
|
||||
"id": ["exact", "Z"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "z", "value": {"kind": "string"}, "required": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: y
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [exact, X]
|
||||
- kind: reference
|
||||
to: [exact, X]
|
||||
id: [exact, Y]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: z
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [exact, Z]
|
|
@ -1,64 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["externals", "first", "A"],
|
||||
"kind": "record",
|
||||
"fields": [{"name": "a", "value": {"kind": "boolean"}, "required": true}]
|
||||
},
|
||||
{
|
||||
"id": ["externals", "first", "B"],
|
||||
"kind": "record",
|
||||
"fields": [{"name": "b", "value": {"kind": "string"}, "required": true}]
|
||||
},
|
||||
{
|
||||
"id": ["externals", "first", "CC"],
|
||||
"kind": "record",
|
||||
"fields": [{"name": "c", "value": {"kind": "number", "repr": "f64"}, "required": true}]
|
||||
},
|
||||
{
|
||||
"id": ["externals", "first", "D"],
|
||||
"kind": "record",
|
||||
"fields": [{"name": "d", "value": {"kind": "number", "repr": "f64"}, "required": true}]
|
||||
},
|
||||
{
|
||||
"id": ["externals", "X"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "reference", "to": ["externals", "first", "A"]}, "required": true},
|
||||
{"name": "b", "value": {"kind": "reference", "to": ["externals", "first", "B"]}, "required": true},
|
||||
{"name": "c", "value": {"kind": "reference", "to": ["externals", "first", "CC"]}, "required": true},
|
||||
{"name": "d", "value": {"kind": "reference", "to": ["externals", "first", "D"]}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["externals", "second", "N"],
|
||||
"kind": "record",
|
||||
"fields": [{"name": "n", "value": {"kind": "boolean"}, "required": true}]
|
||||
},
|
||||
{
|
||||
"id": ["externals", "second", "M"],
|
||||
"kind": "record",
|
||||
"fields": [{"name": "m", "value": {"kind": "string"}, "required": true}]
|
||||
},
|
||||
{
|
||||
"id": ["externals", "second", "KK"],
|
||||
"kind": "record",
|
||||
"fields": [{"name": "k", "value": {"kind": "number", "repr": "f64"}, "required": true}]
|
||||
},
|
||||
{
|
||||
"id": ["externals", "second", "P"],
|
||||
"kind": "record",
|
||||
"fields": [{"name": "p", "value": {"kind": "number", "repr": "f64"}, "required": true}]
|
||||
},
|
||||
{
|
||||
"id": ["externals", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "n", "value": {"kind": "reference", "to": ["externals", "second", "N"]}, "required": true},
|
||||
{"name": "m", "value": {"kind": "reference", "to": ["externals", "second", "M"]}, "required": true},
|
||||
{"name": "k", "value": {"kind": "reference", "to": ["externals", "second", "KK"]}, "required": true},
|
||||
{"name": "p", "value": {"kind": "reference", "to": ["externals", "second", "P"]}, "required": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [externals, first, A]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: b
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [externals, first, B]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: c
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
id: [externals, first, CC]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: d
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
id: [externals, first, D]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: reference
|
||||
to: [externals, first, A]
|
||||
required: true
|
||||
- name: b
|
||||
value:
|
||||
kind: reference
|
||||
to: [externals, first, B]
|
||||
required: true
|
||||
- name: c
|
||||
value:
|
||||
kind: reference
|
||||
to: [externals, first, CC]
|
||||
required: true
|
||||
- name: d
|
||||
value:
|
||||
kind: reference
|
||||
to: [externals, first, D]
|
||||
required: true
|
||||
id: [externals, X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: n
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [externals, second, N]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: m
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [externals, second, M]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: k
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
id: [externals, second, KK]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: p
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
id: [externals, second, P]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: n
|
||||
value:
|
||||
kind: reference
|
||||
to: [externals, second, N]
|
||||
required: true
|
||||
- name: m
|
||||
value:
|
||||
kind: reference
|
||||
to: [externals, second, M]
|
||||
required: true
|
||||
- name: k
|
||||
value:
|
||||
kind: reference
|
||||
to: [externals, second, KK]
|
||||
required: true
|
||||
- name: p
|
||||
value:
|
||||
kind: reference
|
||||
to: [externals, second, P]
|
||||
required: true
|
||||
id: [externals, Y]
|
|
@ -1,38 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["generics", "A", "string", "boolean"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "t", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "k", "value": {"kind": "boolean"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["generics", "X"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "a",
|
||||
"value": {"kind": "reference", "to": ["generics", "A", "string", "boolean"]},
|
||||
"required": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"id": ["generics", "A", "f64", "X"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "t", "value": {"kind": "number", "repr": "f64"}, "required": true},
|
||||
{"name": "k", "value": {"kind": "reference", "to": ["generics", "X"]}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["generics", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "a",
|
||||
"value": {"kind": "reference", "to": ["generics", "A", "f64", "X"]},
|
||||
"required": true
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: t
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: k
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [generics, A, string, boolean]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: reference
|
||||
to: [generics, A, string, boolean]
|
||||
required: true
|
||||
id: [generics, X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: t
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
- name: k
|
||||
value:
|
||||
kind: reference
|
||||
to: [generics, X]
|
||||
required: true
|
||||
id: [generics, A, f64, X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: reference
|
||||
to: [generics, A, f64, X]
|
||||
required: true
|
||||
id: [generics, Y]
|
|
@ -1,58 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["inheritance", "A"],
|
||||
"kind": "record",
|
||||
"fields": [{"name": "a", "value": {"kind": "number", "repr": "f64"}, "required": true}]
|
||||
},
|
||||
{
|
||||
"id": ["inheritance", "B"],
|
||||
"kind": "intersection",
|
||||
"parts": [
|
||||
{"kind": "reference", "to": ["inheritance", "A"]},
|
||||
{
|
||||
"kind": "record",
|
||||
"fields": [{"name": "b", "value": {"kind": "string"}, "required": true}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["inheritance", "C"],
|
||||
"kind": "intersection",
|
||||
"parts": [
|
||||
{"kind": "reference", "to": ["inheritance", "B"]},
|
||||
{
|
||||
"kind": "record",
|
||||
"fields": [{"name": "c", "value": {"kind": "boolean"}, "required": true}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["inheritance", "X"],
|
||||
"kind": "record",
|
||||
"fields": [{"name": "x", "value": {"kind": "number", "repr": "f64"}, "required": true}]
|
||||
},
|
||||
{
|
||||
"id": ["inheritance", "Y"],
|
||||
"kind": "intersection",
|
||||
"parts": [
|
||||
{"kind": "reference", "to": ["inheritance", "X"]},
|
||||
{
|
||||
"kind": "record",
|
||||
"fields": [{"name": "y", "value": {"kind": "string"}, "required": true}]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["inheritance", "Z"],
|
||||
"kind": "intersection",
|
||||
"parts": [
|
||||
{"kind": "reference", "to": ["inheritance", "Y"]},
|
||||
{
|
||||
"kind": "record",
|
||||
"fields": [{"name": "z", "value": {"kind": "boolean"}, "required": true}]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
id: [inheritance, A]
|
||||
- kind: intersection
|
||||
parts:
|
||||
- kind: reference
|
||||
to: [inheritance, A]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: b
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [inheritance, B]
|
||||
- kind: intersection
|
||||
parts:
|
||||
- kind: reference
|
||||
to: [inheritance, B]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: c
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [inheritance, C]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
id: [inheritance, X]
|
||||
- kind: intersection
|
||||
parts:
|
||||
- kind: reference
|
||||
to: [inheritance, X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: y
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [inheritance, Y]
|
||||
- kind: intersection
|
||||
parts:
|
||||
- kind: reference
|
||||
to: [inheritance, Y]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: z
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [inheritance, Z]
|
|
@ -1,64 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["intersections", "A"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "number", "repr": "f64"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["intersections", "B"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "b", "value": {"kind": "string"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["intersections", "X"],
|
||||
"kind": "intersection",
|
||||
"parts": [
|
||||
{"kind": "reference", "to": ["intersections", "A"]},
|
||||
{"kind": "reference", "to": ["intersections", "B"]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["intersections", "C"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "c", "value": {"kind": "boolean"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["intersections", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "y",
|
||||
"value": {
|
||||
"kind": "intersection",
|
||||
"parts": [
|
||||
{"kind": "reference", "to": ["intersections", "A"]},
|
||||
{"kind": "reference", "to": ["intersections", "B"]},
|
||||
{"kind": "reference", "to": ["intersections", "C"]}
|
||||
]
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"id": ["intersections", "Z"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "z",
|
||||
"value": {
|
||||
"kind": "intersection",
|
||||
"parts": [
|
||||
{"kind": "reference", "to": ["intersections", "A"]},
|
||||
{"kind": "reference", "to": ["intersections", "C"]}
|
||||
]
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
id: [intersections, A]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: b
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [intersections, B]
|
||||
- kind: intersection
|
||||
parts:
|
||||
- kind: reference
|
||||
to: [intersections, A]
|
||||
- kind: reference
|
||||
to: [intersections, B]
|
||||
id: [intersections, X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: c
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [intersections, C]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: y
|
||||
value:
|
||||
kind: intersection
|
||||
parts:
|
||||
- kind: reference
|
||||
to: [intersections, A]
|
||||
- kind: reference
|
||||
to: [intersections, B]
|
||||
- kind: reference
|
||||
to: [intersections, C]
|
||||
required: true
|
||||
id: [intersections, Y]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: z
|
||||
value:
|
||||
kind: intersection
|
||||
parts:
|
||||
- kind: reference
|
||||
to: [intersections, A]
|
||||
- kind: reference
|
||||
to: [intersections, C]
|
||||
required: true
|
||||
id: [intersections, Z]
|
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["keys", "X"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "b", "value": {"kind": "boolean"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["keys", "Y"],
|
||||
"kind": "union",
|
||||
"variants": [
|
||||
{"kind": "literal", "value": "a"},
|
||||
{"kind": "literal", "value": "b"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: b
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [keys, X]
|
||||
- kind: union
|
||||
variants:
|
||||
- {kind: literal, value: a}
|
||||
- {kind: literal, value: b}
|
||||
id: [keys, Y]
|
|
@ -1,51 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["maps", "Type"],
|
||||
"kind": "map",
|
||||
"keys": {"kind": "string"},
|
||||
"values": {"kind": "boolean"}
|
||||
},
|
||||
{
|
||||
"id": ["maps", "Interface"],
|
||||
"kind": "map",
|
||||
"keys": {"kind": "string"},
|
||||
"values": {"kind": "boolean"}
|
||||
},
|
||||
{
|
||||
"id": ["maps", "Couple"],
|
||||
"kind": "intersection",
|
||||
"parts": [
|
||||
{
|
||||
"kind": "map",
|
||||
"keys": {"kind": "string"},
|
||||
"values": {"kind": "boolean"}
|
||||
},
|
||||
{
|
||||
"kind": "map",
|
||||
"keys": {"kind": "number", "repr": "f64"},
|
||||
"values": {"kind": "string"}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["maps", "Mix"],
|
||||
"kind": "intersection",
|
||||
"parts": [
|
||||
{
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "foo",
|
||||
"value": {"kind": "string"},
|
||||
"required": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"kind": "map",
|
||||
"keys": {"kind": "string"},
|
||||
"values": {"kind": "boolean"}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
types:
|
||||
- kind: map
|
||||
keys: {kind: string}
|
||||
values: {kind: boolean}
|
||||
id: [maps, Type]
|
||||
- kind: map
|
||||
keys: {kind: string}
|
||||
values: {kind: boolean}
|
||||
id: [maps, Interface]
|
||||
- kind: intersection
|
||||
parts:
|
||||
- kind: map
|
||||
keys: {kind: string}
|
||||
values: {kind: boolean}
|
||||
- kind: map
|
||||
keys: {kind: number, repr: f64}
|
||||
values: {kind: string}
|
||||
id: [maps, Couple]
|
||||
- kind: intersection
|
||||
parts:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: foo
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- kind: map
|
||||
keys: {kind: string}
|
||||
values: {kind: boolean}
|
||||
id: [maps, Mix]
|
|
@ -1,67 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["maybe", "X"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "x",
|
||||
"value": {"kind": "maybe", "value": {"kind": "string"}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "xx",
|
||||
"value": {"kind": "maybe", "value": {"kind": "array", "items": {"kind": "string"}}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "xxx",
|
||||
"value": {"kind": "array", "items": {"kind": "maybe", "value": {"kind": "string"}}},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["maybe", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "y",
|
||||
"value": {"kind": "maybe", "value": {"kind": "string"}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "yy",
|
||||
"value": {"kind": "maybe", "value": {"kind": "array", "items": {"kind": "string"}}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "yyy",
|
||||
"value": {"kind": "array", "items": {"kind": "maybe", "value": {"kind": "string"}}},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["maybe", "Z"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "z",
|
||||
"value": {"kind": "maybe", "value": {"kind": "string"}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "zz",
|
||||
"value": {"kind": "maybe", "value": {"kind": "array", "items": {"kind": "string"}}},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "zzz",
|
||||
"value": {"kind": "array", "items": {"kind": "maybe", "value": {"kind": "string"}}},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value:
|
||||
kind: maybe
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: xx
|
||||
value:
|
||||
kind: maybe
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
- name: xxx
|
||||
value:
|
||||
kind: array
|
||||
items:
|
||||
kind: maybe
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [maybe, X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: y
|
||||
value:
|
||||
kind: maybe
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: yy
|
||||
value:
|
||||
kind: maybe
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
- name: yyy
|
||||
value:
|
||||
kind: array
|
||||
items:
|
||||
kind: maybe
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [maybe, Y]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: z
|
||||
value:
|
||||
kind: maybe
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: zz
|
||||
value:
|
||||
kind: maybe
|
||||
value:
|
||||
kind: array
|
||||
items: {kind: string}
|
||||
required: true
|
||||
- name: zzz
|
||||
value:
|
||||
kind: array
|
||||
items:
|
||||
kind: maybe
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [maybe, Z]
|
|
@ -1,17 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["mixed", "X"],
|
||||
"kind": "mixed"
|
||||
},
|
||||
{
|
||||
"id": ["mixed", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "y",
|
||||
"value": {"kind": "mixed"},
|
||||
"required": true
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
types:
|
||||
- kind: mixed
|
||||
id: [mixed, X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: y
|
||||
value: {kind: mixed}
|
||||
required: true
|
||||
id: [mixed, Y]
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["nonMaybeType", "X"],
|
||||
"kind": "maybe",
|
||||
"value": {"kind": "string"}
|
||||
},
|
||||
{
|
||||
"id": ["nonMaybeType", "Y"],
|
||||
"kind": "string"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
types:
|
||||
- kind: maybe
|
||||
value: {kind: string}
|
||||
id: [nonMaybeType, X]
|
||||
- kind: string
|
||||
id: [nonMaybeType, Y]
|
|
@ -1,36 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["objects", "X"],
|
||||
"kind": "map",
|
||||
"keys": {"kind": "mixed"},
|
||||
"values": {"kind": "mixed"}
|
||||
},
|
||||
{
|
||||
"id": ["objects", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "y",
|
||||
"value": {
|
||||
"kind": "map",
|
||||
"keys": {"kind": "mixed"},
|
||||
"values": {"kind": "mixed"}
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"id": ["objects", "Z"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "z",
|
||||
"value": {
|
||||
"kind": "map",
|
||||
"keys": {"kind": "mixed"},
|
||||
"values": {"kind": "mixed"}
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
types:
|
||||
- kind: map
|
||||
keys: {kind: mixed}
|
||||
values: {kind: mixed}
|
||||
id: [objects, X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: y
|
||||
value:
|
||||
kind: map
|
||||
keys: {kind: mixed}
|
||||
values: {kind: mixed}
|
||||
required: true
|
||||
id: [objects, Y]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: z
|
||||
value:
|
||||
kind: map
|
||||
keys: {kind: mixed}
|
||||
values: {kind: mixed}
|
||||
required: true
|
||||
id: [objects, Z]
|
|
@ -1,35 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["pragmas", "Type"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "number", "repr": "i32"}, "required": true},
|
||||
{"name": "b", "value": {"kind": "number", "repr": "i64"}, "required": true},
|
||||
{"name": "c", "value": {"kind": "number", "repr": "f32"}, "required": true},
|
||||
{"name": "d", "value": {"kind": "number", "repr": "f64"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["pragmas", "Interface"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "number", "repr": "i32"}, "required": true},
|
||||
{"name": "b", "value": {"kind": "number", "repr": "i64"}, "required": true},
|
||||
{"name": "c", "value": {"kind": "number", "repr": "f32"}, "required": true},
|
||||
{"name": "d", "value": {"kind": "number", "repr": "f64"}, "required": true},
|
||||
{"name": "e", "value": {"kind": "string"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["pragmas", "Class"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "number", "repr": "i32"}, "required": true},
|
||||
{"name": "b", "value": {"kind": "number", "repr": "i64"}, "required": true},
|
||||
{"name": "c", "value": {"kind": "number", "repr": "f32"}, "required": true},
|
||||
{"name": "d", "value": {"kind": "number", "repr": "f64"}, "required": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: number, repr: i32}
|
||||
required: true
|
||||
- name: b
|
||||
value: {kind: number, repr: i64}
|
||||
required: true
|
||||
- name: c
|
||||
value: {kind: number, repr: f32}
|
||||
required: true
|
||||
- name: d
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
id: [pragmas, Type]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: number, repr: i32}
|
||||
required: true
|
||||
- name: b
|
||||
value: {kind: number, repr: i64}
|
||||
required: true
|
||||
- name: c
|
||||
value: {kind: number, repr: f32}
|
||||
required: true
|
||||
- name: d
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
- name: e
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [pragmas, Interface]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: number, repr: i32}
|
||||
required: true
|
||||
- name: b
|
||||
value: {kind: number, repr: i64}
|
||||
required: true
|
||||
- name: c
|
||||
value: {kind: number, repr: f32}
|
||||
required: true
|
||||
- name: d
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
id: [pragmas, Class]
|
|
@ -1,34 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["primitives", "Type"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "b", "value": {"kind": "number", "repr": "f64"}, "required": true},
|
||||
{"name": "c", "value": {"kind": "boolean"}, "required": true},
|
||||
{"name": "d", "value": {"kind": "literal", "value": null}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["primitives", "Interface"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "b", "value": {"kind": "number", "repr": "f64"}, "required": true},
|
||||
{"name": "c", "value": {"kind": "boolean"}, "required": true},
|
||||
{"name": "d", "value": {"kind": "literal", "value": null}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["primitives", "Class"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "b", "value": {"kind": "number", "repr": "f64"}, "required": true},
|
||||
{"name": "c", "value": {"kind": "boolean"}, "required": true},
|
||||
{"name": "d", "value": {"kind": "literal", "value": null}, "required": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: b
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
- name: c
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
- name: d
|
||||
value: {kind: literal, value: null}
|
||||
required: true
|
||||
id: [primitives, Type]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: b
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
- name: c
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
- name: d
|
||||
value: {kind: literal, value: null}
|
||||
required: true
|
||||
id: [primitives, Interface]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: b
|
||||
value: {kind: number, repr: f64}
|
||||
required: true
|
||||
- name: c
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
- name: d
|
||||
value: {kind: literal, value: null}
|
||||
required: true
|
||||
id: [primitives, Class]
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["readOnly", "X"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "x", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "y", "value": {"kind": "boolean"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["readOnly", "Y"],
|
||||
"kind": "reference",
|
||||
"to": ["readOnly", "X"]
|
||||
},
|
||||
{
|
||||
"id": ["readOnly", "Z"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "z", "value": {"kind": "string"}, "required": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: y
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [readOnly, X]
|
||||
- kind: reference
|
||||
to: [readOnly, X]
|
||||
id: [readOnly, Y]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: z
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [readOnly, Z]
|
|
@ -1,56 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["references", "A"],
|
||||
"kind": "string"
|
||||
},
|
||||
{
|
||||
"id": ["references", "Type"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "a",
|
||||
"value": {"kind": "reference", "to": ["references", "A"]},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"value": {"kind": "array", "items": {"kind": "reference", "to": ["references", "A"]}},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["references", "Interface"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "a",
|
||||
"value": {"kind": "reference", "to": ["references", "A"]},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"value": {"kind": "array", "items": {"kind": "reference", "to": ["references", "A"]}},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["references", "Class"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "a",
|
||||
"value": {"kind": "reference", "to": ["references", "A"]},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"value": {"kind": "array", "items": {"kind": "reference", "to": ["references", "A"]}},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
types:
|
||||
- kind: string
|
||||
id: [references, A]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: reference
|
||||
to: [references, A]
|
||||
required: true
|
||||
- name: b
|
||||
value:
|
||||
kind: array
|
||||
items:
|
||||
kind: reference
|
||||
to: [references, A]
|
||||
required: true
|
||||
id: [references, Type]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: reference
|
||||
to: [references, A]
|
||||
required: true
|
||||
- name: b
|
||||
value:
|
||||
kind: array
|
||||
items:
|
||||
kind: reference
|
||||
to: [references, A]
|
||||
required: true
|
||||
id: [references, Interface]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: reference
|
||||
to: [references, A]
|
||||
required: true
|
||||
- name: b
|
||||
value:
|
||||
kind: array
|
||||
items:
|
||||
kind: reference
|
||||
to: [references, A]
|
||||
required: true
|
||||
id: [references, Class]
|
|
@ -1,68 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["scopes", "2", "X"],
|
||||
"kind": "boolean"
|
||||
},
|
||||
{
|
||||
"id": ["scopes", "1", "Z"],
|
||||
"kind": "string"
|
||||
},
|
||||
{
|
||||
"id": ["scopes", "2", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "x", "value": {"kind": "reference", "to": ["scopes", "2", "X"]}, "required": true},
|
||||
{"name": "z", "value": {"kind": "reference", "to": ["scopes", "1", "Z"]}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["scopes", "3", "X"],
|
||||
"kind": "number",
|
||||
"repr": "f64"
|
||||
},
|
||||
{
|
||||
"id": ["scopes", "3", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "x", "value": {"kind": "reference", "to": ["scopes", "3", "X"]}, "required": true},
|
||||
{"name": "z", "value": {"kind": "reference", "to": ["scopes", "1", "Z"]}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["scopes", "4", "X"],
|
||||
"kind": "string"
|
||||
},
|
||||
{
|
||||
"id": ["scopes", "4", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "x", "value": {"kind": "reference", "to": ["scopes", "4", "X"]}, "required": true},
|
||||
{"name": "z", "value": {"kind": "reference", "to": ["scopes", "1", "Z"]}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["scopes", "1", "X"],
|
||||
"kind": "number",
|
||||
"repr": "f64"
|
||||
},
|
||||
{
|
||||
"id": ["scopes", "1", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "x", "value": {"kind": "reference", "to": ["scopes", "1", "X"]}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["scopes", "X"],
|
||||
"kind": "string"
|
||||
},
|
||||
{
|
||||
"id": ["scopes", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "x", "value": {"kind": "reference", "to": ["scopes", "X"]}, "required": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
types:
|
||||
- kind: boolean
|
||||
id: [scopes, '2', X]
|
||||
- kind: string
|
||||
id: [scopes, '1', Z]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value:
|
||||
kind: reference
|
||||
to: [scopes, '2', X]
|
||||
required: true
|
||||
- name: z
|
||||
value:
|
||||
kind: reference
|
||||
to: [scopes, '1', Z]
|
||||
required: true
|
||||
id: [scopes, '2', Y]
|
||||
- kind: number
|
||||
repr: f64
|
||||
id: [scopes, '3', X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value:
|
||||
kind: reference
|
||||
to: [scopes, '3', X]
|
||||
required: true
|
||||
- name: z
|
||||
value:
|
||||
kind: reference
|
||||
to: [scopes, '1', Z]
|
||||
required: true
|
||||
id: [scopes, '3', Y]
|
||||
- kind: string
|
||||
id: [scopes, '4', X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value:
|
||||
kind: reference
|
||||
to: [scopes, '4', X]
|
||||
required: true
|
||||
- name: z
|
||||
value:
|
||||
kind: reference
|
||||
to: [scopes, '1', Z]
|
||||
required: true
|
||||
id: [scopes, '4', Y]
|
||||
- kind: number
|
||||
repr: f64
|
||||
id: [scopes, '1', X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value:
|
||||
kind: reference
|
||||
to: [scopes, '1', X]
|
||||
required: true
|
||||
id: [scopes, '1', Y]
|
||||
- kind: string
|
||||
id: [scopes, X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value:
|
||||
kind: reference
|
||||
to: [scopes, X]
|
||||
required: true
|
||||
id: [scopes, Y]
|
|
@ -1,31 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["shadowing", "1", "Buffer"],
|
||||
"kind": "record",
|
||||
"fields": []
|
||||
},
|
||||
{
|
||||
"id": ["shadowing", "1", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "y",
|
||||
"value": {"kind": "reference", "to": ["shadowing", "1", "Buffer"]},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["shadowing", "X"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "x",
|
||||
"value": {"kind": "reference", "to": ["Buffer"]},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields: []
|
||||
id: [shadowing, '1', Buffer]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: y
|
||||
value:
|
||||
kind: reference
|
||||
to: [shadowing, '1', Buffer]
|
||||
required: true
|
||||
id: [shadowing, '1', Y]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value:
|
||||
kind: reference
|
||||
to: [Buffer]
|
||||
required: true
|
||||
id: [shadowing, X]
|
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["shape", "X"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "x", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "y", "value": {"kind": "boolean"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["shape", "Y"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "x", "value": {"kind": "string"}, "required": false},
|
||||
{"name": "y", "value": {"kind": "boolean"}, "required": false}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: y
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [shape, X]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: x
|
||||
value: {kind: string}
|
||||
required: false
|
||||
- name: y
|
||||
value: {kind: boolean}
|
||||
required: false
|
||||
id: [shape, Y]
|
|
@ -1,30 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["skipFunctions", "Type"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "b", "value": {"kind": "boolean"}, "required": true},
|
||||
{"name": "c", "value": {"kind": "string"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["skipFunctions", "Interface"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "b", "value": {"kind": "boolean"}, "required": true},
|
||||
{"name": "c", "value": {"kind": "string"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["skipFunctions", "Class"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "b", "value": {"kind": "boolean"}, "required": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: b
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
- name: c
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [skipFunctions, Type]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: b
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
- name: c
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [skipFunctions, Interface]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: b
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [skipFunctions, Class]
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"types": [{
|
||||
"id": ["skipStatics", "X"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "xxx",
|
||||
"value": {"kind": "string"},
|
||||
"required": true
|
||||
}]
|
||||
}]
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: xxx
|
||||
value: {kind: string}
|
||||
required: true
|
||||
id: [skipStatics, X]
|
|
@ -1,44 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["tuples", "Type"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "a",
|
||||
"value": {"kind": "tuple", "items": [{"kind": "string"}, {"kind": "boolean"}]},
|
||||
"required": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"id": ["tuples", "Interface"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "a",
|
||||
"value": {
|
||||
"kind": "tuple",
|
||||
"items": [{"kind": "string"}, {"kind": "literal", "value": null}, {"kind": "boolean"}]
|
||||
},
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"value": {
|
||||
"kind": "tuple",
|
||||
"items": [{"kind": "string"}, null, {"kind": "boolean"}]
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["tuples", "Class"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "a",
|
||||
"value": {"kind": "tuple", "items": [{"kind": "boolean"}]},
|
||||
"required": true
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: tuple
|
||||
items:
|
||||
- {kind: string}
|
||||
- {kind: boolean}
|
||||
required: true
|
||||
id: [tuples, Type]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: tuple
|
||||
items:
|
||||
- {kind: string}
|
||||
- {kind: literal, value: null}
|
||||
- {kind: boolean}
|
||||
required: true
|
||||
- name: b
|
||||
value:
|
||||
kind: tuple
|
||||
items:
|
||||
- {kind: string}
|
||||
- null
|
||||
- {kind: boolean}
|
||||
required: true
|
||||
id: [tuples, Interface]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: tuple
|
||||
items:
|
||||
- {kind: boolean}
|
||||
required: true
|
||||
id: [tuples, Class]
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["typeInMethod", "Test"],
|
||||
"kind": "record",
|
||||
"fields": []
|
||||
},
|
||||
{
|
||||
"id": ["typeInMethod", "1", "X"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "t",
|
||||
"value": {"kind": "reference", "to": ["typeInMethod", "Test"]},
|
||||
"required": true
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields: []
|
||||
id: [typeInMethod, Test]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: t
|
||||
value:
|
||||
kind: reference
|
||||
to: [typeInMethod, Test]
|
||||
required: true
|
||||
id: [typeInMethod, '1', X]
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["unions", "Type"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "a",
|
||||
"value": {
|
||||
"kind": "union",
|
||||
"variants": [{"kind": "string"}, {"kind": "boolean"}]
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["unions", "Interface"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "a",
|
||||
"value": {
|
||||
"kind": "union",
|
||||
"variants": [{"kind": "string"}, {"kind": "boolean"}, {"kind": "number", "repr": "f64"}]
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["unions", "Class"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{
|
||||
"name": "a",
|
||||
"value": {
|
||||
"kind": "union",
|
||||
"variants": [{"kind": "string"}, {"kind": "boolean"}]
|
||||
},
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: union
|
||||
variants:
|
||||
- {kind: string}
|
||||
- {kind: boolean}
|
||||
required: true
|
||||
id: [unions, Type]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: union
|
||||
variants:
|
||||
- {kind: string}
|
||||
- {kind: boolean}
|
||||
- {kind: number, repr: f64}
|
||||
required: true
|
||||
id: [unions, Interface]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: union
|
||||
variants:
|
||||
- {kind: string}
|
||||
- {kind: boolean}
|
||||
required: true
|
||||
id: [unions, Class]
|
|
@ -1,52 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["unionsAndEnums", "Type"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "a",
|
||||
"value": {
|
||||
"kind": "union",
|
||||
"variants": [
|
||||
{"kind": "literal", "value": "one"},
|
||||
{"kind": "literal", "value": "two"},
|
||||
{"kind": "string"}
|
||||
]
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"id": ["unionsAndEnums", "Interface"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "a",
|
||||
"value": {
|
||||
"kind": "union",
|
||||
"variants": [
|
||||
{"kind": "literal", "value": "one"},
|
||||
{"kind": "literal", "value": "two"},
|
||||
{"kind": "string"}
|
||||
]
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
},
|
||||
{
|
||||
"id": ["unionsAndEnums", "Class"],
|
||||
"kind": "record",
|
||||
"fields": [{
|
||||
"name": "a",
|
||||
"value": {
|
||||
"kind": "union",
|
||||
"variants": [
|
||||
{"kind": "literal", "value": "one"},
|
||||
{"kind": "literal", "value": "two"},
|
||||
{"kind": "string"}
|
||||
]
|
||||
},
|
||||
"required": true
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: union
|
||||
variants:
|
||||
- {kind: literal, value: one}
|
||||
- {kind: literal, value: two}
|
||||
- {kind: string}
|
||||
required: true
|
||||
id: [unionsAndEnums, Type]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: union
|
||||
variants:
|
||||
- {kind: literal, value: one}
|
||||
- {kind: literal, value: two}
|
||||
- {kind: string}
|
||||
required: true
|
||||
id: [unionsAndEnums, Interface]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value:
|
||||
kind: union
|
||||
variants:
|
||||
- {kind: literal, value: one}
|
||||
- {kind: literal, value: two}
|
||||
- {kind: string}
|
||||
required: true
|
||||
id: [unionsAndEnums, Class]
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"types": []
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
types: []
|
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["valueAsType", "Type"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "literal", "value": "one"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["valueAsType", "Interface"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "literal", "value": "one"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["valueAsType", "Class"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "literal", "value": "one"}, "required": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: literal, value: one}
|
||||
required: true
|
||||
id: [valueAsType, Type]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: literal, value: one}
|
||||
required: true
|
||||
id: [valueAsType, Interface]
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: literal, value: one}
|
||||
required: true
|
||||
id: [valueAsType, Class]
|
|
@ -1,20 +0,0 @@
|
|||
{
|
||||
"types": [
|
||||
{
|
||||
"id": ["values", "X"],
|
||||
"kind": "record",
|
||||
"fields": [
|
||||
{"name": "a", "value": {"kind": "string"}, "required": true},
|
||||
{"name": "b", "value": {"kind": "boolean"}, "required": true}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": ["values", "Y"],
|
||||
"kind": "union",
|
||||
"variants": [
|
||||
{"kind": "string"},
|
||||
{"kind": "boolean"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
types:
|
||||
- kind: record
|
||||
fields:
|
||||
- name: a
|
||||
value: {kind: string}
|
||||
required: true
|
||||
- name: b
|
||||
value: {kind: boolean}
|
||||
required: true
|
||||
id: [values, X]
|
||||
- kind: union
|
||||
variants:
|
||||
- {kind: string}
|
||||
- {kind: boolean}
|
||||
id: [values, Y]
|
Loading…
Reference in New Issue