diff --git a/src/ast.ts b/src/ast.ts index 44a40d6..1ed39e6 100644 --- a/src/ast.ts +++ b/src/ast.ts @@ -319,9 +319,17 @@ export function prettyPrint(ast: AST, indent = 0): string { return `${params} \\ ${body}` } - case 'record-access': + case 'record-access': { const field = needsQuotes(ast.field) ? `${JSON.stringify(ast.field)}` : ast.field; - return `${prettyPrint(ast.record, indent)}.${field}`; + const inner = prettyPrint(ast.record, indent); + const needsParens = ast.record.kind === 'apply' || + ast.record.kind === 'lambda' || + ast.record.kind === 'match' || + ast.record.kind === 'let' || + ast.record.kind === 'rebind'; + return needsParens ? `(${inner}).${field}` : `${inner}.${field}`; + // return `${prettyPrint(ast.record, indent)}.${field}`; + } case 'record-update': { const updates = Object.entries(ast.updates)