Add MessagePack support to Typescript. C# Is still unsupported
This commit is contained in:
16
src/ir.ts
16
src/ir.ts
@ -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!");
|
||||
}
|
||||
|
Reference in New Issue
Block a user