From 09ad33bf866db501d93c85a109f695c79fcb9c7e Mon Sep 17 00:00:00 2001 From: Mingun Date: Wed, 17 Apr 2024 21:28:32 +0500 Subject: [PATCH] formats_err: add test for leaking enums Tests for https://github.com/kaitai-io/kaitai_struct/issues/534 Adds new failing test in compiler: [info] - imports_enum_leaking *** FAILED *** [info] [] [info] did not equal [info] [imports/enum_two.ksy: /seq/0/enum: [info] error: unable to find type 'enum_one', searching from 'enum_two' [info] [info] imports/enum_two.ksy: /instances/instance_one/enum: [info] error: unable to find type 'enum_one', searching from 'enum_two' [info] ] (SimpleMatchers.scala:34) --- formats_err/imports/enum_one.ksy | 10 ++++++++++ formats_err/imports/enum_two.ksy | 16 ++++++++++++++++ formats_err/imports_enum_leaking.ksy | 25 +++++++++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 formats_err/imports/enum_one.ksy create mode 100644 formats_err/imports/enum_two.ksy create mode 100644 formats_err/imports_enum_leaking.ksy diff --git a/formats_err/imports/enum_one.ksy b/formats_err/imports/enum_one.ksy new file mode 100644 index 000000000..0a3229638 --- /dev/null +++ b/formats_err/imports/enum_one.ksy @@ -0,0 +1,10 @@ +# This is a file that is imported in imports_enum_leaking.ksy +meta: + id: enum_one +seq: + - id: something + type: u1 + enum: one +enums: + one: + 0: zero diff --git a/formats_err/imports/enum_two.ksy b/formats_err/imports/enum_two.ksy new file mode 100644 index 000000000..9fe016b84 --- /dev/null +++ b/formats_err/imports/enum_two.ksy @@ -0,0 +1,16 @@ +# This is a file that is imported in imports_enum_leaking.ksy +meta: + id: enum_two + # Note: missing import of `enum_one` +seq: + - id: one + type: u1 + enum: enum_one::one # Note: `enum_one` is not imported in this spec, so this should cause a compile error +instances: + # Enum resolution in value instances significantly different from enum resolution in other attributes + instance_one: + value: 0 + enum: enum_one::one # Note: `enum_one` is not imported in this spec, so this should cause a compile error +enums: + two: + 0: zero diff --git a/formats_err/imports_enum_leaking.ksy b/formats_err/imports_enum_leaking.ksy new file mode 100644 index 000000000..8135894d4 --- /dev/null +++ b/formats_err/imports_enum_leaking.ksy @@ -0,0 +1,25 @@ +# imports/enum_two.ksy: /seq/0/enum: +# error: unable to find type 'enum_one', searching from 'enum_two' +# +# imports/enum_two.ksy: /instances/instance_one/enum: +# error: unable to find type 'enum_one', searching from 'enum_two' +# +meta: + id: imports_enum_leaking + imports: + - imports/enum_one + - imports/enum_two +seq: + - id: another_one + type: u1 + enum: enum_one::one + - id: another_two + type: u1 + enum: enum_two::two +instances: + instance_one: + value: 0 + enum: enum_one::one + instance_two: + value: 0 + enum: enum_two::two