diff --git a/src/lang/wasm.ts b/src/lang/wasm.ts index fe83338e3..fcdaf654d 100644 --- a/src/lang/wasm.ts +++ b/src/lang/wasm.ts @@ -93,12 +93,26 @@ export type { Solid } from '../wasm-lib/kcl/bindings/Solid' export type { KclValue } from '../wasm-lib/kcl/bindings/KclValue' export type { ExtrudeSurface } from '../wasm-lib/kcl/bindings/ExtrudeSurface' +/** + * The first two items are the start and end points (byte offsets from the start of the file). + * The third item is whether the source range belongs to the 'main' file, i.e., the file currently + * being rendered/displayed in the editor (TODO we need to handle modules better in the frontend). + */ export type SourceRange = [number, number, boolean] +/** + * Convert a SourceRange as used inside the KCL interpreter into the above one for use in the + * frontend (essentially we're eagerly checking whether the frontend should care about the SourceRange + * so as not to expose details of the interpreter's current representation of module ids throughout + * the frontend). + */ export function sourceRangeFromRust(s: RustSourceRange): SourceRange { return [s[0], s[1], s[2] === 0] } +/** + * Create a default SourceRange for testing or as a placeholder. + */ export function defaultSourceRange(): SourceRange { return [0, 0, true] } @@ -164,6 +178,10 @@ export class ParseResult { } } +/** + * Parsing was successful. There is guaranteed to be an AST and no fatal errors. There may or may + * not be warnings or non-fatal errors. + */ class SuccessParseResult extends ParseResult { program: Node