fix(air-parser): allow non used streams in validator (#360)

Validator checks that stream used in `canon` is populated by a value in a supplied script. This PR removes this check, because it's useful for code generation.
This commit is contained in:
Mike Voronov 2022-10-10 15:51:03 +03:00 committed by GitHub
parent 910f1665eb
commit 01bbca72c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 1 deletions

View File

@ -237,6 +237,21 @@ fn canon_empty_stream() {
assert_eq!(actual_trace, expected_trace);
}
#[test]
fn canon_empty_not_writable_stream() {
let peer_id = "peer_id";
let mut vm = create_avm(echo_call_service(), peer_id);
let script = f!(r#"
(canon "{peer_id}" $stream #canon_stream)
"#);
let result = checked_call_vm!(vm, <_>::default(), &script, "", "");
let actual_trace = trace_from_result(&result);
let expected_trace = vec![executed_state::canon(vec![])];
assert_eq!(actual_trace, expected_trace);
}
#[test]
fn canon_over_later_defined_stream() {
let vm_peer_id_1 = "vm_peer_id_1";

View File

@ -79,8 +79,9 @@ impl<'i> VariableValidator<'i> {
};
}
// canon doesn't check stream to be defined, because empty streams are considered to be emtpy
// and it's useful for code generation
pub(super) fn met_canon(&mut self, canon: &Canon<'i>, span: Span) {
self.met_variable_name(canon.stream.name, span);
self.met_variable_name_definition(canon.canon_stream.name, span);
}