diff --git a/.travis.yml b/.travis.yml
index 583c0ab4b..f5d489943 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -48,7 +48,7 @@ before_install:
   # Specify "fparser_submodule" (without quotes) as an argument to
   # install_optional.sh in order to run the tests with the version of
   # fparser pointed to by the git submodule.
-  - ./bin/install_optional.sh
+  - ./bin/install_optional.sh fparser_submodule
   - pip install codecov
   # Some of the examples include Jupyter notebooks
   - pip install jupyter
diff --git a/changelog b/changelog
index 1de4d7c05..eaaa09a9a 100644
--- a/changelog
+++ b/changelog
@@ -37,6 +37,9 @@
 	15) #811 for #783. Removes potential duplication of orientation
 	pointer declarations.
 
+	16) #808 for #800. Adds support in the PSyIR for the case when a
+	variable used to dimension an array has deferred or unknown type.
+
 release 1.9.0 20th May 2020
 
 	1) #602 for #597. Modify Node.ancestor() to optionally include
diff --git a/external/fparser b/external/fparser
index 5ae2ab688..4be91d2e1 160000
--- a/external/fparser
+++ b/external/fparser
@@ -1,1 +1,1 @@
-Subproject commit 5ae2ab688f6e0558e2934348fa59737521159e1b
+Subproject commit 4be91d2e1078fa5588e84a3299131f297afba675
diff --git a/src/psyclone/psyir/frontend/fparser2.py b/src/psyclone/psyir/frontend/fparser2.py
index 7e270efcc..1610180c7 100644
--- a/src/psyclone/psyir/frontend/fparser2.py
+++ b/src/psyclone/psyir/frontend/fparser2.py
@@ -900,9 +900,15 @@ class Fparser2Reader(object):
                     dim_name = dim.items[1].string.lower()
                     try:
                         sym = symbol_table.lookup(dim_name)
-                        if (sym.datatype.intrinsic !=
-                                ScalarType.Intrinsic.INTEGER or
-                                isinstance(sym.datatype, ArrayType)):
+                        if isinstance(sym.datatype, (UnknownType,
+                                                     DeferredType)):
+                            # Allow symbols of Unknown/DeferredType.
+                            pass
+                        elif not (isinstance(sym.datatype, ScalarType) and
+                                  sym.datatype.intrinsic ==
+                                  ScalarType.Intrinsic.INTEGER):
+                            # It's not of Unknown/DeferredType and it's not an
+                            # integer scalar.
                             _unsupported_type_error(dimensions)
                     except KeyError:
                         # We haven't seen this symbol before so create a new
diff --git a/src/psyclone/psyir/symbols/datatypes.py b/src/psyclone/psyir/symbols/datatypes.py
index ea4e39e65..32b89f616 100644
--- a/src/psyclone/psyir/symbols/datatypes.py
+++ b/src/psyclone/psyir/symbols/datatypes.py
@@ -38,8 +38,8 @@
 
 from __future__ import absolute_import
 import abc
-import six
 from enum import Enum
+import six
 from psyclone.errors import InternalError
 
 
@@ -207,8 +207,8 @@ class ArrayType(DataType):
         system (e.g. using the SIZE intrinsic in Fortran). If it is \
         DataSymbol.Extent.DEFERRED then the extent is also unknown and may or \
         may not be defined at run-time (e.g. the array is ALLOCATABLE in \
-        Fortran). Otherwise it holds an integer literal or a reference to an \
-        integer symbol with the extent.
+        Fortran). Otherwise it holds an integer literal or a reference to a \
+        symbol (of integer or unknown/deferred type) that specifies the extent.
 
     :raises TypeError: if the arguments are of the wrong type.
 
@@ -227,33 +227,14 @@ class ArrayType(DataType):
 
     def __init__(self, datatype, shape):
 
-        from psyclone.psyir.symbols.datasymbol import DataSymbol
         if not isinstance(datatype, DataType):
             raise TypeError(
                 "ArrayType expected 'datatype' argument to be of type "
                 "DataType but found '{0}'."
                 "".format(type(datatype).__name__))
-        if not isinstance(shape, list):
-            raise TypeError(
-                "ArrayType expected 'shape' argument to be of type "
-                "list but found '{0}'."
-                "".format(type(shape).__name__))
-
-        for dimension in shape:
-            if isinstance(dimension, DataSymbol):
-                if not (dimension.is_scalar and
-                        dimension.datatype.intrinsic ==
-                        ScalarType.Intrinsic.INTEGER):
-                    raise TypeError(
-                        "DataSymbols that are part of another symbol shape can"
-                        " only be scalar integers, but found '{0}'."
-                        "".format(str(dimension)))
-            elif not isinstance(dimension, (self.Extent, int)):
-                raise TypeError(
-                    "DataSymbol shape list elements can only be "
-                    "'DataSymbol', 'integer' or ArrayType.Extent, but "
-                    "found '{0}'.".format(type(dimension).__name__))
-
+        # We do not have a setter for shape as it is an immutable property,
+        # therefore we have a separate validation routine.
+        self._validate_shape(shape)
         self._shape = shape
         self._intrinsic = datatype.intrinsic
         self._precision = datatype.precision
@@ -298,6 +279,46 @@ class ArrayType(DataType):
         '''
         return self._shape
 
+    def _validate_shape(self, extents):
+        '''
+        Check that the supplied shape specification is valid. This is not
+        implemented as a setter because the shape property is immutable.
+
+        :param extents: list of extents, one for each array dimension.
+        :type extents: list of :py:class:`psyclone.psyir.symbols.DataSymbol`, \
+            :py:class:`psyclone.psyir.symbols.ArrayType.Extent` or int
+
+        :raises TypeError: if extents is not a list.
+        :raises TypeError: if one or more of the supplied extents is a \
+            DataSymbol that is not a scalar integer or of Unknown/DeferredType.
+        :raises TypeError: if one or more of the supplied extents is not a \
+            DataSymbol, int or ArrayType.Extent.
+
+        '''
+        from psyclone.psyir.symbols.datasymbol import DataSymbol
+        if not isinstance(extents, list):
+            raise TypeError(
+                "ArrayType 'shape' must be of type list but found '{0}'."
+                "".format(type(extents).__name__))
+
+        for dimension in extents:
+            if isinstance(dimension, DataSymbol):
+                if isinstance(dimension.datatype, (UnknownType, DeferredType)):
+                    # We allow symbols of Unknown or Deferred Type
+                    continue
+                if not (dimension.is_scalar and
+                        dimension.datatype.intrinsic ==
+                        ScalarType.Intrinsic.INTEGER):
+                    raise TypeError(
+                        "DataSymbols that are part of another symbol shape can"
+                        " only be scalar integers, but found '{0}'."
+                        "".format(str(dimension)))
+            elif not isinstance(dimension, (self.Extent, int)):
+                raise TypeError(
+                    "DataSymbol shape list elements can only be "
+                    "'DataSymbol', 'integer' or ArrayType.Extent, but "
+                    "found '{0}'.".format(type(dimension).__name__))
+
     def __str__(self):
         '''
         :returns: a description of this array datatype.

[NEMO] Dimensioning variable with DeferredType causes crash
The following code:

    subroutine mysub()
        use some_mod, only: jpi, jpj
        integer, dimension(jpi, jpj) :: some_array
    end subroutine

causes a crash in in `_parse_dimensions()` in the fparser2 frontend. This is because `jpi`/`jpj` have been found in the `use` statement and added to the symbol table with `DeferredType`. This then does not have an `intrinsic_type` which the code in `_parse_dimensions` expects:

                        sym = symbol_table.lookup(dim_name)
                        if (sym.datatype.intrinsic !=
                                ScalarType.Intrinsic.INTEGER or
                                isinstance(sym.datatype, ArrayType)):
                            _unsupported_type_error(dimensions)

diff --git a/src/psyclone/tests/psyir/frontend/fparser2_test.py b/src/psyclone/tests/psyir/frontend/fparser2_test.py
index 4f46db84a..ee73914d1 100644
--- a/src/psyclone/tests/psyir/frontend/fparser2_test.py
+++ b/src/psyclone/tests/psyir/frontend/fparser2_test.py
@@ -50,7 +50,7 @@ from psyclone.psyGen import PSyFactory, Directive, KernelSchedule
 from psyclone.errors import InternalError, GenerationError
 from psyclone.psyir.symbols import DataSymbol, ContainerSymbol, SymbolTable, \
     ArgumentInterface, SymbolError, ScalarType, ArrayType, INTEGER_TYPE, \
-    REAL_TYPE, UnknownType, Symbol
+    REAL_TYPE, UnknownType, DeferredType, Symbol, UnresolvedInterface
 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, \
@@ -937,6 +937,35 @@ def test_process_array_declarations():
     assert symbol.shape == [ArrayType.Extent.ATTRIBUTE,
                             ArrayType.Extent.ATTRIBUTE]
 
+    # Extent given by variable with UnknownType
+    udim = DataSymbol("udim", UnknownType("integer :: udim"))
+    fake_parent.symbol_table.add(udim)
+    reader = FortranStringReader("integer :: l11(udim)")
+    fparser2spec = Specification_Part(reader).content[0]
+    processor.process_declarations(fake_parent, [fparser2spec], [])
+    symbol = fake_parent.symbol_table.lookup("l11")
+    assert symbol.name == "l11"
+    assert len(symbol.shape) == 1
+    # Extent symbol should be udim
+    assert symbol.shape[0].name == "udim"
+    assert symbol.shape[0] is udim
+    assert isinstance(symbol.shape[0].datatype, UnknownType)
+
+    # Extent given by variable with DeferredType
+    ddim = DataSymbol("ddim", DeferredType(),
+                      interface=UnresolvedInterface())
+    fake_parent.symbol_table.add(ddim)
+    reader = FortranStringReader("integer :: l12(ddim)")
+    fparser2spec = Specification_Part(reader).content[0]
+    processor.process_declarations(fake_parent, [fparser2spec], [])
+    symbol = fake_parent.symbol_table.lookup("l12")
+    assert symbol.name == "l12"
+    assert len(symbol.shape) == 1
+    # Extent symbol should now be ddim
+    assert symbol.shape[0].name == "ddim"
+    assert symbol.shape[0] is ddim
+    assert isinstance(symbol.shape[0].datatype, DeferredType)
+
 
 @pytest.mark.usefixtures("f2008_parser")
 def test_process_not_supported_declarations():
@@ -1525,7 +1554,6 @@ def test_deferred_array_size():
 def test_unresolved_array_size():
     ''' Check that we handle the case where we do not find an explicit
     declaration of a symbol used in the definition of an array extent. '''
-    from psyclone.psyir.symbols import UnresolvedInterface
     fake_parent = KernelSchedule("dummy_schedule")
     processor = Fparser2Reader()
     reader = FortranStringReader("real, dimension(n) :: array3")
diff --git a/src/psyclone/tests/psyir/symbols/datatype_test.py b/src/psyclone/tests/psyir/symbols/datatype_test.py
index 6c96b8823..27c406dca 100644
--- a/src/psyclone/tests/psyir/symbols/datatype_test.py
+++ b/src/psyclone/tests/psyir/symbols/datatype_test.py
@@ -222,7 +222,7 @@ def test_arraytype_invalid_shape():
     scalar_type = ScalarType(ScalarType.Intrinsic.REAL, 4)
     with pytest.raises(TypeError) as excinfo:
         _ = ArrayType(scalar_type, None)
-    assert ("ArrayType expected 'shape' argument to be of type list but "
+    assert ("ArrayType 'shape' must be of type list but "
             "found 'NoneType'." in str(excinfo.value))
 
 

pip install -e .[test]
parse_log_pytest
requirements.txt
pytest
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
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
pluggy==1.0.0
-e git+https://github.com/stfc/PSyclone.git@88acc48382c5f0de5d95dbb256fd6213a27c0bbf#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
tomli==1.2.3
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
      - 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
      - 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
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - wrapt==1.16.0
      - zipp==3.6.0
prefix: /opt/conda/envs/PSyclone

src/psyclone/tests/psyir/frontend/fparser2_test.py::test_process_array_declarations src/psyclone/tests/psyir/symbols/datatype_test.py::test_arraytype_invalid_shape
src/psyclone/tests/psyir/frontend/fparser2_test.py::test_nodes_to_code_block_1
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_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/tests/psyir/symbols/datatype_test.py::test_datatype src/psyclone/tests/psyir/symbols/datatype_test.py::test_deferredtype src/psyclone/tests/psyir/symbols/datatype_test.py::test_deferredtype_str src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.INTEGER-Precision.SINGLE] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.INTEGER-Precision.DOUBLE] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.INTEGER-Precision.UNDEFINED] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.REAL-Precision.SINGLE] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.REAL-Precision.DOUBLE] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.REAL-Precision.UNDEFINED] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.BOOLEAN-Precision.SINGLE] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.BOOLEAN-Precision.DOUBLE] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.BOOLEAN-Precision.UNDEFINED] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.CHARACTER-Precision.SINGLE] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.CHARACTER-Precision.DOUBLE] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_enum_precision[Intrinsic.CHARACTER-Precision.UNDEFINED] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.INTEGER-1] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.INTEGER-8] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.INTEGER-16] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.REAL-1] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.REAL-8] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.REAL-16] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.BOOLEAN-1] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.BOOLEAN-8] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.BOOLEAN-16] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.CHARACTER-1] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.CHARACTER-8] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_int_precision[Intrinsic.CHARACTER-16] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_datasymbol_precision[Intrinsic.INTEGER] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_datasymbol_precision[Intrinsic.REAL] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_datasymbol_precision[Intrinsic.BOOLEAN] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_datasymbol_precision[Intrinsic.CHARACTER] src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_invalid_intrinsic_type src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_invalid_precision_type src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_invalid_precision_int_value src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_invalid_precision_datasymbol src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_str src/psyclone/tests/psyir/symbols/datatype_test.py::test_scalartype_immutable src/psyclone/tests/psyir/symbols/datatype_test.py::test_arraytype src/psyclone/tests/psyir/symbols/datatype_test.py::test_arraytype_invalid_datatype src/psyclone/tests/psyir/symbols/datatype_test.py::test_arraytype_invalid_shape_dimension_1 src/psyclone/tests/psyir/symbols/datatype_test.py::test_arraytype_invalid_shape_dimension_2 src/psyclone/tests/psyir/symbols/datatype_test.py::test_arraytype_str src/psyclone/tests/psyir/symbols/datatype_test.py::test_arraytype_str_invalid src/psyclone/tests/psyir/symbols/datatype_test.py::test_arraytype_immutable src/psyclone/tests/psyir/symbols/datatype_test.py::test_unknown_type
external/fparser changelog src/psyclone/psyir/symbols/datatypes.py .travis.yml src/psyclone/psyir/frontend/fparser2.py
external/fparser changelog src/psyclone/psyir/symbols/datatypes.py .travis.yml src/psyclone/psyir/frontend/fparser2.py