Comment opaue type violations
This commit is contained in:
		
							parent
							
								
									bc86988453
								
							
						
					
					
						commit
						05ce6d2872
					
				|  | @ -17,68 +17,69 @@ import { tagged, tag } from "./types"; | |||
| // This file is here to compensate for genType not fully recursively converting types
 | ||||
| 
 | ||||
| // Raw rescript types.
 | ||||
| export type rescriptExport = | ||||
|   | 0 // EvVoid
 | ||||
|   | { | ||||
|       TAG: 0; // EvArray
 | ||||
|       _0: rescriptExport[]; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 1; // EvString
 | ||||
|       _0: string[]; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 2; // EvBool
 | ||||
|       _0: boolean; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 3; // EvCall
 | ||||
|       _0: string; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 4; // EvDistribution
 | ||||
|       _0: rescriptDist; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 5; // EvLambda
 | ||||
|       _0: lambdaValue; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 6; // EvNumber
 | ||||
|       _0: number; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 7; // EvRecord
 | ||||
|       _0: { [key: string]: rescriptExport }; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 8; // EvString
 | ||||
|       _0: string; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 9; // EvSymbol
 | ||||
|       _0: string; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 10; // EvDate
 | ||||
|       _0: Date; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 11; // EvTimeDuration
 | ||||
|       _0: number; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 12; // EvDeclaration
 | ||||
|       _0: rescriptLambdaDeclaration; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 13; // EvTypeIdentifier
 | ||||
|       _0: string; | ||||
|     } | ||||
|   | { | ||||
|       TAG: 14; // EvModule
 | ||||
|       _0: { [key: string]: rescriptExport }; | ||||
|     }; | ||||
| // Umur: Rescript expression values are opaque!
 | ||||
| // export type rescriptExport =
 | ||||
| //   | 0 // EvVoid
 | ||||
| //   | {
 | ||||
| //       TAG: 0; // EvArray
 | ||||
| //       _0: rescriptExport[];
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 1; // EvString
 | ||||
| //       _0: string[];
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 2; // EvBool
 | ||||
| //       _0: boolean;
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 3; // EvCall
 | ||||
| //       _0: string;
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 4; // EvDistribution
 | ||||
| //       _0: rescriptDist;
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 5; // EvLambda
 | ||||
| //       _0: lambdaValue;
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 6; // EvNumber
 | ||||
| //       _0: number;
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 7; // EvRecord
 | ||||
| //       _0: { [key: string]: rescriptExport };
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 8; // EvString
 | ||||
| //       _0: string;
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 9; // EvSymbol
 | ||||
| //       _0: string;
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 10; // EvDate
 | ||||
| //       _0: Date;
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 11; // EvTimeDuration
 | ||||
| //       _0: number;
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 12; // EvDeclaration
 | ||||
| //       _0: rescriptLambdaDeclaration;
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 13; // EvTypeIdentifier
 | ||||
| //       _0: string;
 | ||||
| //     }
 | ||||
| //   | {
 | ||||
| //       TAG: 14; // EvModule
 | ||||
| //       _0: { [key: string]: rescriptExport };
 | ||||
| //     };
 | ||||
| 
 | ||||
| type rescriptDist = | ||||
|   | { TAG: 0; _0: rescriptPointSetDist } | ||||
|  | @ -116,86 +117,88 @@ type rescriptDeclarationArg = | |||
|       max: Date; | ||||
|     }; | ||||
| 
 | ||||
| export type squiggleExpression = | ||||
|   | tagged<"symbol", string> | ||||
|   | tagged<"string", string> | ||||
|   | tagged<"call", string> | ||||
|   | tagged<"lambda", lambdaValue> | ||||
|   | tagged<"array", squiggleExpression[]> | ||||
|   | tagged<"arraystring", string[]> | ||||
|   | tagged<"boolean", boolean> | ||||
|   | tagged<"distribution", Distribution> | ||||
|   | tagged<"number", number> | ||||
|   | tagged<"date", Date> | ||||
|   | tagged<"timeDuration", number> | ||||
|   | tagged<"lambdaDeclaration", lambdaDeclaration> | ||||
|   | tagged<"record", { [key: string]: squiggleExpression }> | ||||
|   | tagged<"type", { [key: string]: squiggleExpression }> | ||||
|   | tagged<"typeIdentifier", string> | ||||
|   | tagged<"module", { [key: string]: squiggleExpression }> | ||||
|   | tagged<"void", string>; | ||||
| // Umur: Squiggle expressions are opaque!
 | ||||
| // export type squiggleExpression =
 | ||||
| //   | tagged<"symbol", string>
 | ||||
| //   | tagged<"string", string>
 | ||||
| //   | tagged<"call", string>
 | ||||
| //   | tagged<"lambda", lambdaValue>
 | ||||
| //   | tagged<"array", squiggleExpression[]>
 | ||||
| //   | tagged<"arraystring", string[]>
 | ||||
| //   | tagged<"boolean", boolean>
 | ||||
| //   | tagged<"distribution", Distribution>
 | ||||
| //   | tagged<"number", number>
 | ||||
| //   | tagged<"date", Date>
 | ||||
| //   | tagged<"timeDuration", number>
 | ||||
| //   | tagged<"lambdaDeclaration", lambdaDeclaration>
 | ||||
| //   | tagged<"record", { [key: string]: squiggleExpression }>
 | ||||
| //   | tagged<"type", { [key: string]: squiggleExpression }>
 | ||||
| //   | tagged<"typeIdentifier", string>
 | ||||
| //   | tagged<"module", { [key: string]: squiggleExpression }>
 | ||||
| //   | tagged<"void", string>;
 | ||||
| 
 | ||||
| export { lambdaValue }; | ||||
| 
 | ||||
| export function convertRawToTypescript( | ||||
|   result: rescriptExport, | ||||
|   environment: environment | ||||
| ): squiggleExpression { | ||||
|   if (typeof result === "number") { | ||||
|     // EvVoid
 | ||||
|     return tag("void", ""); | ||||
|   } | ||||
|   switch (result.TAG) { | ||||
|     case 0: // EvArray
 | ||||
|       return tag( | ||||
|         "array", | ||||
|         result._0.map((x) => convertRawToTypescript(x, environment)) | ||||
|       ); | ||||
|     case 1: // EvArrayString
 | ||||
|       return tag("arraystring", result._0); | ||||
|     case 2: // EvBool
 | ||||
|       return tag("boolean", result._0); | ||||
|     case 3: // EvCall
 | ||||
|       return tag("call", result._0); | ||||
|     case 4: // EvDistribution
 | ||||
|       return tag( | ||||
|         "distribution", | ||||
|         new Distribution( | ||||
|           convertRawDistributionToGenericDist(result._0), | ||||
|           environment | ||||
|         ) | ||||
|       ); | ||||
|     case 5: // EvDistribution
 | ||||
|       return tag("lambda", result._0); | ||||
|     case 6: // EvNumber
 | ||||
|       return tag("number", result._0); | ||||
|     case 7: // EvRecord
 | ||||
|       return tag( | ||||
|         "record", | ||||
|         _.mapValues(result._0, (x) => convertRawToTypescript(x, environment)) | ||||
|       ); | ||||
|     case 8: // EvString
 | ||||
|       return tag("string", result._0); | ||||
|     case 9: // EvSymbol
 | ||||
|       return tag("symbol", result._0); | ||||
|     case 10: // EvDate
 | ||||
|       return tag("date", result._0); | ||||
|     case 11: // EvTimeDuration
 | ||||
|       return tag("number", result._0); | ||||
|     case 12: // EvDeclaration
 | ||||
|       return tag("lambdaDeclaration", { | ||||
|         fn: result._0.fn, | ||||
|         args: result._0.args.map(convertDeclaration), | ||||
|       }); | ||||
|     case 13: // EvSymbol
 | ||||
|       return tag("typeIdentifier", result._0); | ||||
|     case 14: // EvModule
 | ||||
|       return tag( | ||||
|         "module", | ||||
|         _.mapValues(result._0, (x) => convertRawToTypescript(x, environment)) | ||||
|       ); | ||||
|   } | ||||
| } | ||||
| // Umur: Opaque type no conversion!
 | ||||
| // export function convertRawToTypescript(
 | ||||
| //   result: rescriptExport,
 | ||||
| //   environment: environment
 | ||||
| // ): squiggleExpression {
 | ||||
| //   if (typeof result === "number") {
 | ||||
| //     // EvVoid
 | ||||
| //     return tag("void", "");
 | ||||
| //   }
 | ||||
| //   switch (result.TAG) {
 | ||||
| //     case 0: // EvArray
 | ||||
| //       return tag(
 | ||||
| //         "array",
 | ||||
| //         result._0.map((x) => convertRawToTypescript(x, environment))
 | ||||
| //       );
 | ||||
| //     case 1: // EvArrayString
 | ||||
| //       return tag("arraystring", result._0);
 | ||||
| //     case 2: // EvBool
 | ||||
| //       return tag("boolean", result._0);
 | ||||
| //     case 3: // EvCall
 | ||||
| //       return tag("call", result._0);
 | ||||
| //     case 4: // EvDistribution
 | ||||
| //       return tag(
 | ||||
| //         "distribution",
 | ||||
| //         new Distribution(
 | ||||
| //           convertRawDistributionToGenericDist(result._0),
 | ||||
| //           environment
 | ||||
| //         )
 | ||||
| //       );
 | ||||
| //     case 5: // EvDistribution
 | ||||
| //       return tag("lambda", result._0);
 | ||||
| //     case 6: // EvNumber
 | ||||
| //       return tag("number", result._0);
 | ||||
| //     case 7: // EvRecord
 | ||||
| //       return tag(
 | ||||
| //         "record",
 | ||||
| //         _.mapValues(result._0, (x) => convertRawToTypescript(x, environment))
 | ||||
| //       );
 | ||||
| //     case 8: // EvString
 | ||||
| //       return tag("string", result._0);
 | ||||
| //     case 9: // EvSymbol
 | ||||
| //       return tag("symbol", result._0);
 | ||||
| //     case 10: // EvDate
 | ||||
| //       return tag("date", result._0);
 | ||||
| //     case 11: // EvTimeDuration
 | ||||
| //       return tag("number", result._0);
 | ||||
| //     case 12: // EvDeclaration
 | ||||
| //       return tag("lambdaDeclaration", {
 | ||||
| //         fn: result._0.fn,
 | ||||
| //         args: result._0.args.map(convertDeclaration),
 | ||||
| //       });
 | ||||
| //     case 13: // EvSymbol
 | ||||
| //       return tag("typeIdentifier", result._0);
 | ||||
| //     case 14: // EvModule
 | ||||
| //       return tag(
 | ||||
| //         "module",
 | ||||
| //         _.mapValues(result._0, (x) => convertRawToTypescript(x, environment))
 | ||||
| //       );
 | ||||
| //   }
 | ||||
| // }
 | ||||
| 
 | ||||
| function convertDeclaration( | ||||
|   declarationArg: rescriptDeclarationArg | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user