File tree Expand file tree Collapse file tree 3 files changed +20
-2
lines changed
src/Language/Fortran/Analysis
test/Language/Fortran/Analysis Expand file tree Collapse file tree 3 files changed +20
-2
lines changed Original file line number Diff line number Diff line change 1+ ### (unreleased)
2+ * Fixed pretty printing of array semantic types
3+
14### 0.16.7
25 * Added mention of Fortran 2003 version support in the help message
36 * Improved parsing of ` allocate ` statements
Original file line number Diff line number Diff line change @@ -66,7 +66,7 @@ instance Pretty SemType where
6666 TLogical k -> " logical" <> pd k
6767 TByte k -> " byte" <> pd k
6868 TCharacter _ _ -> " character(TODO)"
69- TArray st dims -> pprint' v st <> pprint' v dims
69+ TArray st dims -> pprint' v st <> pdims v dims
7070 TCustom str -> pprint' v (TypeCustom str)
7171 | otherwise = \ case
7272 TInteger k -> " integer" <> ad k
@@ -75,11 +75,13 @@ instance Pretty SemType where
7575 TLogical k -> " logical" <> ad k
7676 TByte k -> " byte" <> ad k
7777 TCharacter _ _ -> " character*TODO"
78- TArray st dims -> pprint' v st <> pprint' v dims
78+ TArray st dims -> pprint' v st <> pdims v dims
7979 TCustom str -> pprint' v (TypeCustom str)
8080 where
8181 pd = Pretty. parens . doc
8282 ad k = doc ' *' <> doc k
83+ pdims v dims = maybe Pretty. empty (pprint' v) (dimsTraverse dims)
84+
8385
8486-- | Convert 'Dimensions' data type to its previous type synonym
8587-- @(Maybe [(Int, Int)])@.
Original file line number Diff line number Diff line change 1+ {-# LANGUAGE OverloadedLists #-}
2+ {-# LANGUAGE OverloadedStrings #-}
3+
14module Language.Fortran.Analysis.SemanticTypesSpec where
25
36import Test.Hspec
@@ -7,6 +10,10 @@ import Language.Fortran.Analysis.SemanticTypes
710import Language.Fortran.AST
811import Language.Fortran.Version
912
13+ import Language.Fortran.PrettyPrint
14+ import Text.PrettyPrint hiding ((<>) )
15+ import Text.PrettyPrint.GenericPretty
16+
1017spec :: Spec
1118spec = do
1219 describe " Semantic types" $ do
@@ -29,3 +36,9 @@ spec = do
2936 let semtype = TCharacter CharLenStar 1
3037 typespec = TypeSpec () u TypeCharacter (Just (Selector () u (Just (ExpValue () u ValStar )) Nothing ))
3138 in recoverSemTypeTypeSpec () u Fortran90 semtype `shouldBe` typespec
39+
40+ it " prints semantic type with dimensions" $ do
41+ let dims = DimsExplicitShape ( [ Dim (Just 1 ) (Just 3 ), Dim (Just 1 ) (Just 4 ) ] )
42+ let semtype = TArray (TReal 8 ) dims
43+ pprint Fortran90 semtype Nothing `shouldBe` " real(8)(1:3, 1:4)"
44+
You can’t perform that action at this time.
0 commit comments