From ce1722e9205c5fc1d43a271aecdc6215ec41e492 Mon Sep 17 00:00:00 2001 From: Christoph Knittel Date: Fri, 10 Jun 2022 16:57:03 +0200 Subject: [PATCH 1/2] Printer: auto-pun record fields --- src/res_printer.ml | 3 +-- tests/conversion/reason/expected/bracedJsx.res.txt | 2 +- tests/conversion/reason/expected/braces.res.txt | 2 +- tests/printer/expr/expected/record.res.txt | 6 +++--- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/res_printer.ml b/src/res_printer.ml index f67fe12f..345d7c6c 100644 --- a/src/res_printer.ml +++ b/src/res_printer.ml @@ -4826,8 +4826,7 @@ and printRecordRow (lbl, expr) cmtTbl punningAllowed = match expr.pexp_desc with | Pexp_ident({txt = Lident key; loc = keyLoc}) when ( punningAllowed && - Longident.last lbl.txt = key && - lbl.loc.loc_start.pos_cnum == keyLoc.loc_start.pos_cnum + Longident.last lbl.txt = key ) -> (* print punned field *) printLidentPath lbl cmtTbl; diff --git a/tests/conversion/reason/expected/bracedJsx.res.txt b/tests/conversion/reason/expected/bracedJsx.res.txt index 27f93d34..b49e82fe 100644 --- a/tests/conversion/reason/expected/bracedJsx.res.txt +++ b/tests/conversion/reason/expected/bracedJsx.res.txt @@ -91,7 +91,7 @@ let make = () => { ], ), } - | SetValue(input) => {...state, input: input} + | SetValue(input) => {...state, input} } , {history: [], input: ""}) diff --git a/tests/conversion/reason/expected/braces.res.txt b/tests/conversion/reason/expected/braces.res.txt index cf164c93..0a3e335d 100644 --- a/tests/conversion/reason/expected/braces.res.txt +++ b/tests/conversion/reason/expected/braces.res.txt @@ -20,5 +20,5 @@ let getDailyNewCases = x => | Pair({prevRecord, record}) => let confirmed = record.confirmed - prevRecord.confirmed let deaths = record.deaths - prevRecord.deaths - {confirmed: confirmed, deaths: deaths} + {confirmed, deaths} } diff --git a/tests/printer/expr/expected/record.res.txt b/tests/printer/expr/expected/record.res.txt index 576cd48c..cdadb19a 100644 --- a/tests/printer/expr/expected/record.res.txt +++ b/tests/printer/expr/expected/record.res.txt @@ -45,9 +45,9 @@ let r = {a} // actually not a record, just an expression in braces let r = {a, b} let r = {a, b, c: 42} let r = {A.a, b} -let r = {A.a: a, b} -let r = {a: a, b} -let r = {a, b: b} +let r = {A.a, b} +let r = {a, b} +let r = {a, b} // Punning + comments let r = { From 1269ae47ca35a2019774d296151bde919e1222a8 Mon Sep 17 00:00:00 2001 From: Christoph Knittel Date: Thu, 16 Jun 2022 07:35:16 +0200 Subject: [PATCH 2/2] Add test cases for single-element records --- tests/printer/expr/expected/record.res.txt | 2 ++ tests/printer/expr/record.res | 2 ++ 2 files changed, 4 insertions(+) diff --git a/tests/printer/expr/expected/record.res.txt b/tests/printer/expr/expected/record.res.txt index cdadb19a..d639689d 100644 --- a/tests/printer/expr/expected/record.res.txt +++ b/tests/printer/expr/expected/record.res.txt @@ -42,6 +42,8 @@ let user = {name: {(ceo.name: string)}} // Punning let r = {a} // actually not a record, just an expression in braces +let r = {a: a} // single-element record, not punned +let r = {A.a: a} // single-element record, not punned let r = {a, b} let r = {a, b, c: 42} let r = {A.a, b} diff --git a/tests/printer/expr/record.res b/tests/printer/expr/record.res index 4cb993c9..248a46ff 100644 --- a/tests/printer/expr/record.res +++ b/tests/printer/expr/record.res @@ -32,6 +32,8 @@ let user = {name: {(ceo.name: string)}} // Punning let r = {a} // actually not a record, just an expression in braces +let r = {a: a} // single-element record, not punned +let r = {A.a: a} // single-element record, not punned let r = {a, b} let r = {a, b, c: 42} let r = {A.a, b}