@Test public void testOutParamFrexpHasSideEffects() throws Exception { final String shader = "void main() { " + " int out1;" + " ivec2 out2;" + " ivec3 out3;" + " ivec4 out4;" + " frexp(0.0, out1);" + " frexp(vec2(0.0), out2);" + " frexp(vec3(0.0), out3);" + " frexp(vec4(0.0), out4);" + "}"; final TranslationUnit tu = ParseHelper.parse(shader, ShaderKind.FRAGMENT); tu.setShadingLanguageVersion(ShadingLanguageVersion.ESSL_310); new StandardVisitor() { @Override public void visitFunctionCallExpr(FunctionCallExpr expr) { assertTrue(expr.getCallee().equals("frexp")); assertFalse(SideEffectChecker.isSideEffectFree(expr, ShadingLanguageVersion.ESSL_310, ShaderKind.FRAGMENT)); } }.visit(tu); }
public static boolean isSideEffectFree(Stmt stmt, ShadingLanguageVersion shadingLanguageVersion, ShaderKind shaderKind) { return isSideEffectFreeVisitor(stmt, shadingLanguageVersion, shaderKind); }
SideEffectChecker { public static boolean isSideEffectFree(Stmt stmt, ShadingLanguageVersion shadingLanguageVersion, ShaderKind shaderKind) { return isSideEffectFreeVisitor(stmt, shadingLanguageVersion, shaderKind); } }
SideEffectChecker { public static boolean isSideEffectFree(Stmt stmt, ShadingLanguageVersion shadingLanguageVersion, ShaderKind shaderKind) { return isSideEffectFreeVisitor(stmt, shadingLanguageVersion, shaderKind); }  }
SideEffectChecker { public static boolean isSideEffectFree(Stmt stmt, ShadingLanguageVersion shadingLanguageVersion, ShaderKind shaderKind) { return isSideEffectFreeVisitor(stmt, shadingLanguageVersion, shaderKind); }  static boolean isSideEffectFree(Stmt stmt, ShadingLanguageVersion shadingLanguageVersion,
                                         ShaderKind shaderKind); static boolean isSideEffectFree(Expr expr, ShadingLanguageVersion shadingLanguageVersion,
                                         ShaderKind shaderKind); }
SideEffectChecker { public static boolean isSideEffectFree(Stmt stmt, ShadingLanguageVersion shadingLanguageVersion, ShaderKind shaderKind) { return isSideEffectFreeVisitor(stmt, shadingLanguageVersion, shaderKind); }  static boolean isSideEffectFree(Stmt stmt, ShadingLanguageVersion shadingLanguageVersion,
                                         ShaderKind shaderKind); static boolean isSideEffectFree(Expr expr, ShadingLanguageVersion shadingLanguageVersion,
                                         ShaderKind shaderKind);  }