Error created when file parsing fails
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(error_t), | intent(out), | allocatable | :: | error |
Instance of the error data |
|
character(len=*), | intent(in) | :: | file_name |
Name of file |
||
character(len=*), | intent(in) | :: | message |
Parse error message |
||
integer, | intent(in), | optional | :: | line_num |
Line number of parse error |
|
character(len=*), | intent(in), | optional | :: | line_string |
Line context string |
|
integer, | intent(in), | optional | :: | line_col |
Line context column |
subroutine file_parse_error(error, file_name, message, line_num, &
line_string, line_col)
!> Instance of the error data
type(error_t), allocatable, intent(out) :: error
!> Name of file
character(len=*), intent(in) :: file_name
!> Parse error message
character(len=*), intent(in) :: message
!> Line number of parse error
integer, intent(in), optional :: line_num
!> Line context string
character(len=*), intent(in), optional :: line_string
!> Line context column
integer, intent(in), optional :: line_col
character(50) :: temp_string
allocate(error)
error%message = 'Parse error: '//message//new_line('a')
error%message = error%message//file_name
if (present(line_num)) then
write(temp_string,'(I0)') line_num
error%message = error%message//':'//trim(temp_string)
end if
if (present(line_col)) then
if (line_col > 0) then
write(temp_string,'(I0)') line_col
error%message = error%message//':'//trim(temp_string)
end if
end if
if (present(line_string)) then
error%message = error%message//new_line('a')
error%message = error%message//' | '//line_string
if (present(line_col)) then
if (line_col > 0) then
error%message = error%message//new_line('a')
error%message = error%message//' | '//repeat(' ',line_col-1)//'^'
end if
end if
end if
end subroutine file_parse_error