From d7bdadcf997230e2761d26a28aaa0327ce715c89 Mon Sep 17 00:00:00 2001 From: Christopher Albert Date: Sat, 28 Mar 2026 16:56:06 +0100 Subject: [PATCH] test: add issue363 regression example --- examples/Makefile | 1 + .../issue363_missing_only_import/Makefile | 9 +++++++++ .../Makefile.meson | 9 +++++++++ .../global_mod.f90 | 10 ++++++++++ examples/issue363_missing_only_import/run.py | 20 +++++++++++++++++++ 5 files changed, 49 insertions(+) create mode 100644 examples/issue363_missing_only_import/Makefile create mode 100644 examples/issue363_missing_only_import/Makefile.meson create mode 100644 examples/issue363_missing_only_import/global_mod.f90 create mode 100644 examples/issue363_missing_only_import/run.py diff --git a/examples/Makefile b/examples/Makefile index 1f116c8b..cd82d209 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -40,6 +40,7 @@ EXAMPLES = \ issue307_logical_array \ issue32 \ issue353_selected_kind \ + issue363_missing_only_import \ issue357_name_conflict \ issue41_abstract_classes \ keep_single_interface \ diff --git a/examples/issue363_missing_only_import/Makefile b/examples/issue363_missing_only_import/Makefile new file mode 100644 index 00000000..8bfcbf66 --- /dev/null +++ b/examples/issue363_missing_only_import/Makefile @@ -0,0 +1,9 @@ +include ../make.meson.inc + +NAME := global_mod +LIBSRC_WRAP_FPP_FILES := global_mod.f90 + +test: build + $(PYTHON) run.py + +.PHONY: test diff --git a/examples/issue363_missing_only_import/Makefile.meson b/examples/issue363_missing_only_import/Makefile.meson new file mode 100644 index 00000000..8bfcbf66 --- /dev/null +++ b/examples/issue363_missing_only_import/Makefile.meson @@ -0,0 +1,9 @@ +include ../make.meson.inc + +NAME := global_mod +LIBSRC_WRAP_FPP_FILES := global_mod.f90 + +test: build + $(PYTHON) run.py + +.PHONY: test diff --git a/examples/issue363_missing_only_import/global_mod.f90 b/examples/issue363_missing_only_import/global_mod.f90 new file mode 100644 index 00000000..a8ccb16c --- /dev/null +++ b/examples/issue363_missing_only_import/global_mod.f90 @@ -0,0 +1,10 @@ +module global_mod + implicit none + integer :: number +contains + subroutine print_number(number) + integer, intent(in) :: number + + print *, number + end subroutine print_number +end module global_mod diff --git a/examples/issue363_missing_only_import/run.py b/examples/issue363_missing_only_import/run.py new file mode 100644 index 00000000..e28b0aca --- /dev/null +++ b/examples/issue363_missing_only_import/run.py @@ -0,0 +1,20 @@ +from pathlib import Path + +import global_mod + + +def main(): + wrapper = Path("f90wrap_global_mod.f90").read_text(encoding="utf-8") + expected = "use global_mod, only: print_number" + if expected not in wrapper: + raise SystemExit( + "Missing selective import in generated wrapper:\n" + f"{expected}\n\nGenerated wrapper:\n{wrapper}" + ) + + global_mod.global_mod.print_number(7) + print("Issue #363 test passed: generated wrapper uses selective import") + + +if __name__ == "__main__": + main()