private IEnumerable <ProgramState> TrySetObjectConstraint(ObjectConstraint constraint, SymbolicValueConstraints oldConstraints, ProgramState programState) { if (oldConstraints.HasConstraint <BoolConstraint>()) { if (constraint == ObjectConstraint.Null) { return(Enumerable.Empty <ProgramState>()); } return(new[] { programState }); } var oldObjectConstraint = oldConstraints.GetConstraintOrDefault <ObjectConstraint>(); if (oldObjectConstraint != null) { if (oldObjectConstraint != constraint) { return(Enumerable.Empty <ProgramState>()); } return(new[] { programState.SetConstraint(this, constraint) }); } throw new NotSupportedException($"Neither {nameof(BoolConstraint)}, nor {nameof(ObjectConstraint)}"); }
private void SetupObject(ObjectConstraint constraint) { AllowsCustomFields = false; IsCastable = true; IsIndexable = false; Fields = null; Types = TypeHelper.GetDerivedTypes <Component>(true).ToList(); }
private IEnumerable <ProgramState> UpdateObjectConstraint(StringConstraint constraint, ProgramState programState, ObjectConstraint oldObjectConstraint) { if (oldObjectConstraint == ObjectConstraint.Null) { if (constraint == StringConstraint.FullString || constraint == StringConstraint.EmptyString || constraint == StringConstraint.FullNotWhiteSpaceString || constraint == StringConstraint.WhiteSpaceString) { return(Enumerable.Empty <ProgramState>()); } return(new[] { programState }); } else { if (constraint == StringConstraint.FullOrNullString) { return(new[] { programState.SetConstraint(this, StringConstraint.FullString) }); } if (constraint == StringConstraint.NotWhiteSpaceString) { return(new[] { programState.SetConstraint(this, StringConstraint.FullNotWhiteSpaceString) }); } return(new[] { programState.SetConstraint(this, constraint) }); } }