camfort-0.800: src/Camfort/Specification/Units/Strip.hs
{-
Copyright 2016, Dominic Orchard, Andrew Rice, Mistral Contrastin, Matthew Danish
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-}
module Camfort.Specification.Units.Strip where
import Data.Data
import Data.Char
import Data.Generics.Uniplate.Operations
import Camfort.Analysis.Annotations hiding (Unitless)
import Camfort.Specification.Units.Environment
import Camfort.Specification.Units.Synthesis
import Camfort.Transformation.Syntax
{-| DEPRECATED: Provide functionality for stripping out unit annotations -}
{-
removeUnitsInBlock :: Block Annotation -> Block Annotation
removeUnitsInBlock = transformBi deleteUnits
deleteUnits :: Decl Annotation -> Decl Annotation
deleteUnits (Decl a sp@(s1, s2) d t) | hasUnits t =
Decl a' (dropLine sp) d t'
where a' = a { refactored = Just $ toCol0 s1 }
t' = deleteUnit t
deleteUnits (MeasureUnitDef a sp@(s1, s2) d) =
NullDecl a' sp'
where a' = a { refactored = Just s1 }
sp' = (toCol0 s1, snd $ dropLine sp)
deleteUnits decl = decl
deleteUnit :: Type Annotation -> Type Annotation
deleteUnit (BaseType aa tt attrs kind len) =
BaseType aa tt (filter (not . isUnit) attrs) kind len
deleteUnit (ArrayT dims aa tt attrs kind len) =
ArrayT dims aa tt (filter (not . isUnit) attrs) kind len
-}