Skip to content

Commit b132659

Browse files
authored
Add HasCallStack constraints (#506)
* Kore.AST.Valid: Add HasCallStack constraints * freeEpVariables: Avoid calling toMLPattern
1 parent 425e5ea commit b132659

File tree

3 files changed

+29
-10
lines changed

3 files changed

+29
-10
lines changed

kore/src/Kore/AST/Valid.hs

+18-7
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ import qualified Data.Set as Set
103103
import Data.Text
104104
( Text )
105105
import Data.These
106+
import GHC.Stack
107+
( HasCallStack )
106108

107109
import Kore.Annotation.Valid as Valid
108110
import Kore.AST.Lens
@@ -125,6 +127,7 @@ getSort (extract -> Valid { patternSort }) = patternSort
125127
forceSort
126128
:: ( Traversable domain
127129
, Unparse pattern'
130+
, HasCallStack
128131
, valid ~ Valid (variable level) level
129132
, pattern' ~ PurePattern level domain variable valid
130133
)
@@ -226,9 +229,10 @@ same sort.
226229
-}
227230
makeSortsAgree
228231
:: ( Traversable domain
232+
, Unparse pattern'
233+
, HasCallStack
229234
, valid ~ Valid (variable level) level
230235
, pattern' ~ PurePattern level domain variable valid
231-
, Unparse pattern'
232236
)
233237
=> (pattern' -> pattern' -> Sort level -> a)
234238
-> pattern'
@@ -262,9 +266,10 @@ getRigidSort pattern' =
262266
mkAnd
263267
:: ( Ord (variable level)
264268
, Traversable domain
269+
, Unparse pattern'
270+
, HasCallStack
265271
, valid ~ Valid (variable level) level
266272
, pattern' ~ PurePattern level domain variable valid
267-
, Unparse pattern'
268273
)
269274
=> pattern'
270275
-> pattern'
@@ -345,6 +350,7 @@ applyAlias
345350
:: ( Traversable domain
346351
, Ord (variable level)
347352
, Unparse pattern'
353+
, HasCallStack
348354
, valid ~ Valid (variable level) level
349355
, pattern' ~ PurePattern level domain variable valid
350356
)
@@ -713,9 +719,10 @@ mkForall forallVariable forallChild =
713719
mkIff
714720
:: ( Ord (variable level)
715721
, Traversable domain
722+
, Unparse pattern'
723+
, HasCallStack
716724
, valid ~ Valid (variable level) level
717725
, pattern' ~ PurePattern level domain variable valid
718-
, Unparse pattern'
719726
)
720727
=> pattern'
721728
-> pattern'
@@ -738,9 +745,10 @@ mkIff = makeSortsAgree mkIffWorker
738745
mkImplies
739746
:: ( Ord (variable level)
740747
, Traversable domain
748+
, Unparse pattern'
749+
, HasCallStack
741750
, valid ~ Valid (variable level) level
742751
, pattern' ~ PurePattern level domain variable valid
743-
, Unparse pattern'
744752
)
745753
=> pattern'
746754
-> pattern'
@@ -766,9 +774,10 @@ See also: 'mkIn_'
766774
mkIn
767775
:: ( Ord (variable level)
768776
, Traversable domain
777+
, Unparse pattern'
778+
, HasCallStack
769779
, valid ~ Valid (variable level) level
770780
, pattern' ~ PurePattern level domain variable valid
771-
, Unparse pattern'
772781
)
773782
=> Sort level
774783
-> pattern'
@@ -850,9 +859,10 @@ mkNot notChild =
850859
mkOr
851860
:: ( Ord (variable level)
852861
, Traversable domain
862+
, Unparse pattern'
863+
, HasCallStack
853864
, valid ~ Valid (variable level) level
854865
, pattern' ~ PurePattern level domain variable valid
855-
, Unparse pattern'
856866
)
857867
=> pattern'
858868
-> pattern'
@@ -875,9 +885,10 @@ mkOr = makeSortsAgree mkOrWorker
875885
mkRewrites
876886
:: ( Ord (variable Object)
877887
, Traversable domain
888+
, Unparse pattern'
889+
, HasCallStack
878890
, valid ~ Valid (variable Object) Object
879891
, pattern' ~ PurePattern Object domain variable valid
880-
, Unparse pattern'
881892
)
882893
=> pattern'
883894
-> pattern'

kore/src/Kore/Predicate/Predicate.hs

+5-1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ import Data.Set
5454
( Set )
5555
import GHC.Generics
5656
( Generic )
57+
import GHC.Stack
58+
( HasCallStack )
5759

5860
import Kore.AST.Pure
5961
import Kore.AST.Valid
@@ -141,7 +143,9 @@ the resulting pattern into a particular sort.
141143
142144
-}
143145
fromPredicate
144-
:: Unparse (variable level)
146+
:: ( Unparse (variable level)
147+
, HasCallStack
148+
)
145149
=> Sort level -- ^ Sort of resulting pattern
146150
-> Predicate level variable
147151
-> StepPattern level variable

kore/src/Kore/Step/Representation/ExpandedPattern.hs

+6-2
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ import qualified Data.Set as Set
4848
import qualified Data.Text.Prettyprint.Doc as Pretty
4949
import GHC.Generics
5050
( Generic )
51+
import GHC.Stack
52+
( HasCallStack )
5153

5254
import Kore.Annotation.Valid
5355
import Kore.AST.Pure
@@ -241,8 +243,9 @@ freeEpVariables
241243
)
242244
=> ExpandedPattern level variable
243245
-> Set.Set (variable level)
244-
freeEpVariables =
245-
freePureVariables . toMLPattern
246+
freeEpVariables ep@Predicated { term } =
247+
freePureVariables term
248+
<> Kore.Step.Representation.ExpandedPattern.freeVariables ep { term = () }
246249

247250
-- | Erase the @Predicated@ 'term' to yield a 'PredicateSubstitution'.
248251
erasePredicatedTerm
@@ -259,6 +262,7 @@ toMLPattern
259262
, Ord (variable level)
260263
, Show (variable level)
261264
, Unparse (variable level)
265+
, HasCallStack
262266
)
263267
=> ExpandedPattern level variable -> StepPattern level variable
264268
toMLPattern

0 commit comments

Comments
 (0)