ISLE: add support for multi-extractors and multi-constructors. (#4908)

* ISLE: add support for multi-extractors and multi-constructors.

This support allows for rules that process multiple matching values per
extractor call on the left-hand side, and as a result, can produce
multiple values from the constructor whose body they define.

This is useful in situations where we are matching on an input data
structure that can have multiple "nodes" for a given value or ID, for
example in an e-graph.

* Review feedback: all multi-ctors and multi-etors return iterators; no `Vec` case.

* Add additional warning suppressions to generated-code toplevels to be consistent with new islec output.
This commit is contained in:
Chris Fallin
2022-09-21 16:36:50 -07:00
committed by GitHub
parent b167172715
commit b652ce2fb1
13 changed files with 455 additions and 88 deletions

View File

@@ -4,6 +4,6 @@
// mod generated_code;` trick either.
#![allow(dead_code, unreachable_code, unreachable_patterns)]
#![allow(unused_imports, unused_variables, non_snake_case, unused_mut)]
#![allow(irrefutable_let_patterns)]
#![allow(irrefutable_let_patterns, unused_assignments, non_camel_case_types)]
include!(concat!(env!("ISLE_DIR"), "/isle_aarch64.rs"));

View File

@@ -4,6 +4,6 @@
// mod generated_code;` trick either.
#![allow(dead_code, unreachable_code, unreachable_patterns)]
#![allow(unused_imports, unused_variables, non_snake_case, unused_mut)]
#![allow(irrefutable_let_patterns)]
#![allow(irrefutable_let_patterns, unused_assignments, non_camel_case_types)]
include!(concat!(env!("ISLE_DIR"), "/isle_s390x.rs"));

View File

@@ -4,6 +4,6 @@
// mod generated_code;` trick either.
#![allow(dead_code, unreachable_code, unreachable_patterns)]
#![allow(unused_imports, unused_variables, non_snake_case, unused_mut)]
#![allow(irrefutable_let_patterns)]
#![allow(irrefutable_let_patterns, unused_assignments, non_camel_case_types)]
include!(concat!(env!("ISLE_DIR"), "/isle_x64.rs"));