From 133df303a0e1ad9e6f6d97cb4be16431db2bbd58 Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Sat, 15 Apr 2023 17:12:17 -0300 Subject: [PATCH 1/2] try_expression: allow expression --- grammar.js | 5 +---- test/corpus/expressions.txt | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/grammar.js b/grammar.js index c1ed37e..ad6418a 100644 --- a/grammar.js +++ b/grammar.js @@ -718,10 +718,7 @@ module.exports = grammar({ try_expression: $ => seq( 'try', - choice( - $.block, - $.primary_expression, - ), + $.expression, 'catch', '{', repeat($.switch_match), diff --git a/test/corpus/expressions.txt b/test/corpus/expressions.txt index 0af7876..c4e88a2 100644 --- a/test/corpus/expressions.txt +++ b/test/corpus/expressions.txt @@ -1273,6 +1273,12 @@ try switch foo() { | Js.Exn.Error(obj) => "error" } +try if true { + call() +} catch { +| Not_found => false +} + --- (source_file @@ -1320,7 +1326,17 @@ try switch foo() { (module_identifier)) (variant_identifier)) (formal_parameters (value_identifier))) - (sequence_expression (expression_statement (string (string_fragment)))))))) + (sequence_expression (expression_statement (string (string_fragment))))))) + + (expression_statement + (try_expression + (if_expression (true) + (block + (expression_statement + (call_expression (value_identifier) (arguments))))) + (switch_match + (variant_pattern (variant_identifier)) + (sequence_expression (expression_statement (false))))))) =========================================== Mutation expressions From 68300b65ec95d20a0b412e4d3571df4cf0fc903c Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Sat, 15 Apr 2023 17:17:13 -0300 Subject: [PATCH 2/2] update example --- test/corpus/expressions.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/corpus/expressions.txt b/test/corpus/expressions.txt index c4e88a2..53dadd1 100644 --- a/test/corpus/expressions.txt +++ b/test/corpus/expressions.txt @@ -1273,7 +1273,7 @@ try switch foo() { | Js.Exn.Error(obj) => "error" } -try if true { +try for i in 0 to 10 { call() } catch { | Not_found => false @@ -1330,7 +1330,7 @@ try if true { (expression_statement (try_expression - (if_expression (true) + (for_expression (value_identifier) (number) (number) (block (expression_statement (call_expression (value_identifier) (arguments)))))