Add MessagePack support to Typescript. C# Is still unsupported

This commit is contained in:
K35
2022-01-10 20:17:25 +00:00
parent 6236a14377
commit 491e1ac052
6 changed files with 34 additions and 16 deletions

View File

@ -2,7 +2,7 @@ import type { Parsed, StatementNode } from "./parser";
import dbg from "debug";
const log = dbg("app");
const builtin = ["number", "string", "boolean"];
const BUILTIN = ["number", "string", "boolean"];
export class IRError extends Error {
constructor(public statement: StatementNode, message: string) {
@ -68,6 +68,7 @@ export type IR = {
export default function get_ir(parsed: Parsed): IR {
log("Generatie IR from parse output");
let builtin = [...BUILTIN];
let defined: string[] = [];
let types: string[] = [];
let enums: string[] = [];
@ -148,23 +149,23 @@ export default function get_ir(parsed: Parsed): IR {
}
let last = -1;
let values = statement.values.map<EnumValueDefinition>((valueS) => {
let values = statement.values.map<EnumValueDefinition>((values) => {
let value = last + 1;
if (valueS.value) {
if (valueS.value <= last) {
if (values.value) {
if (values.value <= last) {
throw new IRError(
statement,
"Enum value must be larger than the previous one!"
);
} else {
value = valueS.value;
value = values.value;
}
}
last = value;
return {
name: valueS.name,
name: values.name,
value,
};
});
@ -282,6 +283,9 @@ export default function get_ir(parsed: Parsed): IR {
]);
} else if(statement.type == "define") {
options[statement.key] = statement.value;
if(statement.key == "use_messagepack" && statement.value == "true") {
builtin.push("bytes");
}
} else {
throw new IRError(statement, "Invalid statement!");
}