+ if (constraint != null) {
+
+ // Set<CompositeLocation> inputGLB = new HashSet<CompositeLocation>();
+ // inputGLB.add(returnValueLoc);
+ // inputGLB.add(constraint);
+ // returnValueLoc =
+ // CompositeLattice.calculateGLB(inputGLB,
+ // generateErrorMessage(md.getClassDesc(), rn));
+
+ // if (!returnValueLoc.get(returnValueLoc.getSize() - 1).isTop()) {
+ // if (!CompositeLattice.isGreaterThan(constraint, returnValueLoc,
+ // generateErrorMessage(md.getClassDesc(), rn))) {
+ // System.out.println("returnValueLoc.get(returnValueLoc.getSize() - 1).isTop()="
+ // + returnValueLoc.get(returnValueLoc.getSize() - 1).isTop());
+ // throw new Error("The value flow from " + constraint + " to " +
+ // returnValueLoc
+ // + " does not respect location hierarchy on the assignment " +
+ // rn.printNode(0)
+ // + " at " + md.getClassDesc().getSourceFileName() + "::" +
+ // rn.getNumLine());
+ // }
+ // }
+
+ if (!CompositeLattice.isGreaterThan(constraint, declaredReturnLoc,
+ generateErrorMessage(md.getClassDesc(), rn))) {
+ throw new Error("The value flow from " + constraint + " to " + declaredReturnLoc
+ + " does not respect location hierarchy on the assignment " + rn.printNode(0)
+ + " at " + md.getClassDesc().getSourceFileName() + "::" + rn.getNumLine());
+ }
+
+ }
+