Comment deprecated input sections when dumped

Comment also deprecated keywords instead of skipping them (#4570)
This commit is contained in:
Matthias Krack 2025-12-01 14:48:31 +01:00
parent c43746297c
commit a360aa3aea
2 changed files with 31 additions and 19 deletions

View file

@ -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) &

View file

@ -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