implementation module Sapl.Transform.AddSelectors import Sapl.SaplStruct import StdBool, StdList instance addSelectors SaplTerm where addSelectors (SApplication v ts) = SApplication v (map addSelectors ts) addSelectors (SIf c t e) = SIf (addSelectors c) (addSelectors t) (addSelectors e) addSelectors st=:(SSelect t ps=:[(PCons _ vs, SVar x)]) # t` = addSelectors t | foldr (\v acc -> acc || eqVarByName v x) False vs = SSelector (SSelect t` ps) | otherwise = SSelect t` ps addSelectors (SLet t lds) = SLet (addSelectors t) (map addSelectors lds) addSelectors st = st instance addSelectors SaplLetDef where addSelectors (SaplLetDef v t) = SaplLetDef v (addSelectors t)