Skip to content

flang-new doesn't support #include of arguments #554

Open
@jeffhammond

Description

@jeffhammond

I tried to compile with flang-new today and found that does not accept the #include argument method you use.

As preprocessing is not standard Fortran, this is not a flang-new bug, even if other compilers support it.

NWChem works around the lack of Fortran preprocessing by using cpp explicitly, which requires build system support.

I'm sure you have reasons for writing the code like this, but it would be nice if json-fortran was only using standard Fortran.

diff --git a/src/json_file_module.F90 b/src/json_file_module.F90
index 75376ab..09db6fe 100644
--- a/src/json_file_module.F90
+++ b/src/json_file_module.F90
@@ -502,7 +502,28 @@
 !      all have a similar interface.

     subroutine initialize_json_core_in_file(me,&
-#include "json_initialize_dummy_arguments.inc"
+!#include "json_initialize_dummy_arguments.inc"
+verbose,&
+compact_reals,&
+print_signs,&
+real_format,&
+spaces_per_tab,&
+strict_type_checking,&
+trailing_spaces_significant,&
+case_sensitive_keys,&
+no_whitespace,&
+unescape_strings,&
+comment_char,&
+path_mode,&
+path_separator,&
+compress_vectors,&
+allow_duplicate_keys,&
+escape_solidus,&
+stop_on_error,&
+null_to_real_mode,&
+non_normal_mode,&
+use_quiet_nan, &
+strict_integer_type_checking &
                                            )

     implicit none
@@ -511,7 +532,28 @@
 #include "json_initialize_arguments.inc"

     call me%core%initialize(&
-#include "json_initialize_dummy_arguments.inc"
+!#include "json_initialize_dummy_arguments.inc"
+verbose,&
+compact_reals,&
+print_signs,&
+real_format,&
+spaces_per_tab,&
+strict_type_checking,&
+trailing_spaces_significant,&
+case_sensitive_keys,&
+no_whitespace,&
+unescape_strings,&
+comment_char,&
+path_mode,&
+path_separator,&
+compress_vectors,&
+allow_duplicate_keys,&
+escape_solidus,&
+stop_on_error,&
+null_to_real_mode,&
+non_normal_mode,&
+use_quiet_nan, &
+strict_integer_type_checking &
                            )
     end subroutine initialize_json_core_in_file
 !*****************************************************************************************
@@ -568,7 +610,28 @@
 !      all have a similar interface.

     function initialize_json_file(p,&
-#include "json_initialize_dummy_arguments.inc"
+!#include "json_initialize_dummy_arguments.inc"
+verbose,&
+compact_reals,&
+print_signs,&
+real_format,&
+spaces_per_tab,&
+strict_type_checking,&
+trailing_spaces_significant,&
+case_sensitive_keys,&
+no_whitespace,&
+unescape_strings,&
+comment_char,&
+path_mode,&
+path_separator,&
+compress_vectors,&
+allow_duplicate_keys,&
+escape_solidus,&
+stop_on_error,&
+null_to_real_mode,&
+non_normal_mode,&
+use_quiet_nan, &
+strict_integer_type_checking &
                                  ) result(file_object)

     implicit none
@@ -580,7 +643,28 @@
 #include "json_initialize_arguments.inc"

     call file_object%initialize(&
-#include "json_initialize_dummy_arguments.inc"
+!#include "json_initialize_dummy_arguments.inc"
+verbose,&
+compact_reals,&
+print_signs,&
+real_format,&
+spaces_per_tab,&
+strict_type_checking,&
+trailing_spaces_significant,&
+case_sensitive_keys,&
+no_whitespace,&
+unescape_strings,&
+comment_char,&
+path_mode,&
+path_separator,&
+compress_vectors,&
+allow_duplicate_keys,&
+escape_solidus,&
+stop_on_error,&
+null_to_real_mode,&
+non_normal_mode,&
+use_quiet_nan, &
+strict_integer_type_checking &
                                )

     if (present(p)) then
@@ -637,7 +721,28 @@
 !      all have a similar interface.

     function initialize_json_file_from_string(str,&
-#include "json_initialize_dummy_arguments.inc"
+!#include "json_initialize_dummy_arguments.inc"
+verbose,&
+compact_reals,&
+print_signs,&
+real_format,&
+spaces_per_tab,&
+strict_type_checking,&
+trailing_spaces_significant,&
+case_sensitive_keys,&
+no_whitespace,&
+unescape_strings,&
+comment_char,&
+path_mode,&
+path_separator,&
+compress_vectors,&
+allow_duplicate_keys,&
+escape_solidus,&
+stop_on_error,&
+null_to_real_mode,&
+non_normal_mode,&
+use_quiet_nan, &
+strict_integer_type_checking &
                                              ) result(file_object)

     implicit none
@@ -647,7 +752,28 @@
 #include "json_initialize_arguments.inc"

     call file_object%initialize(&
-#include "json_initialize_dummy_arguments.inc"
+!#include "json_initialize_dummy_arguments.inc"
+verbose,&
+compact_reals,&
+print_signs,&
+real_format,&
+spaces_per_tab,&
+strict_type_checking,&
+trailing_spaces_significant,&
+case_sensitive_keys,&
+no_whitespace,&
+unescape_strings,&
+comment_char,&
+path_mode,&
+path_separator,&
+compress_vectors,&
+allow_duplicate_keys,&
+escape_solidus,&
+stop_on_error,&
+null_to_real_mode,&
+non_normal_mode,&
+use_quiet_nan, &
+strict_integer_type_checking &
                                )
     call file_object%deserialize(str)

@@ -659,7 +785,28 @@
 !  Alternate version of [[initialize_json_file_from_string]], where "str" is kind=CDK.

     function wrap_initialize_json_file_from_string(str,&
-#include "json_initialize_dummy_arguments.inc"
+!#include "json_initialize_dummy_arguments.inc"
+verbose,&
+compact_reals,&
+print_signs,&
+real_format,&
+spaces_per_tab,&
+strict_type_checking,&
+trailing_spaces_significant,&
+case_sensitive_keys,&
+no_whitespace,&
+unescape_strings,&
+comment_char,&
+path_mode,&
+path_separator,&
+compress_vectors,&
+allow_duplicate_keys,&
+escape_solidus,&
+stop_on_error,&
+null_to_real_mode,&
+non_normal_mode,&
+use_quiet_nan, &
+strict_integer_type_checking &
                                                   ) result(file_object)

     implicit none
@@ -670,7 +817,28 @@

     file_object = initialize_json_file_from_string(&
                                   to_unicode(str),&
-#include "json_initialize_dummy_arguments.inc"
+!#include "json_initialize_dummy_arguments.inc"
+verbose,&
+compact_reals,&
+print_signs,&
+real_format,&
+spaces_per_tab,&
+strict_type_checking,&
+trailing_spaces_significant,&
+case_sensitive_keys,&
+no_whitespace,&
+unescape_strings,&
+comment_char,&
+path_mode,&
+path_separator,&
+compress_vectors,&
+allow_duplicate_keys,&
+escape_solidus,&
+stop_on_error,&
+null_to_real_mode,&
+non_normal_mode,&
+use_quiet_nan, &
+strict_integer_type_checking &
                                                 )

     end function wrap_initialize_json_file_from_string
diff --git a/src/json_initialize_dummy_arguments.inc b/src/json_initialize_dummy_arguments.inc
index 008cbd9..0628a1d 100644
--- a/src/json_initialize_dummy_arguments.inc
+++ b/src/json_initialize_dummy_arguments.inc
@@ -1,7 +1,3 @@
-!  The dummy argument list for the various `initialize` subroutines.
-!
-!  See also: json_initialize_argument.inc
-
 verbose,&
 compact_reals,&
 print_signs,&
@@ -22,4 +18,4 @@ stop_on_error,&
 null_to_real_mode,&
 non_normal_mode,&
 use_quiet_nan, &
-strict_integer_type_checking &
\ No newline at end of file
+strict_integer_type_checking &
diff --git a/src/json_value_module.F90 b/src/json_value_module.F90
index ab890ef..be9b46a 100644
--- a/src/json_value_module.F90
+++ b/src/json_value_module.F90
@@ -979,7 +979,28 @@
 !      all have a similar interface.

     function initialize_json_core(&
-#include "json_initialize_dummy_arguments.inc"
+!#include "json_initialize_dummy_arguments.inc"
+verbose,&
+compact_reals,&
+print_signs,&
+real_format,&
+spaces_per_tab,&
+strict_type_checking,&
+trailing_spaces_significant,&
+case_sensitive_keys,&
+no_whitespace,&
+unescape_strings,&
+comment_char,&
+path_mode,&
+path_separator,&
+compress_vectors,&
+allow_duplicate_keys,&
+escape_solidus,&
+stop_on_error,&
+null_to_real_mode,&
+non_normal_mode,&
+use_quiet_nan, &
+strict_integer_type_checking &
                                  ) result(json_core_object)

     implicit none
@@ -988,7 +1009,28 @@
 #include "json_initialize_arguments.inc"

     call json_core_object%initialize(&
-#include "json_initialize_dummy_arguments.inc"
+!#include "json_initialize_dummy_arguments.inc"
+verbose,&
+compact_reals,&
+print_signs,&
+real_format,&
+spaces_per_tab,&
+strict_type_checking,&
+trailing_spaces_significant,&
+case_sensitive_keys,&
+no_whitespace,&
+unescape_strings,&
+comment_char,&
+path_mode,&
+path_separator,&
+compress_vectors,&
+allow_duplicate_keys,&
+escape_solidus,&
+stop_on_error,&
+null_to_real_mode,&
+non_normal_mode,&
+use_quiet_nan, &
+strict_integer_type_checking &
                                     )

     end function initialize_json_core
@@ -1014,7 +1056,28 @@
 !      all have a similar interface.

     subroutine json_initialize(me,&
-#include "json_initialize_dummy_arguments.inc"
+!#include "json_initialize_dummy_arguments.inc"
+verbose,&
+compact_reals,&
+print_signs,&
+real_format,&
+spaces_per_tab,&
+strict_type_checking,&
+trailing_spaces_significant,&
+case_sensitive_keys,&
+no_whitespace,&
+unescape_strings,&
+comment_char,&
+path_mode,&
+path_separator,&
+compress_vectors,&
+allow_duplicate_keys,&
+escape_solidus,&
+stop_on_error,&
+null_to_real_mode,&
+non_normal_mode,&
+use_quiet_nan, &
+strict_integer_type_checking &
                               )

     implicit none

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions