loki.frontend.tests.test_frontends

Verify correct frontend behaviour and correct parsing of certain Fortran language features.

Functions

fixture_reset_frontend_mode()

test_associates(tmp_path, frontend)

Test the use of associate to access and modify other items

test_associates_deferred(frontend)

Verify that reading in subroutines with deferred external type definitions and associates working on that are supported.

test_associates_expr(tmp_path, frontend)

Verify that associates with expressions are supported

test_assumed_size_declarations()

Test if assumed size declarations are correctly parsed.

test_check_alloc_opts(tmp_path, frontend)

Test the use of SOURCE and STAT in allocate

test_comment_block_clustering(frontend)

Test that multiple Comment nodes into a CommentBlock.

test_enum(tmp_path, frontend)

Verify that enums are represented correctly

test_frontend_derived_type_imports(tmp_path, ...)

Checks that provided module and type info is attached during parse

test_frontend_empty_file(frontend, fcode)

Ensure that all frontends can handle empty source files correctly (#186)

test_frontend_main_program(frontend)

Loki can't handle PROGRAM blocks and the frontends should throw an exception

test_frontend_module_variables_dimension_pragmas(...)

Test that !$loki dimension pragmas can be used to override the conceptual .shape of module variables.

test_frontend_pragma_vs_comment(frontend, ...)

Make sure pragmas and comments are identified correctly

test_frontend_routine_variables_dimension_pragmas(...)

Test that !$loki dimension pragmas can be used to override the conceptual .shape of local and argument variables.

test_frontend_source_lineno(frontend)

test_frontend_strict_mode(frontend, tmp_path)

Verify that frontends fail on unsupported features if strict mode is enabled

test_function_symbol_scoping(frontend)

Check that the return symbol of a function has the right scope

test_import_of_private_symbols(tmp_path, ...)

Verify that only public symbols are imported from other modules.

test_inline_comments(frontend)

Test that multiple Comment nodes into a CommentBlock.

test_intrinsic_shadowing(tmp_path, frontend)

Test that locally defined functions that shadow intrinsics are handled.

test_pragma_line_continuation(frontend)

Test that multi-line pragmas are parsed and dealt with correctly.

test_source_sanitize_fp_module(preprocess)

Test that source sanitizing works as expected and postprocessing rules are correctly applied

test_source_sanitize_fp_source(tmp_path, ...)

Test that source sanitizing works as expected and postprocessing rules are correctly applied

test_source_sanitize_fp_subroutine(preprocess)

Test that source sanitizing works as expected and postprocessing rules are correctly applied

fixture_reset_frontend_mode()
test_check_alloc_opts(tmp_path, frontend)

Test the use of SOURCE and STAT in allocate

test_associates(tmp_path, frontend)

Test the use of associate to access and modify other items

test_associates_deferred(frontend)

Verify that reading in subroutines with deferred external type definitions and associates working on that are supported.

test_associates_expr(tmp_path, frontend)

Verify that associates with expressions are supported

test_enum(tmp_path, frontend)

Verify that enums are represented correctly

test_frontend_strict_mode(frontend, tmp_path)

Verify that frontends fail on unsupported features if strict mode is enabled

test_frontend_pragma_vs_comment(frontend, tmp_path)

Make sure pragmas and comments are identified correctly

test_frontend_main_program(frontend)

Loki can’t handle PROGRAM blocks and the frontends should throw an exception

test_frontend_source_lineno(frontend)

test_frontend_empty_file(frontend, fcode)

Ensure that all frontends can handle empty source files correctly (#186)

test_pragma_line_continuation(frontend)

Test that multi-line pragmas are parsed and dealt with correctly.

test_comment_block_clustering(frontend)

Test that multiple Comment nodes into a CommentBlock.

test_inline_comments(frontend)

Test that multiple Comment nodes into a CommentBlock.

test_source_sanitize_fp_source(tmp_path, from_file, preprocess)

Test that source sanitizing works as expected and postprocessing rules are correctly applied

test_source_sanitize_fp_subroutine(preprocess)

Test that source sanitizing works as expected and postprocessing rules are correctly applied

test_source_sanitize_fp_module(preprocess)

Test that source sanitizing works as expected and postprocessing rules are correctly applied

test_frontend_routine_variables_dimension_pragmas(frontend)

Test that !$loki dimension pragmas can be used to override the conceptual .shape of local and argument variables.

test_frontend_module_variables_dimension_pragmas(frontend, tmp_path)

Test that !$loki dimension pragmas can be used to override the conceptual .shape of module variables.

test_import_of_private_symbols(tmp_path, frontend)

Verify that only public symbols are imported from other modules.

test_intrinsic_shadowing(tmp_path, frontend)

Test that locally defined functions that shadow intrinsics are handled.

test_function_symbol_scoping(frontend)

Check that the return symbol of a function has the right scope

test_frontend_derived_type_imports(tmp_path, frontend)

Checks that provided module and type info is attached during parse

test_assumed_size_declarations()

Test if assumed size declarations are correctly parsed.