diff --git a/src/ast.ts b/src/ast.ts index 976d39a..a653112 100644 --- a/src/ast.ts +++ b/src/ast.ts @@ -279,7 +279,9 @@ export function prettyPrint(ast: AST, indent = 0): string { ? `...${prettyPrint(entry.expr, indent + 1)}` : `${needsQuotes(entry.key) ? JSON.stringify(entry.key) : entry.key} = ${prettyPrint(entry.value, indent + 1)}` ); - if (parts.length <= 1) return `{ ${parts.join(', ')} }`; + const oneLine = `{ ${parts.join(', ')} }`; + if (oneLine.length <= 60 || parts.length <= 1) return oneLine; + // if (parts.length <= 1) return `{ ${parts.join(', ')} }`; const inner = parts.map(p => `${' '.repeat(indent + 1)}${p}`).join(',\n'); return `{\n${inner}\n${i}}`; diff --git a/src/runtime-js.ts b/src/runtime-js.ts index 6235707..4b1ba41 100644 --- a/src/runtime-js.ts +++ b/src/runtime-js.ts @@ -112,6 +112,7 @@ export const _rt = { let obj: any = store[path[0]]; for (let i = 1; i < path.length; i++) { if (obj === undefined || obj === null) return { _tag: 'None' }; + if (!Object.prototype.hasOwnProperty.call(obj, path[i])) return { _tag: 'None' }; obj = obj[path[i]]; } return obj === undefined ? { _tag: 'None' } : { _tag: 'Some', _0: obj };