public override Lazy <object> VisitNotExpression(QuestScriptParser.NotExpressionContext context) { var type = _scriptEnvironmentBuilder.TypeInferenceVisitor.Visit(context.expr); if (type != ObjectType.Boolean) { _scriptEnvironmentBuilder.Errors.Add(new UnexpectedTypeException(context, ObjectType.Boolean, type, context.expr, "In general, 'not' operators are applicable only on boolean expressions.")); return(new Lazy <object>(() => null)); } return(new Lazy <object>(() => { var val = context.expr.Accept(this).Value.GetValueOrLazyValue(); return Cast(!(dynamic)val, ObjectType.Boolean); })); }
public override ObjectType VisitNotExpression(QuestScriptParser.NotExpressionContext context) { return(context.expr.Accept(this) != ObjectType.Boolean ? ObjectType.Unknown : ObjectType.Boolean); }
public override bool VisitNotExpression(QuestScriptParser.NotExpressionContext context) { _output.AppendFormat("not "); context.expr.Accept(this); return(true); }