-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.json
More file actions
88 lines (88 loc) · 13.2 KB
/
Copy pathschema.json
File metadata and controls
88 lines (88 loc) · 13.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
{
"magic": "RNVO",
"version": 1,
"byte_order": "little-endian",
"header": "magic[4], version:u16, flags:u16=0, root_tag:u16, root_length:u32",
"compatibility": {
"same_version": "Readers ignore unknown child tags and reject duplicate known singleton tags.",
"new_optional_tag": "Writers may add an optional tag without changing the version.",
"breaking_change": "Changing a required tag, an existing payload, the header, or validation semantics requires a new version.",
"unsupported_version": "Readers reject versions they do not implement."
},
"validation": [
"The flags field is zero and the root payload consumes the file exactly.",
"All required child tags occur exactly once; every other known child tag occurs at most once.",
"Unknown version-1 child tags are skipped using their checked length.",
"Every payload is consumed exactly; truncated, overflowing, overlong, or trailing record data is invalid.",
"Token byte offsets and lines are monotonic, token spans stay inside Text, and the final token is EOF.",
"Byte spans, token spans, owner indexes, and table indexes stay inside the tables they reference.",
"Boolean fields contain only zero or one and enum fields contain a defined value."
],
"tags": [
{"name":"Unit","number":1,"role":"root","required":true,"payload":"children"},
{"name":"Package","number":2,"role":"child","required":true,"payload":"bytes"},
{"name":"ImportPath","number":3,"role":"child","required":true,"payload":"bytes"},
{"name":"Text","number":7,"role":"child","required":true,"payload":"bytes"},
{"name":"Tokens","number":8,"role":"child","required":true,"payload":"counted","record":"Token"},
{"name":"Decls","number":9,"role":"child","required":true,"payload":"counted","record":"Decl"},
{"name":"Funcs","number":10,"role":"child","required":true,"payload":"counted","record":"Func"},
{"name":"Indexes","number":11,"role":"child","required":false,"payload":"counted","record":"IndexExpr"},
{"name":"Comps","number":12,"role":"child","required":false,"payload":"counted","record":"CompositeExpr"},
{"name":"Assigns","number":13,"role":"child","required":false,"payload":"counted","record":"Assignment"},
{"name":"Returns","number":14,"role":"child","required":false,"payload":"counted","record":"Return"},
{"name":"Calls","number":15,"role":"child","required":false,"payload":"counted","record":"Call"},
{"name":"Refs","number":16,"role":"child","required":false,"payload":"counted","record":"NameRef"},
{"name":"Sels","number":17,"role":"child","required":false,"payload":"counted","record":"Selector"},
{"name":"Types","number":18,"role":"child","required":false,"payload":"counted","record":"TypeInfo"},
{"name":"TypeRefs","number":19,"role":"child","required":false,"payload":"counted","record":"TypeRef"},
{"name":"Locals","number":20,"role":"child","required":false,"payload":"counted","record":"LocalDecl"},
{"name":"Sigs","number":21,"role":"child","required":false,"payload":"counted","record":"FuncSignature"},
{"name":"DeclMeta","number":22,"role":"child","required":false,"payload":"counted","record":"DeclMeta"},
{"name":"Imports","number":23,"role":"child","required":false,"payload":"counted","record":"Import"},
{"name":"Symbols","number":24,"role":"child","required":false,"payload":"counted","record":"Symbol"},
{"name":"InitOrder","number":25,"role":"child","required":false,"payload":"counted","record":"InitOrderEntry"},
{"name":"Consts","number":26,"role":"child","required":false,"payload":"counted","record":"ConstValue"},
{"name":"TypeFields","number":27,"role":"child","required":false,"payload":"counted","record":"TypeFields"},
{"name":"TypeIfaces","number":28,"role":"child","required":false,"payload":"counted","record":"TypeIface"},
{"name":"Methods","number":29,"role":"child","required":false,"payload":"counted","record":"MethodInfo"},
{"name":"TypeFuncs","number":30,"role":"child","required":false,"payload":"counted","record":"TypeFuncSig"},
{"name":"Stmts","number":31,"role":"child","required":false,"payload":"counted","record":"Statement"},
{"name":"Packages","number":32,"role":"child","required":false,"payload":"counted","record":"PackageInfo"},
{"name":"RTGAssembly","number":33,"role":"child","required":false,"payload":"record","record":"RTGAssembly"},
{"name":"Entrypoint","number":34,"role":"child","required":false,"payload":"uvarint function index"},
{"name":"ForeignPrograms","number":35,"role":"child","required":false,"payload":"counted","record":"ForeignProgram"}
],
"records": [
{"name":"Token","fields":[{"name":"kind","encoding":"uvarint"},{"name":"start","encoding":"uvarint delta from previous start"},{"name":"size","encoding":"uvarint"},{"name":"line","encoding":"uvarint delta from previous line"}]},
{"name":"Decl","fields":[{"name":"kind","encoding":"uvarint"},{"name":"name","encoding":"byte span: start, length"},{"name":"tokens","encoding":"token span: start, length"}]},
{"name":"Func","fields":[{"name":"name","encoding":"byte span: start, length"},{"name":"start_tok","encoding":"uvarint"},{"name":"name_tok","encoding":"uvarint delta from start_tok"},{"name":"receiver","encoding":"token span: start, length"},{"name":"body","encoding":"token span: start, length"},{"name":"end_tok","encoding":"uvarint delta from body end"}]},
{"name":"ExprSpan","fields":[{"name":"tokens","encoding":"token span: start, length"}]},
{"name":"Field","fields":[{"name":"name_tok","encoding":"nullable uvarint: value+1, zero means absent"},{"name":"type","encoding":"token span: start, length"},{"name":"variadic","encoding":"uvarint boolean"}]},
{"name":"Import","fields":[{"name":"name","encoding":"length-prefixed bytes"},{"name":"import_path","encoding":"length-prefixed bytes"},{"name":"package","encoding":"nullable uvarint"},{"name":"name_tok","encoding":"nullable uvarint"},{"name":"path_tok","encoding":"uvarint"},{"name":"flags","encoding":"uvarint bitset: dot=1, blank=2"}]},
{"name":"Symbol","fields":[{"name":"name","encoding":"length-prefixed bytes"},{"name":"kind","encoding":"uvarint"},{"name":"package","encoding":"nullable uvarint"},{"name":"token","encoding":"uvarint"},{"name":"owner_kind","encoding":"uvarint"},{"name":"owner_index","encoding":"uvarint"}]},
{"name":"DeclMeta","fields":[{"name":"decl_index","encoding":"uvarint"},{"name":"symbol","encoding":"nullable uvarint"},{"name":"value_index","encoding":"uvarint"},{"name":"alias","encoding":"uvarint boolean"},{"name":"type","encoding":"nullable token span: start+1, length"},{"name":"value","encoding":"nullable token span: start+1, length"},{"name":"values","encoding":"counted ExprSpan"}]},
{"name":"InitOrderEntry","fields":[{"name":"decl_index","encoding":"uvarint"}]},
{"name":"ConstValue","fields":[{"name":"decl_index","encoding":"uvarint"},{"name":"kind","encoding":"uvarint"},{"name":"value","encoding":"kind union: zigzag integer, length-prefixed bytes, or uvarint boolean"}]},
{"name":"FuncSignature","fields":[{"name":"func_index","encoding":"uvarint"},{"name":"receiver","encoding":"counted Field"},{"name":"params","encoding":"counted Field"},{"name":"results","encoding":"counted Field"}]},
{"name":"Statement","fields":[{"name":"func_index","encoding":"uvarint"},{"name":"kind","encoding":"uvarint"},{"name":"tokens","encoding":"token span: start, length"},{"name":"expr","encoding":"nullable token span"},{"name":"body","encoding":"nullable token span"},{"name":"else","encoding":"nullable token span"}]},
{"name":"TypeInfo","fields":[{"name":"kind","encoding":"uvarint"},{"name":"name","encoding":"byte span: start, length"},{"name":"decl","encoding":"uvarint"},{"name":"symbol","encoding":"nullable uvarint"},{"name":"alias","encoding":"uvarint boolean"},{"name":"type","encoding":"nullable token span"},{"name":"length","encoding":"nullable token span"},{"name":"key","encoding":"nullable token span"},{"name":"element","encoding":"nullable token span"}]},
{"name":"TypeFields","fields":[{"name":"type_index","encoding":"uvarint"},{"name":"fields","encoding":"counted Field"}]},
{"name":"TypeIface","fields":[{"name":"type_index","encoding":"uvarint"},{"name":"embeds","encoding":"counted token spans"},{"name":"methods","encoding":"counted name_tok, params Field list, results Field list"}]},
{"name":"TypeFuncSig","fields":[{"name":"type_index","encoding":"uvarint"},{"name":"params","encoding":"counted Field"},{"name":"results","encoding":"counted Field"}]},
{"name":"MethodInfo","fields":[{"name":"name_tok","encoding":"uvarint"},{"name":"type_index","encoding":"uvarint"},{"name":"symbol","encoding":"uvarint"},{"name":"func_index","encoding":"uvarint"},{"name":"pointer","encoding":"uvarint boolean"}]},
{"name":"TypeRef","fields":[{"name":"owner_kind","encoding":"uvarint"},{"name":"owner_index","encoding":"uvarint"},{"name":"kind","encoding":"uvarint"},{"name":"token","encoding":"uvarint"},{"name":"base_tok","encoding":"uvarint"},{"name":"dot_tok","encoding":"uvarint"},{"name":"package","encoding":"nullable uvarint"},{"name":"symbol","encoding":"nullable uvarint"}]},
{"name":"LocalDecl","fields":[{"name":"func_index","encoding":"uvarint"},{"name":"kind","encoding":"uvarint"},{"name":"name","encoding":"byte span: start, length"},{"name":"token","encoding":"uvarint"},{"name":"scope","encoding":"nullable uvarint"},{"name":"value_index","encoding":"uvarint"},{"name":"alias","encoding":"uvarint boolean"},{"name":"type","encoding":"nullable token span"},{"name":"value","encoding":"nullable token span"},{"name":"values","encoding":"counted ExprSpan"}]},
{"name":"IndexExpr","fields":[{"name":"owner_kind","encoding":"uvarint"},{"name":"owner_index","encoding":"uvarint"},{"name":"tokens","encoding":"token span"},{"name":"base","encoding":"token span"},{"name":"open_tok","encoding":"uvarint"},{"name":"close_tok","encoding":"uvarint"},{"name":"index","encoding":"token span"}]},
{"name":"CompositeExpr","fields":[{"name":"owner_kind","encoding":"uvarint"},{"name":"owner_index","encoding":"uvarint"},{"name":"tokens","encoding":"token span"},{"name":"type","encoding":"token span"},{"name":"open_tok","encoding":"uvarint"},{"name":"close_tok","encoding":"uvarint"},{"name":"elements","encoding":"counted ExprSpan"}]},
{"name":"Assignment","fields":[{"name":"func_index","encoding":"uvarint"},{"name":"kind","encoding":"uvarint"},{"name":"tokens","encoding":"token span"},{"name":"op_tok","encoding":"uvarint"},{"name":"left","encoding":"token span"},{"name":"right","encoding":"token span"},{"name":"targets","encoding":"counted ExprSpan"},{"name":"values","encoding":"counted ExprSpan"}]},
{"name":"Return","fields":[{"name":"func_index","encoding":"uvarint"},{"name":"tokens","encoding":"token span"},{"name":"values","encoding":"counted ExprSpan"}]},
{"name":"Call","fields":[{"name":"owner_kind","encoding":"uvarint"},{"name":"owner_index","encoding":"uvarint"},{"name":"kind","encoding":"uvarint"},{"name":"callee_tok","encoding":"uvarint"},{"name":"base_tok","encoding":"uvarint"},{"name":"dot_tok","encoding":"uvarint"},{"name":"arguments","encoding":"token span"},{"name":"args","encoding":"counted ExprSpan"}]},
{"name":"NameRef","fields":[{"name":"owner_kind","encoding":"uvarint"},{"name":"owner_index","encoding":"uvarint"},{"name":"kind","encoding":"uvarint"},{"name":"token","encoding":"uvarint"},{"name":"index","encoding":"nullable uvarint"},{"name":"package","encoding":"nullable uvarint"}]},
{"name":"Selector","fields":[{"name":"owner_kind","encoding":"uvarint"},{"name":"owner_index","encoding":"uvarint"},{"name":"kind","encoding":"uvarint"},{"name":"base_tok","encoding":"uvarint"},{"name":"dot_tok","encoding":"uvarint"},{"name":"name_tok","encoding":"uvarint"},{"name":"base_kind","encoding":"uvarint"},{"name":"base_index","encoding":"nullable uvarint"},{"name":"base_package","encoding":"nullable uvarint"},{"name":"package","encoding":"nullable uvarint"},{"name":"symbol","encoding":"nullable uvarint"}]},
{"name":"PackageInfo","fields":[{"name":"name","encoding":"length-prefixed bytes"},{"name":"import_path","encoding":"length-prefixed bytes"},{"name":"graph_key_a","encoding":"u32"},{"name":"graph_key_b","encoding":"u32"},{"name":"source_key_a","encoding":"u32"},{"name":"source_key_b","encoding":"u32"},{"name":"text","encoding":"byte span: start, length"},{"name":"tokens","encoding":"token span: start, length"},{"name":"decls","encoding":"table span: start, length"},{"name":"funcs","encoding":"table span: start, length"}]},
{"name":"RTGAssemblySource","fields":[{"name":"path","encoding":"length-prefixed bytes"},{"name":"source","encoding":"length-prefixed bytes"}]},
{"name":"RTGAssemblyBinding","fields":[{"name":"func_index","encoding":"uvarint"},{"name":"source_index","encoding":"uvarint"},{"name":"entry_index","encoding":"uvarint"},{"name":"evaluated_code","encoding":"length-prefixed bytes"}]},
{"name":"RTGAssembly","fields":[{"name":"sources","encoding":"counted RTGAssemblySource"},{"name":"bindings","encoding":"counted RTGAssemblyBinding"}]},
{"name":"ForeignProgram","fields":[{"name":"global","encoding":"uvarint source offset"},{"name":"state","encoding":"uvarint enum: unit_bytes=1, unit_entrypoint=2, artifact_bytes=3, artifact_entrypoint=4"},{"name":"payload","encoding":"length-prefixed bytes"},{"name":"entry_offset","encoding":"uvarint"}]}
]
}