# 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.