public StackVarHidingProofGenerator(ProofGenerationParams i_pgp, StackVariableHidingStrategyDecl i_strategy) : base(i_pgp) { strategy = i_strategy; hiddenVariablesMethodName = strategy.MethodName; hiddenVariables = new HashSet <string>(strategy.Variables); suppressedPCs = new HashSet <ArmadaPC>(); }
public StackVarHidingProofGenerator(ProofGenerationParams i_pgp, StackVariableHidingStrategyDecl i_strategy) : base(i_pgp, false) { strategy = i_strategy; hiddenVariablesMethodName = strategy.MethodName; hiddenVariables = new HashSet <string>(strategy.Variables); foreach (var varName in strategy.Variables) { var v = pgp.symbolsLow.Lookup(hiddenVariablesMethodName, varName); if (!(v is MethodStackFrameUnaddressableLocalArmadaVariable)) { AH.PrintError(pgp.prog, $"Variable {hiddenVariablesMethodName}.{varName} isn't a noaddr stack variable, but stack_var_hiding can only hide noaddr stack variables"); } } }