From: yeom Date: Mon, 3 Oct 2011 00:28:08 +0000 (+0000) Subject: bug fix. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=f30751a0e91b1262a9eb775ef2fe008150e5345f;p=IRC.git bug fix. --- diff --git a/Robust/src/Analysis/SSJava/DefinitelyWrittenCheck.java b/Robust/src/Analysis/SSJava/DefinitelyWrittenCheck.java index 6cf343e4..f23e0f0c 100644 --- a/Robust/src/Analysis/SSJava/DefinitelyWrittenCheck.java +++ b/Robust/src/Analysis/SSJava/DefinitelyWrittenCheck.java @@ -1422,6 +1422,7 @@ public class DefinitelyWrittenCheck { case FKind.FlatFieldNode: case FKind.FlatElementNode: { + if (fn.kind() == FKind.FlatFieldNode) { FlatFieldNode ffn = (FlatFieldNode) fn; lhs = ffn.getDst(); @@ -1442,7 +1443,14 @@ public class DefinitelyWrittenCheck { // read field NTuple srcHeapPath = mapHeapPath.get(rhs); - NTuple fldHeapPath = new NTuple(srcHeapPath.getList()); + System.out.println("rhs=" + rhs); + NTuple fldHeapPath; + if (srcHeapPath != null) { + fldHeapPath = new NTuple(srcHeapPath.getList()); + } else { + // if srcHeapPath is null, it is static reference + fldHeapPath = new NTuple(); + } fldHeapPath.add(fld); if (fld.getType().isImmutable()) { diff --git a/Robust/src/Analysis/SSJava/FlowDownCheck.java b/Robust/src/Analysis/SSJava/FlowDownCheck.java index 78d82df1..9a7855c3 100644 --- a/Robust/src/Analysis/SSJava/FlowDownCheck.java +++ b/Robust/src/Analysis/SSJava/FlowDownCheck.java @@ -1298,7 +1298,6 @@ public class FlowDownCheck { inputSet.add(rightLoc); CompositeLocation glbCompLoc = CompositeLattice.calculateGLB(inputSet, generateErrorMessage(cd, on)); - // System.out.println("# glbCompLoc=" + glbCompLoc); return glbCompLoc; default: @@ -1381,7 +1380,7 @@ public class FlowDownCheck { loc.addLocation(fieldLoc); } else if (d == null) { // access static field - ClassDescriptor cd = nn.getClassDesc(); + FieldDescriptor fd = nn.getField(); MethodLattice localLattice = ssjava.getMethodLattice(md); String globalLocId = localLattice.getGlobalLoc(); @@ -1390,6 +1389,10 @@ public class FlowDownCheck { + generateErrorMessage(md.getClassDesc(), nn)); } loc.addLocation(new Location(md, globalLocId)); + + Location fieldLoc = (Location) fd.getType().getExtension(); + loc.addLocation(fieldLoc); + return loc; }