Пример #1
0
        private IEnumerable <Variable> AvailableLinearVars(Absy absy)
        {
            HashSet <Variable> availableVars =
                new HashSet <Variable>(linearTypeChecker.AvailableLinearVars(absyMap[absy]));

            // A bit hackish, since GlobalVariableLayerRange and LocalVariableIntroLayer return maximum layer range
            // respectively minimum layer if called on non-global respectively non-local variable.
            availableVars.RemoveWhere(v =>
                                      !civlTypeChecker.GlobalVariableLayerRange(v).Contains(layerNum) ||
                                      layerNum < civlTypeChecker.LocalVariableIntroLayer(v)
                                      );

            return(availableVars);
        }
 private IEnumerable <Variable> AvailableLinearLocalVars(Absy absy)
 {
     if (absy is Implementation impl)
     {
         return(FilterInParams((MapAbsy(impl) as Implementation).InParams));
     }
     if (absy is Procedure proc)
     {
         return(FilterInParams((MapAbsy(proc) as Procedure).InParams));
     }
     return(linearTypeChecker.AvailableLinearVars(MapAbsy(absy)).Where(v =>
                                                                       !(v is GlobalVariable) &&
                                                                       civlTypeChecker.LocalVariableLayerRange(v).Contains(layerNum)));
 }