From a360aa3aea051dfa3e7dafd6dc0bfc6bd2149fcf Mon Sep 17 00:00:00 2001 From: Matthias Krack Date: Mon, 1 Dec 2025 14:48:31 +0100 Subject: [PATCH] Comment deprecated input sections when dumped Comment also deprecated keywords instead of skipping them (#4570) --- src/input/input_parsing.F | 2 +- src/input/input_section_types.F | 48 ++++++++++++++++++++------------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/input/input_parsing.F b/src/input/input_parsing.F index cea5524525..ea88e68926 100644 --- a/src/input/input_parsing.F +++ b/src/input/input_parsing.F @@ -273,7 +273,7 @@ CONTAINS CALL cp_warn(__LOCATION__, & "The specified keyword '"//TRIM(token)// & "' is deprecated and may be removed in a future version: "// & - keyword%deprecation_notice//".") + keyword%deprecation_notice) NULLIFY (el) IF (ik /= 0 .AND. keyword%type_of_var == lchar_t) & diff --git a/src/input/input_section_types.F b/src/input/input_section_types.F index 0f745d0bd8..86a7290d5f 100644 --- a/src/input/input_section_types.F +++ b/src/input/input_section_types.F @@ -1430,7 +1430,8 @@ CONTAINS INTEGER, PARAMETER :: incr = 2 - CHARACTER(len=default_string_length) :: myfmt + CHARACTER(LEN=1) :: first_key_char, first_sec_char + CHARACTER(LEN=25) :: myfmt INTEGER :: i_rep_s, ik, isec, ival, nr, nval INTEGER, SAVE :: indent = 1 LOGICAL :: defaultSection, explicit, & @@ -1449,27 +1450,37 @@ CONTAINS CPASSERT(section_vals%ref_count > 0) IF (unit_nr > 0) THEN CALL section_vals_get(section_vals, explicit=explicit, n_repetition=nr, section=section) + IF (ALLOCATED(section%deprecation_notice)) THEN + first_sec_char = "#" + ELSE + first_sec_char = " " + END IF IF (explicit .OR. (.NOT. my_hide_defaults)) THEN DO i_rep_s = 1, nr IF (.NOT. my_hide_root) THEN - WRITE (UNIT=myfmt, FMT="(I0,A1)") indent, "X" + WRITE (UNIT=myfmt, FMT="(A1,I0,A4)") "(", indent, "X,A)" IF (ASSOCIATED(section%keywords(-1)%keyword)) THEN - WRITE (UNIT=unit_nr, FMT="("//TRIM(myfmt)//",A)", ADVANCE="NO") & - default_section_character//TRIM(ADJUSTL(section%name)) + WRITE (UNIT=unit_nr, FMT=myfmt, ADVANCE="NO") & + TRIM(first_sec_char)//default_section_character//TRIM(ADJUSTL(section%name)) ELSE - WRITE (UNIT=unit_nr, FMT="("//TRIM(myfmt)//",A)") & - default_section_character//TRIM(ADJUSTL(section%name)) + WRITE (UNIT=unit_nr, FMT=myfmt) & + TRIM(first_sec_char)//default_section_character//TRIM(ADJUSTL(section%name)) END IF END IF defaultSection = (SIZE(section_vals%values, 2) == 0) IF (.NOT. defaultSection) THEN IF (.NOT. my_hide_root) indent = indent + incr - WRITE (UNIT=myfmt, FMT="(I0,A1)") indent, "X" + WRITE (UNIT=myfmt, FMT="(A1,I0,A4)") "(", indent, "X,A)" DO ik = -1, section%n_keywords keyword => section%keywords(ik)%keyword IF (ASSOCIATED(keyword)) THEN - ! Skip deprecated keyword - IF (ALLOCATED(keyword%deprecation_notice)) CYCLE + IF (ALLOCATED(keyword%deprecation_notice) .OR. & + ALLOCATED(section%deprecation_notice)) THEN + ! Comment deprecated keyword + first_key_char = "#" + ELSE + first_key_char = " " + END IF IF (keyword%type_of_var /= no_t .AND. keyword%names(1) (1:2) /= "__") THEN CALL section_vals_val_get(section_vals, keyword%names(1), & i_rep_s, n_rep_val=nval) @@ -1493,11 +1504,11 @@ CONTAINS END IF IF (keyword%names(1) /= '_DEFAULT_KEYWORD_' .AND. & keyword%names(1) /= '_SECTION_PARAMETERS_') THEN - WRITE (UNIT=unit_nr, FMT="("//TRIM(myfmt)//",A)", ADVANCE="NO") & - TRIM(keyword%names(1)) + WRITE (UNIT=unit_nr, FMT=myfmt, ADVANCE="NO") & + TRIM(first_key_char)//TRIM(keyword%names(1)) ELSE IF (keyword%names(1) == '_DEFAULT_KEYWORD_' .AND. & keyword%type_of_var /= lchar_t) THEN - WRITE (UNIT=unit_nr, FMT="("//TRIM(myfmt)//")", ADVANCE="NO") + WRITE (UNIT=unit_nr, FMT=myfmt, ADVANCE="NO") END IF CALL val_write(val, unit_nr=unit_nr, unit=keyword%unit, fmt=myfmt) END DO @@ -1507,11 +1518,11 @@ CONTAINS val => keyword%default_value IF (keyword%names(1) /= '_DEFAULT_KEYWORD_' .AND. & keyword%names(1) /= '_SECTION_PARAMETERS_') THEN - WRITE (UNIT=unit_nr, FMT="("//TRIM(myfmt)//",A)", ADVANCE="NO") & - TRIM(keyword%names(1)) + WRITE (UNIT=unit_nr, FMT=myfmt, ADVANCE="NO") & + TRIM(first_key_char)//TRIM(keyword%names(1)) ELSE IF (keyword%names(1) == '_DEFAULT_KEYWORD_' .AND. & keyword%type_of_var /= lchar_t) THEN - WRITE (UNIT=unit_nr, FMT="("//TRIM(myfmt)//")", ADVANCE="NO") + WRITE (UNIT=unit_nr, FMT=myfmt, ADVANCE="NO") END IF CALL val_write(val, unit_nr=unit_nr, unit=keyword%unit, fmt=myfmt) END IF @@ -1529,9 +1540,10 @@ CONTAINS END IF IF (.NOT. my_hide_root) THEN indent = indent - incr - WRITE (UNIT=myfmt, FMT="(I0,A1)") indent, "X" - WRITE (UNIT=unit_nr, FMT="("//TRIM(myfmt)//",A)") & - default_section_character//"END "//TRIM(ADJUSTL(section%name)) + WRITE (UNIT=myfmt, FMT="(A1,I0,A4)") "(", indent, "X,A)" + WRITE (UNIT=unit_nr, FMT=myfmt) & + TRIM(first_sec_char)//default_section_character// & + "END "//TRIM(ADJUSTL(section%name)) END IF END DO END IF