@Override public ReturnStmt clone() { if (expr == null) { return new ReturnStmt(); } return new ReturnStmt(expr.clone()); }
private Stmt fuzzReturnStmt() { return new ReturnStmt( fuzzExpr(fuzzingContext.getEnclosingFunction().getReturnType(), false, false, 0)); }
private IfStmt prepareReturnStmt(IInjectionPoint injectionPoint, IRandom generator, ShadingLanguageVersion shadingLanguageVersion, GenerationParams generationParams) { Type returnType = injectionPoint.getEnclosingFunction().getPrototype().getReturnType(); Stmt stmtToInject; if (returnType.hasCanonicalConstant()) { stmtToInject = new ReturnStmt(returnType.getCanonicalConstant()); } else if (returnType.getWithoutQualifiers() == VoidType.VOID) { stmtToInject = new ReturnStmt(); } else { stmtToInject = new BlockStmt(new ArrayList<>(), true); } return makeDeadConditional(injectionPoint, stmtToInject, generator, shadingLanguageVersion, generationParams); }
@Override public Stmt visitJump_statement(Jump_statementContext ctx) { if (ctx.CONTINUE() != null) { return ContinueStmt.INSTANCE; } if (ctx.BREAK() != null) { return BreakStmt.INSTANCE; } if (ctx.RETURN() != null) { if (ctx.expression() == null) { return new ReturnStmt(); } return new ReturnStmt(visitExpression(ctx.expression())); } assert ctx.DISCARD() != null; return DiscardStmt.INSTANCE; }
params), new BlockStmt(Arrays.asList( new ReturnStmt(be.getRhs().clone())), false)), enclosingFunction);
private void addSpecialDeclarations() { if (fd.getPrototype().getReturnType().getWithoutQualifiers() != VoidType.VOID) { fd.getBody().insertStmt(0, new DeclarationStmt( new VariablesDeclaration(fd.getPrototype().getReturnType().getWithoutQualifiers(), new VariableDeclInfo(makeReturnValueName(), null, null)))); fd.getBody().addStmt(new ReturnStmt(makeReturnValue())); } fd.getBody().insertStmt(0, new DeclarationStmt( new VariablesDeclaration(BasicType.BOOL, new VariableDeclInfo(makeHasReturnedName(), null, new ScalarInitializer(BoolConstantExpr.FALSE))))); }