diff --git a/bin/rtree-c/ReduceC.hs b/bin/rtree-c/ReduceC.hs index 6ba2a1058d8e77f04972fa9003926746a410731c..778e8c0ac11f79760470c4b554385d3a61ab0c6d 100644 --- a/bin/rtree-c/ReduceC.hs +++ b/bin/rtree-c/ReduceC.hs @@ -91,6 +91,15 @@ instance CReducible C.CDeclaration where pure $ C.CDeclarationItem d Nothing Nothing a -> error (show a) pure (C.CDecl spc decl' ni) + C.CDecl spc@[C.CTypeSpec (C.CTypeDef i ni')] decl ni -> do + x <- gets (Map.lookup i) + case x of + Just (Type rst) -> do + decl' <- collectNonEmpty' (reduceCDeclarationItem $ identifiers rst) decl + pure $ C.CDecl rst decl' ni + Nothing -> do + decl' <- collectNonEmpty' (reduceCDeclarationItem $ identifiers spc) decl + pure $ C.CDecl spc decl' ni C.CDecl spc decl ni -> do decl' <- collectNonEmpty' (reduceCDeclarationItem $ identifiers spc) decl pure $ C.CDecl spc decl' ni