diff --git a/changelog b/changelog
index f8cffbb72..3fa24aacc 100644
--- a/changelog
+++ b/changelog
@@ -29,6 +29,8 @@
 	12) #794 for #788. Re-structuring and tidying of DynArgDescriptor03
 	to become LFRicArgDescriptor.
 
+	13) #807 for #805. Put fparser2 bare DO constructs inside CodeBlocks.
+
 release 1.9.0 20th May 2020
 
 	1) #602 for #597. Modify Node.ancestor() to optionally include
diff --git a/src/psyclone/psyir/frontend/fparser2.py b/src/psyclone/psyir/frontend/fparser2.py
index 3df64b171..7e270efcc 100644
--- a/src/psyclone/psyir/frontend/fparser2.py
+++ b/src/psyclone/psyir/frontend/fparser2.py
@@ -1769,14 +1769,13 @@ class Fparser2Reader(object):
         :returns: PSyIR representation of node
         :rtype: :py:class:`psyclone.psyir.nodes.Loop`
 
-        :raises InternalError: if the fparser2 tree has an unexpected \
-            structure.
+        :raises NotImplementedError: if the fparser2 tree has an unsupported \
+            structure (e.g. DO WHILE or a DO with no loop control).
         '''
         ctrl = walk(node.content, Fortran2003.Loop_Control)
         if not ctrl:
-            raise InternalError(
-                "Unrecognised form of DO loop - failed to find Loop_Control "
-                "element in the node '{0}'.".format(str(node)))
+            # TODO #359 a DO with no loop control is put into a CodeBlock
+            raise NotImplementedError()
         if ctrl[0].items[0]:
             # If this is a DO WHILE then the first element of items will not
             # be None. (See `fparser.two.Fortran2003.Loop_Control`.)

[PSyIR-FE] Bare 'DO' causes crash in frontend
PSyclone internal error: Unrecognised form of DO loop - failed to find Loop_Control element in the node 

    DO
        IF(..) EXIT
        ...
    END DO

This should result in a code block, not a crash.
diff --git a/src/psyclone/tests/psyir/frontend/bound_intrinsic_test.py b/src/psyclone/tests/psyir/frontend/fparser2_bound_intrinsic_test.py
similarity index 100%
rename from src/psyclone/tests/psyir/frontend/bound_intrinsic_test.py
rename to src/psyclone/tests/psyir/frontend/fparser2_bound_intrinsic_test.py
diff --git a/src/psyclone/tests/psyir/frontend/fparser2_do_handler_test.py b/src/psyclone/tests/psyir/frontend/fparser2_do_handler_test.py
new file mode 100644
index 000000000..3dfca2c45
--- /dev/null
+++ b/src/psyclone/tests/psyir/frontend/fparser2_do_handler_test.py
@@ -0,0 +1,123 @@
+# -----------------------------------------------------------------------------
+# BSD 3-Clause License
+#
+# Copyright (c) 2020, Science and Technology Facilities Council.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+#   list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright notice,
+#   this list of conditions and the following disclaimer in the documentation
+#   and/or other materials provided with the distribution.
+#
+# * Neither the name of the copyright holder nor the names of its
+#   contributors may be used to endorse or promote products derived from
+#   this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+# -----------------------------------------------------------------------------
+# Author A. R. Porter, STFC Daresbury Lab
+
+''' Module containing pytest tests for the handling of the DO
+construct in the PSyIR fparser2 frontend. '''
+
+from __future__ import absolute_import
+
+import pytest
+from fparser.common.readfortran import FortranStringReader
+from fparser.two import Fortran2003
+from psyclone.psyir.nodes import Schedule, CodeBlock, Loop, Assignment
+from psyclone.psyir.frontend.fparser2 import Fparser2Reader
+
+
+def test_handling_end_do_stmt(parser):
+    ''' Test that the fparser2 End_Do_Stmt is ignored.'''
+    reader = FortranStringReader('''
+      subroutine test()
+        integer :: i, a
+        do i=1,10
+            a=a+1
+        end do
+      end subroutine test
+        ''')
+    fparser2_tree = parser(reader)
+    processor = Fparser2Reader()
+    result = processor.generate_schedule("test", fparser2_tree)
+    assert len(result.children) == 1  # Just the loop (no end statement)
+
+
+def test_do_construct(parser):
+    ''' Check that do loop constructs are converted to the expected
+    PSyIR node. '''
+    reader = FortranStringReader('''
+      subroutine test()
+        integer :: i, sum
+        do i = 1, 10 , 2
+            sum = sum + i
+        end do
+      end subroutine test
+      ''')
+    fparser2_tree = parser(reader)
+    processor = Fparser2Reader()
+    result = processor.generate_schedule("test", fparser2_tree)
+    assert result.children[0]
+    new_loop = result.children[0]
+    assert isinstance(new_loop, Loop)
+    assert new_loop.variable.name == "i"
+    assert new_loop.start_expr.value == "1"
+    assert new_loop.stop_expr.value == "10"
+    assert new_loop.step_expr.value == "2"
+    assert len(new_loop.loop_body.children) == 1
+    assert isinstance(new_loop.loop_body[0], Assignment)
+
+
+@pytest.mark.usefixtures("f2008_parser")
+def test_do_construct_while():
+    ''' Check that do while constructs are placed in Codeblocks. '''
+    reader = FortranStringReader('''
+        do while(a .gt. b)\n
+            c = c + 1\n
+        end do\n
+        ''')
+    fparser2while = Fortran2003.Execution_Part.match(reader)[0][0]
+    processor = Fparser2Reader()
+    fake_parent = Schedule()
+    processor.process_nodes(fake_parent, [fparser2while])
+    assert isinstance(fake_parent.children[0], CodeBlock)
+
+
+@pytest.mark.usefixtures("parser")
+def test_unhandled_do(parser):
+    ''' Test that a DO without any control logic results in a CodeBlock. '''
+    lines = ["SUBROUTINE a_loop()",
+             "  integer :: niter_atgen, jp_maxniter_atgen",
+             "  real :: zh, zh_prev",
+             "  DO",
+             "    IF (niter_atgen >= jp_maxniter_atgen) THEN",
+             "      zh = - 1._wp",
+             "      EXIT",
+             "    END IF",
+             "    zh_prev = zh",
+             "    niter_atgen = niter_atgen + 1",
+             "  END DO",
+             "END SUBROUTINE a_loop"]
+    reader = FortranStringReader("\n".join(lines))
+    fp2spec = parser(reader)
+    processor = Fparser2Reader()
+    sched = processor.generate_schedule("a_loop", fp2spec)
+    assert isinstance(sched[0], CodeBlock)
diff --git a/src/psyclone/tests/psyir/frontend/fortran_use_test.py b/src/psyclone/tests/psyir/frontend/fparser2_fortran_use_test.py
similarity index 100%
rename from src/psyclone/tests/psyir/frontend/fortran_use_test.py
rename to src/psyclone/tests/psyir/frontend/fparser2_fortran_use_test.py
diff --git a/src/psyclone/tests/psyir/frontend/literals_test.py b/src/psyclone/tests/psyir/frontend/fparser2_literals_test.py
similarity index 100%
rename from src/psyclone/tests/psyir/frontend/literals_test.py
rename to src/psyclone/tests/psyir/frontend/fparser2_literals_test.py
diff --git a/src/psyclone/tests/psyir/frontend/size_intrinsic_test.py b/src/psyclone/tests/psyir/frontend/fparser2_size_intrinsic_test.py
similarity index 100%
rename from src/psyclone/tests/psyir/frontend/size_intrinsic_test.py
rename to src/psyclone/tests/psyir/frontend/fparser2_size_intrinsic_test.py
diff --git a/src/psyclone/tests/psyir/frontend/fparser2_test.py b/src/psyclone/tests/psyir/frontend/fparser2_test.py
index d9992c41d..4f46db84a 100644
--- a/src/psyclone/tests/psyir/frontend/fparser2_test.py
+++ b/src/psyclone/tests/psyir/frontend/fparser2_test.py
@@ -51,7 +51,6 @@ from psyclone.errors import InternalError, GenerationError
 from psyclone.psyir.symbols import DataSymbol, ContainerSymbol, SymbolTable, \
     ArgumentInterface, SymbolError, ScalarType, ArrayType, INTEGER_TYPE, \
     REAL_TYPE, UnknownType, Symbol
-from psyclone.psyir.nodes import Loop
 from psyclone.psyir.frontend.fparser2 import Fparser2Reader, \
     _get_symbol_table, _is_array_range_literal, _is_bound_full_extent, \
     _is_range_full_extent, _check_args, default_precision, \
@@ -2688,22 +2687,6 @@ def test_handling_return_stmt():
     assert not new_node.children
 
 
-def test_handling_end_do_stmt(parser):
-    ''' Test that the fparser2 End_Do_Stmt is ignored.'''
-    reader = FortranStringReader('''
-      subroutine test()
-        integer :: i, a
-        do i=1,10
-            a=a+1
-        end do
-      end subroutine test
-        ''')
-    fparser2_tree = parser(reader)
-    processor = Fparser2Reader()
-    result = processor.generate_schedule("test", fparser2_tree)
-    assert len(result.children) == 1  # Just the loop (no end statement)
-
-
 @pytest.mark.usefixtures("f2008_parser")
 def test_handling_end_subroutine_stmt():
     ''' Test that fparser2 End_Subroutine_Stmt are ignored.'''
@@ -2720,48 +2703,6 @@ def test_handling_end_subroutine_stmt():
     assert not fake_parent.children  # No new children created
 
 
-def test_do_construct(parser):
-    ''' Check that do loop constructs are converted to the expected
-    PSyIR node.
-
-    '''
-    reader = FortranStringReader('''
-      subroutine test()
-        integer :: i, sum
-        do i = 1, 10 , 2
-            sum = sum + i
-        end do
-      end subroutine test
-      ''')
-    fparser2_tree = parser(reader)
-    processor = Fparser2Reader()
-    result = processor.generate_schedule("test", fparser2_tree)
-    assert result.children[0]
-    new_loop = result.children[0]
-    assert isinstance(new_loop, Loop)
-    assert new_loop.variable.name == "i"
-    assert new_loop.start_expr.value == "1"
-    assert new_loop.stop_expr.value == "10"
-    assert new_loop.step_expr.value == "2"
-    assert len(new_loop.loop_body.children) == 1
-    assert isinstance(new_loop.loop_body[0], Assignment)
-
-
-@pytest.mark.usefixtures("f2008_parser")
-def test_do_construct_while():
-    ''' Check that do while constructs are placed in Codeblocks '''
-    reader = FortranStringReader('''
-        do while(a .gt. b)\n
-            c = c + 1\n
-        end do\n
-        ''')
-    fparser2while = Execution_Part.match(reader)[0][0]
-    processor = Fparser2Reader()
-    fake_parent = Schedule()
-    processor.process_nodes(fake_parent, [fparser2while])
-    assert isinstance(fake_parent.children[0], CodeBlock)
-
-
 # (1/4) fparser2reader::nodes_to_code_block
 def test_nodes_to_code_block_1(f2008_parser):
     '''Check that a statement codeblock that is at the "top level" in the
@@ -2843,36 +2784,6 @@ def test_nodes_to_code_block_4():
             in str(excinfo.value))
 
 
-@pytest.mark.usefixtures("f2008_parser")
-def test_missing_loop_control(monkeypatch):
-    ''' Check that encountering a loop in the fparser parse tree that is
-    missing a Loop_Control element raises an InternalError. '''
-    from fparser.two.utils import walk
-    reader = FortranStringReader('''
-        do while(a .gt. b)\n
-            c = c + 1\n
-        end do\n
-        ''')
-    fparser2while = Fortran2003.Execution_Part.match(reader)[0][0]
-    processor = Fparser2Reader()
-
-    # We have to break the fparser2 parse tree in order to trigger the
-    # internal error
-    ctrl = walk(fparser2while.content[0].items, Fortran2003.Loop_Control)
-    # 'items' is a tuple and therefore immutable so make a new list
-    item_list = list(fparser2while.content[0].items)
-    # Create a new tuple for the items member without the Loop_Control
-    item_list.remove(ctrl[0])
-    fparser2while.content[0].items = tuple(item_list)
-    monkeypatch.setattr(fparser2while, "tostr", lambda: "<fparser2while>")
-
-    fake_parent = Schedule()
-    with pytest.raises(InternalError) as err:
-        processor.process_nodes(fake_parent, [fparser2while])
-    assert "Unrecognised form of DO loop - failed to find Loop_Control " \
-        "element in the node '<fparser2while>'." in str(err.value)
-
-
 def test_get_symbol_table():
     '''Test that the utility function _get_symbol_table() works and fails
     as expected. '''

pip install -e .[test]
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-pep8 pytest-pylint pytest-flakes pytest-pep257
apt-get update apt-get install -y gcc
3.6
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
astroid==1.4.9
attrs==22.2.0
certifi==2021.5.30
configparser==5.2.0
coverage==6.2
dill==0.3.4
execnet==1.9.0
fparser==0.0.11
graphviz==0.19.1
importlib-metadata==4.8.3
iniconfig==1.1.1
isort==5.10.1
lazy-object-proxy==1.7.1
mccabe==0.7.0
packaging==21.3
pep257==0.7.0
pep8==1.7.1
platformdirs==2.4.0
pluggy==1.0.0
-e git+https://github.com/stfc/PSyclone.git@5813097010d4d25cfd7167edefd2d964a784c30c#egg=PSyclone
py==1.11.0
pyflakes==3.0.1
pylint==1.6.5
pyparsing==3.1.4
pytest==7.0.1
pytest-cache==1.0
pytest-cov==4.0.0
pytest-flakes==4.0.5
pytest-pep257==0.0.5
pytest-pep8==1.0.6
pytest-pylint==0.14.1
six==1.17.0
termcolor==1.1.0
toml==0.10.2
tomli==1.2.3
typed-ast==1.5.5
typing_extensions==4.1.1
wrapt==1.16.0
zipp==3.6.0

name: PSyclone
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - astroid==1.4.9
      - attrs==22.2.0
      - configparser==5.2.0
      - coverage==6.2
      - dill==0.3.4
      - execnet==1.9.0
      - fparser==0.0.11
      - graphviz==0.19.1
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - isort==5.10.1
      - lazy-object-proxy==1.7.1
      - mccabe==0.7.0
      - packaging==21.3
      - pep257==0.7.0
      - pep8==1.7.1
      - platformdirs==2.4.0
      - pluggy==1.0.0
      - py==1.11.0
      - pyflakes==3.0.1
      - pylint==1.6.5
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-cache==1.0
      - pytest-cov==4.0.0
      - pytest-flakes==4.0.5
      - pytest-pep257==0.0.5
      - pytest-pep8==1.0.6
      - pytest-pylint==0.14.1
      - six==1.17.0
      - termcolor==1.1.0
      - toml==0.10.2
      - tomli==1.2.3
      - typed-ast==1.5.5
      - typing-extensions==4.1.1
      - wrapt==1.16.0
      - zipp==3.6.0
prefix: /opt/conda/envs/PSyclone

src/psyclone/tests/psyir/frontend/fparser2_do_handler_test.py::test_unhandled_do
src/psyclone/tests/psyir/frontend/fparser2_test.py::test_nodes_to_code_block_1
src/psyclone/tests/psyir/frontend/fparser2_bound_intrinsic_test.py::test_bound_intrinsics[n src/psyclone/tests/psyir/frontend/fparser2_do_handler_test.py::test_handling_end_do_stmt src/psyclone/tests/psyir/frontend/fparser2_do_handler_test.py::test_do_construct src/psyclone/tests/psyir/frontend/fparser2_do_handler_test.py::test_do_construct_while src/psyclone/tests/psyir/frontend/fparser2_fortran_use_test.py::test_use_stmt src/psyclone/tests/psyir/frontend/fparser2_fortran_use_test.py::test_use_stmt_error src/psyclone/tests/psyir/frontend/fparser2_fortran_use_test.py::test_multi_use_stmt src/psyclone/tests/psyir/frontend/fparser2_fortran_use_test.py::test_name_clash_use_stmt src/psyclone/tests/psyir/frontend/fparser2_fortran_use_test.py::test_use_no_only_list src/psyclone/tests/psyir/frontend/fparser2_fortran_use_test.py::test_broken_use src/psyclone/tests/psyir/frontend/fparser2_fortran_use_test.py::test_redundant_empty_only_list src/psyclone/tests/psyir/frontend/fparser2_fortran_use_test.py::test_use_same_symbol src/psyclone/tests/psyir/frontend/fparser2_fortran_use_test.py::test_use_local_symbol_error src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal['hello'-Intrinsic.CHARACTER] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal[1-Intrinsic.INTEGER] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal[1.0-Intrinsic.REAL] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal[.tRue.-Intrinsic.BOOLEAN] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal[.false.-Intrinsic.BOOLEAN] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_1[0.0-rdef-Intrinsic.REAL] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_1[1-idef-Intrinsic.INTEGER] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_1['hello'-cdef-Intrinsic.CHARACTER] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_1[.tRue.-ldef-Intrinsic.BOOLEAN] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_1[.false.-ldef-Intrinsic.BOOLEAN] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_2[0.0-16-Intrinsic.REAL] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_2[1-8-Intrinsic.INTEGER] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_2['hello'-1-Intrinsic.CHARACTER] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_2[.tRue.-4-Intrinsic.BOOLEAN] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_2[.false.-8-Intrinsic.BOOLEAN] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_3[0.0D0-Precision.DOUBLE] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_3[0.0d0-Precision.DOUBLE] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_3[0.0E0-Precision.SINGLE] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_literal_precision_3[0.0e0-Precision.SINGLE] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_literal_constant_value_format[.3-0.3] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_literal_constant_value_format[.3e4-0.3e4] src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_handling_invalid_logic_literal src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_number_handler src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_get_literal_precision src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_get_literal_precision_type src/psyclone/tests/psyir/frontend/fparser2_literals_test.py::test_get_literal_precision_missing_table src/psyclone/tests/psyir/frontend/fparser2_size_intrinsic_test.py::test_size[n src/psyclone/tests/psyir/frontend/fparser2_test.py::test_check_args src/psyclone/tests/psyir/frontend/fparser2_test.py::test_is_bound_full_extent src/psyclone/tests/psyir/frontend/fparser2_test.py::test_is_array_range_literal src/psyclone/tests/psyir/frontend/fparser2_test.py::test_is_range_full_extent src/psyclone/tests/psyir/frontend/fparser2_test.py::test_default_precision[Intrinsic.REAL] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_default_precision[Intrinsic.INTEGER] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_default_precision[Intrinsic.BOOLEAN] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_default_precision[Intrinsic.CHARACTER] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_default_precision[None] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_default_integer_type src/psyclone/tests/psyir/frontend/fparser2_test.py::test_default_real_type src/psyclone/tests/psyir/frontend/fparser2_test.py::test_array_notation_rank src/psyclone/tests/psyir/frontend/fparser2_test.py::test_generate_container src/psyclone/tests/psyir/frontend/fparser2_test.py::test_generate_container_two_modules src/psyclone/tests/psyir/frontend/fparser2_test.py::test_generate_schedule_empty_subroutine src/psyclone/tests/psyir/frontend/fparser2_test.py::test_generate_schedule_module_decls src/psyclone/tests/psyir/frontend/fparser2_test.py::test_generate_schedule_dummy_subroutine src/psyclone/tests/psyir/frontend/fparser2_test.py::test_generate_schedule_no_args_subroutine src/psyclone/tests/psyir/frontend/fparser2_test.py::test_generate_schedule_unmatching_arguments src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_unsupported_declarations src/psyclone/tests/psyir/frontend/fparser2_test.py::test_unsupported_decln_duplicate_symbol src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.INTEGER-integer-1] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.INTEGER-integer-2] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.INTEGER-integer-4] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.INTEGER-integer-8] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.INTEGER-integer-16] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.INTEGER-integer-32] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.REAL-real-1] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.REAL-real-2] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.REAL-real-4] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.REAL-real-8] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.REAL-real-16] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.REAL-real-32] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.BOOLEAN-logical-1] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.BOOLEAN-logical-2] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.BOOLEAN-logical-4] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.BOOLEAN-logical-8] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.BOOLEAN-logical-16] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_precision[Intrinsic.BOOLEAN-logical-32] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_double_precision src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_array_declarations src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_not_supported_declarations src/psyclone/tests/psyir/frontend/fparser2_test.py::test_default_public_container src/psyclone/tests/psyir/frontend/fparser2_test.py::test_default_private_container src/psyclone/tests/psyir/frontend/fparser2_test.py::test_access_stmt_undeclared_symbol src/psyclone/tests/psyir/frontend/fparser2_test.py::test_parse_access_statements_invalid src/psyclone/tests/psyir/frontend/fparser2_test.py::test_access_stmt_routine_name src/psyclone/tests/psyir/frontend/fparser2_test.py::test_public_private_symbol_error src/psyclone/tests/psyir/frontend/fparser2_test.py::test_multiple_access_stmt_error src/psyclone/tests/psyir/frontend/fparser2_test.py::test_broken_access_spec src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_save_attribute_declarations src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_intent src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_kind_new_param src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_kind_use src/psyclone/tests/psyir/frontend/fparser2_test.py::test_wrong_type_kind_param src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_kind_literals[real-1.0d0-Precision.DOUBLE] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_kind_literals[real-1.0D7-Precision.DOUBLE] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_kind_literals[real-1_t_def-None] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_kind_literals[real-1.0-Precision.UNDEFINED] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_kind_literals[real-1.0E3-Precision.SINGLE] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_kind_literals[integer-1-Precision.UNDEFINED] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_kind_literals[integer-34359738368_t_def-None] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_unsupported_kind[logical-.false.] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_unsupported_kind[real--1.0D7] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_unsupported_kind[real-kvar] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_unsupported_kind[real-kvar(1)] src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_stmt_functions src/psyclone/tests/psyir/frontend/fparser2_test.py::test_parse_array_dimensions_attributes src/psyclone/tests/psyir/frontend/fparser2_test.py::test_deferred_array_size src/psyclone/tests/psyir/frontend/fparser2_test.py::test_unresolved_array_size src/psyclone/tests/psyir/frontend/fparser2_test.py::test_use_stmt src/psyclone/tests/psyir/frontend/fparser2_test.py::test_use_stmt_error src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_declarations_unrecognised_attribute src/psyclone/tests/psyir/frontend/fparser2_test.py::test_parse_array_dimensions_unhandled src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_assignment_stmt src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_name src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_parenthesis src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_part_ref src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_intrinsics src/psyclone/tests/psyir/frontend/fparser2_test.py::test_intrinsic_no_args src/psyclone/tests/psyir/frontend/fparser2_test.py::test_unary_op_handler_error src/psyclone/tests/psyir/frontend/fparser2_test.py::test_binary_op_handler_error src/psyclone/tests/psyir/frontend/fparser2_test.py::test_nary_op_handler_error src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_nested_intrinsic src/psyclone/tests/psyir/frontend/fparser2_test.py::test_array_section src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_array_product src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_if_stmt src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_if_construct src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_if_construct_errors src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_complex_if_construct src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_case_construct src/psyclone/tests/psyir/frontend/fparser2_test.py::test_case_default src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_case_list src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_case_range src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_case_range_list src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_invalid_case_construct src/psyclone/tests/psyir/frontend/fparser2_test.py::test_case_default_only src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_binaryopbase src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_unaryopbase src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_return_stmt src/psyclone/tests/psyir/frontend/fparser2_test.py::test_handling_end_subroutine_stmt src/psyclone/tests/psyir/frontend/fparser2_test.py::test_nodes_to_code_block_2 src/psyclone/tests/psyir/frontend/fparser2_test.py::test_nodes_to_code_block_3 src/psyclone/tests/psyir/frontend/fparser2_test.py::test_nodes_to_code_block_4 src/psyclone/tests/psyir/frontend/fparser2_test.py::test_get_symbol_table src/psyclone/tests/psyir/frontend/fparser2_test.py::test_loop_var_exception
src/psyclone/psyir/frontend/fparser2.py changelog
src/psyclone/psyir/frontend/fparser2.py changelog