public override void VisitAssert(BoundAssertEx x) { base.VisitAssert(x); var args = x.ArgumentsInSourceOrder; // check number of parameters // check whether it is not always false or always true if (args.Length >= 1) { if (args[0].Value.ConstantValue.EqualsOptional(false.AsOptional())) { // always failing _diagnostics.Add(_routine, x.PhpSyntax, ErrorCode.WRN_AssertAlwaysFail); } if (TypeCtx.IsAString(args[0].Value.TypeRefMask)) { // deprecated and not supported _diagnostics.Add(_routine, args[0].Value.PhpSyntax, ErrorCode.WRN_StringAssertionDeprecated); } if (args.Length > 2) { // too many args _diagnostics.Add(_routine, x.PhpSyntax, ErrorCode.WRN_TooManyArguments, "assert", 2, args.Length); } } else { // assert() expects at least 1 parameter, 0 given _diagnostics.Add(_routine, x.PhpSyntax, ErrorCode.WRN_MissingArguments, "assert", 1, 0); } }
public virtual TResult VisitAssert(BoundAssertEx x) => VisitRoutineCall(x);
public override object VisitAssert(BoundAssertEx x) { return(x.Update(VisitImmutableArray(x.ArgumentsInSourceOrder))); }
public virtual void VisitAssert(BoundAssertEx x) { VisitRoutineCall(x); }