public override IPStmt VisitAssertStmt(PParser.AssertStmtContext context) { IPExpr assertion = exprVisitor.Visit(context.expr()); if (!PrimitiveType.Bool.IsSameTypeAs(assertion.Type)) { throw handler.TypeMismatch(context.expr(), assertion.Type, PrimitiveType.Bool); } string message = context.StringLiteral()?.GetText() ?? ""; if (message.StartsWith("\"")) { message = message.Substring(1, message.Length - 2); } return(new AssertStmt(context, assertion, message)); }
public override IPStmt VisitAssertStmt(PParser.AssertStmtContext context) { IPExpr assertion = exprVisitor.Visit(context.assertion); if (!PrimitiveType.Bool.IsSameTypeAs(assertion.Type)) { throw handler.TypeMismatch(context.assertion, assertion.Type, PrimitiveType.Bool); } IPExpr message; if (context.message == null) { message = new StringExpr(context, "", new List <IPExpr>()); } else { message = exprVisitor.Visit(context.message); if (!message.Type.IsSameTypeAs(PrimitiveType.String)) { throw handler.TypeMismatch(context.message, message.Type, PrimitiveType.String); } } return(new AssertStmt(context, assertion, message)); }