fix: intern a sequence or choice of a single element the same as the element itself
This commit is contained in:
parent
3da7deedd8
commit
252e2a4bc0
3 changed files with 130 additions and 13 deletions
|
|
@ -5011,7 +5011,7 @@ fn test_grammar_with_aliased_literal_query() {
|
|||
let (parser_name, parser_code) = generate_parser_for_grammar(
|
||||
r#"
|
||||
{
|
||||
"name": "test",
|
||||
"name": "test_grammar_with_aliased_literal_query",
|
||||
"rules": {
|
||||
"source": {
|
||||
"type": "REPEAT",
|
||||
|
|
@ -5071,10 +5071,72 @@ fn test_grammar_with_aliased_literal_query() {
|
|||
&language,
|
||||
r#"
|
||||
(compound_statement "}" @bracket1)
|
||||
(expansion) @bracket2
|
||||
"#,
|
||||
);
|
||||
|
||||
assert!(query.is_ok());
|
||||
|
||||
let query = Query::new(
|
||||
&language,
|
||||
r#"
|
||||
(expansion "}" @bracket2)
|
||||
"#,
|
||||
);
|
||||
|
||||
assert!(query.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_query_with_seq_or_choice_of_one_rule() {
|
||||
// module.exports = grammar({
|
||||
// name: 'test',
|
||||
//
|
||||
// rules: {
|
||||
// source: $ => choice($._seq, $._choice),
|
||||
//
|
||||
// _seq: $ => seq("hi"),
|
||||
// _choice: $ => choice("bye"),
|
||||
// },
|
||||
// });
|
||||
|
||||
let (parser_name, parser_code) = generate_parser_for_grammar(
|
||||
r#"
|
||||
{
|
||||
"name": "test_query_with_seq_or_choice_of_one_rule",
|
||||
"rules": {
|
||||
"source": {
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
{ "type": "SYMBOL", "name": "_seq" },
|
||||
{ "type": "SYMBOL", "name": "_choice" }
|
||||
]
|
||||
},
|
||||
"_seq": {
|
||||
"type": "SEQ",
|
||||
"members": [{ "type": "STRING", "value": "hi" }]
|
||||
},
|
||||
"_choice": {
|
||||
"type": "CHOICE",
|
||||
"members": [ { "type": "STRING", "value": "bye" } ]
|
||||
}
|
||||
},
|
||||
"extras": [{ "type": "PATTERN", "value": "\\s" }]
|
||||
}
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let language = get_test_language(&parser_name, &parser_code, None);
|
||||
|
||||
let query = Query::new(
|
||||
&language,
|
||||
r#"
|
||||
"hi" @seq
|
||||
"bye" @choice
|
||||
"#,
|
||||
);
|
||||
|
||||
assert!(query.is_ok());
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue