BugReporterContext &BRC);
std::shared_ptr<PathDiagnosticPiece>
- VisitTrueTest(const Expr *Cond, bool tookTrue, BugReporterContext &BRC,
- BugReport &R, const ExplodedNode *N);
+ VisitTrueTest(const Expr *Cond, BugReporterContext &BRC, BugReport &R,
+ const ExplodedNode *N, bool TookTrue);
std::shared_ptr<PathDiagnosticPiece>
- VisitTrueTest(const Expr *Cond, const DeclRefExpr *DR, const bool tookTrue,
- BugReporterContext &BRC, BugReport &R, const ExplodedNode *N);
+ VisitTrueTest(const Expr *Cond, const DeclRefExpr *DR,
+ BugReporterContext &BRC, BugReport &R, const ExplodedNode *N,
+ bool TookTrue, bool IsAssuming);
std::shared_ptr<PathDiagnosticPiece>
VisitTrueTest(const Expr *Cond, const BinaryOperator *BExpr,
- const bool tookTrue, BugReporterContext &BRC, BugReport &R,
- const ExplodedNode *N);
+ BugReporterContext &BRC, BugReport &R, const ExplodedNode *N,
+ bool TookTrue, bool IsAssuming);
std::shared_ptr<PathDiagnosticPiece>
VisitConditionVariable(StringRef LhsString, const Expr *CondVarExpr,
- const bool tookTrue, BugReporterContext &BRC,
- BugReport &R, const ExplodedNode *N);
+ BugReporterContext &BRC, BugReport &R,
+ const ExplodedNode *N, bool TookTrue);
bool patternMatch(const Expr *Ex,
const Expr *ParentEx,
RLCV->getStore() == RightNode->getState()->getStore();
}
+static Optional<const llvm::APSInt *>
+getConcreteIntegerValue(const Expr *CondVarExpr, const ExplodedNode *N) {
+ ProgramStateRef State = N->getState();
+ const LocationContext *LCtx = N->getLocationContext();
+
+ // The declaration of the value may rely on a pointer so take its l-value.
+ if (const auto *DRE = dyn_cast_or_null<DeclRefExpr>(CondVarExpr)) {
+ if (const auto *VD = dyn_cast_or_null<VarDecl>(DRE->getDecl())) {
+ SVal DeclSVal = State->getSVal(State->getLValue(VD, LCtx));
+ if (auto DeclCI = DeclSVal.getAs<nonloc::ConcreteInt>())
+ return &DeclCI->getValue();
+ }
+ }
+
+ return {};
+}
+
//===----------------------------------------------------------------------===//
// Definitions for bug reporter visitors.
//===----------------------------------------------------------------------===//
std::shared_ptr<PathDiagnosticPiece>
ConditionBRVisitor::VisitNodeImpl(const ExplodedNode *N,
BugReporterContext &BRC, BugReport &BR) {
- ProgramPoint progPoint = N->getLocation();
+ ProgramPoint ProgPoint = N->getLocation();
+ const std::pair<const ProgramPointTag *, const ProgramPointTag *> &Tags =
+ ExprEngine::geteagerlyAssumeBinOpBifurcationTags();
// If an assumption was made on a branch, it should be caught
// here by looking at the state transition.
- if (Optional<BlockEdge> BE = progPoint.getAs<BlockEdge>()) {
- const CFGBlock *srcBlk = BE->getSrc();
- if (const Stmt *term = srcBlk->getTerminatorStmt())
- return VisitTerminator(term, N, srcBlk, BE->getDst(), BR, BRC);
+ if (Optional<BlockEdge> BE = ProgPoint.getAs<BlockEdge>()) {
+ const CFGBlock *SrcBlock = BE->getSrc();
+ if (const Stmt *Term = SrcBlock->getTerminatorStmt()) {
+ // If the tag of the previous node is 'Eagerly Assume...' the current
+ // 'BlockEdge' has the same constraint information. We do not want to
+ // report the value as it is just an assumption on the predecessor node
+ // which will be caught in the next VisitNode() iteration as a 'PostStmt'.
+ const ProgramPointTag *PreviousNodeTag =
+ N->getFirstPred()->getLocation().getTag();
+ if (PreviousNodeTag == Tags.first || PreviousNodeTag == Tags.second)
+ return nullptr;
+
+ return VisitTerminator(Term, N, SrcBlock, BE->getDst(), BR, BRC);
+ }
return nullptr;
}
- if (Optional<PostStmt> PS = progPoint.getAs<PostStmt>()) {
- const std::pair<const ProgramPointTag *, const ProgramPointTag *> &tags =
- ExprEngine::geteagerlyAssumeBinOpBifurcationTags();
-
- const ProgramPointTag *tag = PS->getTag();
- if (tag == tags.first)
- return VisitTrueTest(cast<Expr>(PS->getStmt()), true,
- BRC, BR, N);
- if (tag == tags.second)
- return VisitTrueTest(cast<Expr>(PS->getStmt()), false,
- BRC, BR, N);
+ if (Optional<PostStmt> PS = ProgPoint.getAs<PostStmt>()) {
+ const ProgramPointTag *CurrentNodeTag = PS->getTag();
+ if (CurrentNodeTag != Tags.first && CurrentNodeTag != Tags.second)
+ return nullptr;
- return nullptr;
+ bool TookTrue = CurrentNodeTag == Tags.first;
+ return VisitTrueTest(cast<Expr>(PS->getStmt()), BRC, BR, N, TookTrue);
}
return nullptr;
assert(Cond);
assert(srcBlk->succ_size() == 2);
- const bool tookTrue = *(srcBlk->succ_begin()) == dstBlk;
- return VisitTrueTest(Cond, tookTrue, BRC, R, N);
+ const bool TookTrue = *(srcBlk->succ_begin()) == dstBlk;
+ return VisitTrueTest(Cond, BRC, R, N, TookTrue);
}
std::shared_ptr<PathDiagnosticPiece>
-ConditionBRVisitor::VisitTrueTest(const Expr *Cond, bool tookTrue,
- BugReporterContext &BRC, BugReport &R,
- const ExplodedNode *N) {
+ConditionBRVisitor::VisitTrueTest(const Expr *Cond, BugReporterContext &BRC,
+ BugReport &R, const ExplodedNode *N,
+ bool TookTrue) {
ProgramStateRef CurrentState = N->getState();
- ProgramStateRef PreviousState = N->getFirstPred()->getState();
+ ProgramStateRef PrevState = N->getFirstPred()->getState();
const LocationContext *LCtx = N->getLocationContext();
// If the constraint information is changed between the current and the
// previous program state we assuming the newly seen constraint information.
// If we cannot evaluate the condition (and the constraints are the same)
// the analyzer has no information about the value and just assuming it.
- if (BRC.getStateManager().haveEqualConstraints(CurrentState, PreviousState) &&
- CurrentState->getSVal(Cond, LCtx).isValid())
- return nullptr;
+ bool IsAssuming =
+ !BRC.getStateManager().haveEqualConstraints(CurrentState, PrevState) ||
+ CurrentState->getSVal(Cond, LCtx).isUnknownOrUndef();
// These will be modified in code below, but we need to preserve the original
// values in case we want to throw the generic message.
const Expr *CondTmp = Cond;
- bool tookTrueTmp = tookTrue;
+ bool TookTrueTmp = TookTrue;
while (true) {
CondTmp = CondTmp->IgnoreParenCasts();
break;
case Stmt::BinaryOperatorClass:
if (auto P = VisitTrueTest(Cond, cast<BinaryOperator>(CondTmp),
- tookTrueTmp, BRC, R, N))
+ BRC, R, N, TookTrueTmp, IsAssuming))
return P;
break;
case Stmt::DeclRefExprClass:
if (auto P = VisitTrueTest(Cond, cast<DeclRefExpr>(CondTmp),
- tookTrueTmp, BRC, R, N))
+ BRC, R, N, TookTrueTmp, IsAssuming))
return P;
break;
case Stmt::UnaryOperatorClass: {
const auto *UO = cast<UnaryOperator>(CondTmp);
if (UO->getOpcode() == UO_LNot) {
- tookTrueTmp = !tookTrueTmp;
+ TookTrueTmp = !TookTrueTmp;
CondTmp = UO->getSubExpr();
continue;
}
// Condition too complex to explain? Just say something so that the user
// knew we've made some path decision at this point.
+ // If it is too complex and we know the evaluation of the condition do not
+ // repeat the note from 'BugReporter.cpp'
+ if (!IsAssuming)
+ return nullptr;
+
PathDiagnosticLocation Loc(Cond, BRC.getSourceManager(), LCtx);
if (!Loc.isValid() || !Loc.asLocation().isValid())
return nullptr;
return std::make_shared<PathDiagnosticEventPiece>(
- Loc, tookTrue ? GenericTrueMessage : GenericFalseMessage);
+ Loc, TookTrue ? GenericTrueMessage : GenericFalseMessage);
}
bool ConditionBRVisitor::patternMatch(const Expr *Ex,
return false;
}
-std::shared_ptr<PathDiagnosticPiece>
-ConditionBRVisitor::VisitTrueTest(const Expr *Cond, const BinaryOperator *BExpr,
- const bool tookTrue, BugReporterContext &BRC,
- BugReport &R, const ExplodedNode *N) {
+std::shared_ptr<PathDiagnosticPiece> ConditionBRVisitor::VisitTrueTest(
+ const Expr *Cond, const BinaryOperator *BExpr, BugReporterContext &BRC,
+ BugReport &R, const ExplodedNode *N, bool TookTrue, bool IsAssuming) {
bool shouldInvert = false;
Optional<bool> shouldPrune;
if (BinaryOperator::isAssignmentOp(Op)) {
// For assignment operators, all that we care about is that the LHS
// evaluates to "true" or "false".
- return VisitConditionVariable(LhsString, BExpr->getLHS(), tookTrue,
- BRC, R, N);
+ return VisitConditionVariable(LhsString, BExpr->getLHS(), BRC, R, N,
+ TookTrue);
}
// For non-assignment operations, we require that we can understand
// Should we invert the strings if the LHS is not a variable name?
SmallString<256> buf;
llvm::raw_svector_ostream Out(buf);
- Out << "Assuming " << (shouldInvert ? RhsString : LhsString) << " is ";
+ Out << (IsAssuming ? "Assuming " : "")
+ << (shouldInvert ? RhsString : LhsString) << " is ";
// Do we need to invert the opcode?
if (shouldInvert)
case BO_GE: Op = BO_LE; break;
}
- if (!tookTrue)
+ if (!TookTrue)
switch (Op) {
case BO_EQ: Op = BO_NE; break;
case BO_NE: Op = BO_EQ; break;
Out << (shouldInvert ? LhsString : RhsString);
const LocationContext *LCtx = N->getLocationContext();
PathDiagnosticLocation Loc(Cond, BRC.getSourceManager(), LCtx);
+
+ // If we know the value create a pop-up note.
+ if (!IsAssuming)
+ return std::make_shared<PathDiagnosticPopUpPiece>(Loc, Out.str());
+
auto event = std::make_shared<PathDiagnosticEventPiece>(Loc, Out.str());
if (shouldPrune.hasValue())
event->setPrunable(shouldPrune.getValue());
}
std::shared_ptr<PathDiagnosticPiece> ConditionBRVisitor::VisitConditionVariable(
- StringRef LhsString, const Expr *CondVarExpr, const bool tookTrue,
- BugReporterContext &BRC, BugReport &report, const ExplodedNode *N) {
+ StringRef LhsString, const Expr *CondVarExpr, BugReporterContext &BRC,
+ BugReport &report, const ExplodedNode *N, bool TookTrue) {
// FIXME: If there's already a constraint tracker for this variable,
// we shouldn't emit anything here (c.f. the double note in
// test/Analysis/inlining/path-notes.c)
QualType Ty = CondVarExpr->getType();
if (Ty->isPointerType())
- Out << (tookTrue ? "not null" : "null");
+ Out << (TookTrue ? "not null" : "null");
else if (Ty->isObjCObjectPointerType())
- Out << (tookTrue ? "not nil" : "nil");
+ Out << (TookTrue ? "not nil" : "nil");
else if (Ty->isBooleanType())
- Out << (tookTrue ? "true" : "false");
+ Out << (TookTrue ? "true" : "false");
else if (Ty->isIntegralOrEnumerationType())
- Out << (tookTrue ? "non-zero" : "zero");
+ Out << (TookTrue ? "non-zero" : "zero");
else
return nullptr;
return event;
}
-std::shared_ptr<PathDiagnosticPiece>
-ConditionBRVisitor::VisitTrueTest(const Expr *Cond, const DeclRefExpr *DR,
- const bool tookTrue, BugReporterContext &BRC,
- BugReport &report, const ExplodedNode *N) {
- const auto *VD = dyn_cast<VarDecl>(DR->getDecl());
+std::shared_ptr<PathDiagnosticPiece> ConditionBRVisitor::VisitTrueTest(
+ const Expr *Cond, const DeclRefExpr *DRE, BugReporterContext &BRC,
+ BugReport &report, const ExplodedNode *N, bool TookTrue, bool IsAssuming) {
+ const auto *VD = dyn_cast<VarDecl>(DRE->getDecl());
if (!VD)
return nullptr;
SmallString<256> Buf;
llvm::raw_svector_ostream Out(Buf);
- Out << "Assuming '" << VD->getDeclName() << "' is ";
+ Out << (IsAssuming ? "Assuming '" : "'") << VD->getDeclName() << "' is ";
- QualType VDTy = VD->getType();
+ QualType Ty = VD->getType();
- if (VDTy->isPointerType())
- Out << (tookTrue ? "non-null" : "null");
- else if (VDTy->isObjCObjectPointerType())
- Out << (tookTrue ? "non-nil" : "nil");
- else if (VDTy->isScalarType())
- Out << (tookTrue ? "not equal to 0" : "0");
- else
+ if (Ty->isPointerType())
+ Out << (TookTrue ? "non-null" : "null");
+ else if (Ty->isObjCObjectPointerType())
+ Out << (TookTrue ? "non-nil" : "nil");
+ else if (Ty->isScalarType()) {
+ Optional<const llvm::APSInt *> IntValue;
+ if (!IsAssuming)
+ IntValue = getConcreteIntegerValue(DRE, N);
+
+ if (IsAssuming || !IntValue.hasValue())
+ Out << (TookTrue ? "not equal to 0" : "0");
+ else
+ Out << *IntValue.getValue();
+ } else
return nullptr;
const LocationContext *LCtx = N->getLocationContext();
PathDiagnosticLocation Loc(Cond, BRC.getSourceManager(), LCtx);
- auto event = std::make_shared<PathDiagnosticEventPiece>(Loc, Out.str());
+ // If we know the value create a pop-up note.
+ if (!IsAssuming)
+ return std::make_shared<PathDiagnosticPopUpPiece>(Loc, Out.str());
+
+ auto event = std::make_shared<PathDiagnosticEventPiece>(Loc, Out.str());
const ProgramState *state = N->getState().get();
if (const MemRegion *R = state->getLValue(VD, LCtx).getAsRegion()) {
if (report.isInteresting(R))
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>9</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>9</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>9</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>9</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>9</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'p' is non-null</string>
+ <key>message</key>
+ <string>'p' is non-null</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>9</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>9</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'y' is not equal to 2</string>
+ <key>message</key>
+ <string>'y' is not equal to 2</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'y' is equal to 2</string>
+ <key>message</key>
+ <string>'y' is equal to 2</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>11</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>10</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>10</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'fail' is 1</string>
+ <key>message</key>
+ <string>'fail' is 1</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>32</integer>
+ <key>col</key><integer>10</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
</dict>
</array>
</dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>146</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>146</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>146</integer>
+ <key>col</key><integer>13</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'i' is not equal to 1</string>
+ <key>message</key>
+ <string>'i' is not equal to 1</string>
+ </dict>
<dict>
<key>kind</key><string>control</string>
<key>edges</key>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>146</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>146</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>146</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>146</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>146</integer>
+ <key>col</key><integer>13</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'i' is equal to 1</string>
+ <key>message</key>
+ <string>'i' is equal to 1</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>146</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>146</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'i' is equal to 0</string>
+ <key>message</key>
+ <string>'i' is equal to 0</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'i' is not equal to 0</string>
+ <key>message</key>
+ <string>'i' is not equal to 0</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>178</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>181</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>181</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>181</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>181</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>181</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'i' is equal to 1</string>
+ <key>message</key>
+ <string>'i' is equal to 1</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>181</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>181</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
</array>
</dict>
<dict>
- <key>kind</key><string>control</string>
- <key>edges</key>
- <array>
- <dict>
- <key>start</key>
- <array>
- <dict>
- <key>line</key><integer>267</integer>
- <key>col</key><integer>18</integer>
- <key>file</key><integer>0</integer>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>267</integer>
+ <key>col</key><integer>18</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>267</integer>
+ <key>col</key><integer>18</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>267</integer>
+ <key>col</key><integer>22</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'coin' is 0</string>
+ <key>message</key>
+ <string>'coin' is 0</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>267</integer>
+ <key>col</key><integer>18</integer>
+ <key>file</key><integer>0</integer>
</dict>
<dict>
<key>line</key><integer>267</integer>
</dict>
</array>
</dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>285</integer>
+ <key>col</key><integer>12</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>285</integer>
+ <key>col</key><integer>12</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>285</integer>
+ <key>col</key><integer>12</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'z' is 0</string>
+ <key>message</key>
+ <string>'z' is 0</string>
+ </dict>
<dict>
<key>kind</key><string>control</string>
<key>edges</key>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>294</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>294</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>294</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>294</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>294</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'y' is null</string>
+ <key>message</key>
+ <string>'y' is null</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>294</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>294</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'first' is 1</string>
+ <key>message</key>
+ <string>'first' is 1</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'first' is 0</string>
+ <key>message</key>
+ <string>'first' is 0</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'first' is 1</string>
+ <key>message</key>
+ <string>'first' is 1</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<array>
<dict>
<key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>5</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
<key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
+ <key>col</key><integer>9</integer>
<key>file</key><integer>0</integer>
</dict>
</array>
</dict>
</array>
</dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'first' is 1</string>
+ <key>message</key>
+ <string>'first' is 1</string>
+ </dict>
<dict>
<key>kind</key><string>control</string>
<key>edges</key>
<array>
<dict>
<key>line</key><integer>457</integer>
- <key>col</key><integer>5</integer>
+ <key>col</key><integer>9</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
<key>line</key><integer>457</integer>
- <key>col</key><integer>6</integer>
+ <key>col</key><integer>9</integer>
<key>file</key><integer>0</integer>
</dict>
</array>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'first' is 1</string>
+ <key>message</key>
+ <string>'first' is 1</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'first' is 1</string>
+ <key>message</key>
+ <string>'first' is 1</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'first' is 1</string>
+ <key>message</key>
+ <string>'first' is 1</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'first' is 1</string>
+ <key>message</key>
+ <string>'first' is 1</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>457</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>47</integer>
+ <key>line</key><integer>45</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>45</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>45</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>45</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>45</integer>
+ <key>col</key><integer>12</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'p' is equal to null</string>
+ <key>message</key>
+ <string>'p' is equal to null</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>45</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>45</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>48</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>47</integer>
+ <key>line</key><integer>48</integer>
<key>col</key><integer>16</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>47</integer>
+ <key>line</key><integer>48</integer>
<key>col</key><integer>18</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>47</integer>
+ <key>line</key><integer>48</integer>
<key>col</key><integer>18</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>47</integer>
+ <key>line</key><integer>48</integer>
<key>col</key><integer>18</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>47</integer>
+ <key>line</key><integer>48</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>47</integer>
+ <key>line</key><integer>48</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>47</integer>
+ <key>line</key><integer>48</integer>
<key>col</key><integer>19</integer>
<key>file</key><integer>0</integer>
</dict>
<integer>38</integer>
<integer>39</integer>
<integer>45</integer>
- <integer>47</integer>
+ <integer>48</integer>
</array>
</dict>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>58</integer>
+ <key>line</key><integer>59</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>58</integer>
+ <key>line</key><integer>59</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>58</integer>
+ <key>line</key><integer>59</integer>
<key>col</key><integer>8</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>58</integer>
+ <key>line</key><integer>59</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>58</integer>
+ <key>line</key><integer>59</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>59</integer>
+ <key>line</key><integer>60</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>59</integer>
+ <key>line</key><integer>60</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>59</integer>
+ <key>line</key><integer>60</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>59</integer>
+ <key>line</key><integer>60</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>61</integer>
+ <key>line</key><integer>62</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>59</integer>
+ <key>line</key><integer>60</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>59</integer>
+ <key>line</key><integer>60</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>59</integer>
+ <key>line</key><integer>60</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>60</integer>
+ <key>line</key><integer>61</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>60</integer>
+ <key>line</key><integer>61</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>60</integer>
+ <key>line</key><integer>61</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>60</integer>
+ <key>line</key><integer>61</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>60</integer>
+ <key>line</key><integer>61</integer>
<key>col</key><integer>8</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>60</integer>
+ <key>line</key><integer>61</integer>
<key>col</key><integer>8</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>60</integer>
+ <key>line</key><integer>61</integer>
<key>col</key><integer>8</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>60</integer>
+ <key>line</key><integer>61</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>60</integer>
+ <key>line</key><integer>61</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<key>issue_hash_content_of_line_in_context</key><string>a2e7504f29818834127c44ba841f4da8</string>
<key>location</key>
<dict>
- <key>line</key><integer>60</integer>
+ <key>line</key><integer>61</integer>
<key>col</key><integer>8</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
<key>0</key>
<array>
- <integer>57</integer>
<integer>58</integer>
<integer>59</integer>
<integer>60</integer>
+ <integer>61</integer>
</array>
</dict>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>69</integer>
+ <key>line</key><integer>70</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>67</integer>
+ <key>line</key><integer>68</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>67</integer>
+ <key>line</key><integer>68</integer>
<key>col</key><integer>7</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>67</integer>
+ <key>line</key><integer>68</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>67</integer>
+ <key>line</key><integer>68</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>67</integer>
+ <key>line</key><integer>68</integer>
<key>col</key><integer>10</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>67</integer>
+ <key>line</key><integer>68</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>67</integer>
+ <key>line</key><integer>68</integer>
<key>col</key><integer>7</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>68</integer>
+ <key>line</key><integer>69</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>68</integer>
+ <key>line</key><integer>69</integer>
<key>col</key><integer>10</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>68</integer>
+ <key>line</key><integer>69</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>68</integer>
+ <key>line</key><integer>69</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>68</integer>
+ <key>line</key><integer>69</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>69</integer>
+ <key>line</key><integer>70</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>8</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>66</integer>
+ <key>line</key><integer>67</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>70</integer>
+ <key>line</key><integer>71</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>70</integer>
+ <key>line</key><integer>71</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>70</integer>
+ <key>line</key><integer>71</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>70</integer>
+ <key>line</key><integer>71</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>70</integer>
+ <key>line</key><integer>71</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>70</integer>
+ <key>line</key><integer>71</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>70</integer>
+ <key>line</key><integer>71</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>70</integer>
+ <key>line</key><integer>71</integer>
<key>col</key><integer>4</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>70</integer>
+ <key>line</key><integer>71</integer>
<key>col</key><integer>4</integer>
<key>file</key><integer>0</integer>
</dict>
<key>issue_hash_function_offset</key><string>5</string>
<key>location</key>
<dict>
- <key>line</key><integer>70</integer>
+ <key>line</key><integer>71</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
<key>0</key>
<array>
- <integer>65</integer>
<integer>66</integer>
<integer>67</integer>
<integer>68</integer>
- <integer>70</integer>
+ <integer>69</integer>
+ <integer>71</integer>
</array>
</dict>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>74</integer>
+ <key>line</key><integer>75</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>74</integer>
+ <key>line</key><integer>75</integer>
<key>col</key><integer>9</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>75</integer>
+ <key>line</key><integer>76</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>75</integer>
+ <key>line</key><integer>76</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>75</integer>
+ <key>line</key><integer>76</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>75</integer>
+ <key>line</key><integer>76</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>77</integer>
+ <key>line</key><integer>78</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>75</integer>
+ <key>line</key><integer>76</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>75</integer>
+ <key>line</key><integer>76</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>75</integer>
+ <key>line</key><integer>76</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>76</integer>
+ <key>line</key><integer>77</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>76</integer>
+ <key>line</key><integer>77</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>76</integer>
+ <key>line</key><integer>77</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>76</integer>
+ <key>line</key><integer>77</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>76</integer>
+ <key>line</key><integer>77</integer>
<key>col</key><integer>9</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>75</integer>
+ <key>line</key><integer>76</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>75</integer>
+ <key>line</key><integer>76</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>77</integer>
+ <key>line</key><integer>78</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>75</integer>
+ <key>line</key><integer>76</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>75</integer>
+ <key>line</key><integer>76</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>78</integer>
+ <key>line</key><integer>79</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>78</integer>
+ <key>line</key><integer>79</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>78</integer>
+ <key>line</key><integer>79</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>78</integer>
+ <key>line</key><integer>79</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>78</integer>
+ <key>line</key><integer>79</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>78</integer>
+ <key>line</key><integer>79</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>78</integer>
+ <key>line</key><integer>79</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>78</integer>
+ <key>line</key><integer>79</integer>
<key>col</key><integer>4</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>78</integer>
+ <key>line</key><integer>79</integer>
<key>col</key><integer>4</integer>
<key>file</key><integer>0</integer>
</dict>
<key>issue_hash_function_offset</key><string>5</string>
<key>location</key>
<dict>
- <key>line</key><integer>78</integer>
+ <key>line</key><integer>79</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
<key>0</key>
<array>
- <integer>73</integer>
<integer>74</integer>
<integer>75</integer>
<integer>76</integer>
- <integer>78</integer>
+ <integer>77</integer>
+ <integer>79</integer>
</array>
</dict>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>82</integer>
+ <key>line</key><integer>83</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>82</integer>
+ <key>line</key><integer>83</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>84</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>84</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>84</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>84</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>85</integer>
+ <key>line</key><integer>86</integer>
<key>col</key><integer>7</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>84</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>84</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>84</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>84</integer>
+ <key>line</key><integer>85</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>84</integer>
+ <key>line</key><integer>85</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>84</integer>
+ <key>line</key><integer>85</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>84</integer>
+ <key>line</key><integer>85</integer>
<key>col</key><integer>5</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>84</integer>
+ <key>line</key><integer>85</integer>
<key>col</key><integer>10</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>84</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>84</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>85</integer>
+ <key>line</key><integer>86</integer>
<key>col</key><integer>7</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>84</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>84</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>86</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>86</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>start</key>
<array>
<dict>
- <key>line</key><integer>86</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>86</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<key>end</key>
<array>
<dict>
- <key>line</key><integer>86</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>86</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>86</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>86</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>4</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>86</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>4</integer>
<key>file</key><integer>0</integer>
</dict>
<key>issue_hash_function_offset</key><string>5</string>
<key>location</key>
<dict>
- <key>line</key><integer>86</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>6</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
<key>0</key>
<array>
- <integer>81</integer>
<integer>82</integer>
<integer>83</integer>
<integer>84</integer>
<integer>85</integer>
<integer>86</integer>
+ <integer>87</integer>
</array>
</dict>
</dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>38</integer>
+ <key>col</key><integer>11</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>38</integer>
+ <key>col</key><integer>20</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>38</integer>
+ <key>col</key><integer>11</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>38</integer>
+ <key>col</key><integer>11</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>38</integer>
+ <key>col</key><integer>37</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'traitValue' is equal to 'newTraitValue'</string>
+ <key>message</key>
+ <string>'traitValue' is equal to 'newTraitValue'</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>38</integer>
+ <key>col</key><integer>11</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>38</integer>
+ <key>col</key><integer>20</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
</dict>
</array>
</dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>418</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>418</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>418</integer>
+ <key>col</key><integer>27</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'A' is >= 0</string>
+ <key>message</key>
+ <string>'A' is >= 0</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>418</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>418</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>418</integer>
+ <key>col</key><integer>27</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'B' is >= 0</string>
+ <key>message</key>
+ <string>'B' is >= 0</string>
+ </dict>
<dict>
<key>kind</key><string>event</string>
<key>location</key>
</dict>
</array>
</dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>69</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>69</integer>
+ <key>col</key><integer>3</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>69</integer>
+ <key>col</key><integer>16</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'p' is null</string>
+ <key>message</key>
+ <string>'p' is null</string>
+ </dict>
<dict>
<key>kind</key><string>event</string>
<key>location</key>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
</array>
<key>depth</key><integer>0</integer>
<key>extended_message</key>
- <string>Passing null pointer value via 1st parameter 'a'</string>
+ <string>Passing value via 1st parameter 'a'</string>
<key>message</key>
- <string>Passing null pointer value via 1st parameter 'a'</string>
+ <string>Passing value via 1st parameter 'a'</string>
</dict>
<dict>
<key>kind</key><string>event</string>
<key>location</key>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<array>
<array>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>3</integer>
<key>file</key><integer>0</integer>
</dict>
<dict>
- <key>line</key><integer>83</integer>
+ <key>line</key><integer>87</integer>
<key>col</key><integer>12</integer>
<key>file</key><integer>0</integer>
</dict>
</dict>
<key>depth</key><integer>1</integer>
<key>extended_message</key>
- <string>Entered call from 'test1'</string>
+ <string>Entered call from 'test2'</string>
<key>message</key>
- <string>Entered call from 'test1'</string>
+ <string>Entered call from 'test2'</string>
</dict>
<dict>
<key>kind</key><string>control</string>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>77</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>77</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>event</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>77</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>77</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>77</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>depth</key><integer>1</integer>
+ <key>extended_message</key>
+ <string>Assuming 'a' is null</string>
+ <key>message</key>
+ <string>Assuming 'a' is null</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>77</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>77</integer>
+ <key>col</key><integer>7</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<integer>76</integer>
<integer>77</integer>
<integer>79</integer>
- <integer>82</integer>
- <integer>83</integer>
+ <integer>86</integer>
+ <integer>87</integer>
</array>
</dict>
</dict>
</dict>
</array>
</dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>96</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>96</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>96</integer>
+ <key>col</key><integer>13</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'i' is not equal to 1</string>
+ <key>message</key>
+ <string>'i' is not equal to 1</string>
+ </dict>
<dict>
<key>kind</key><string>control</string>
<key>edges</key>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>96</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>96</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>96</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>96</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>96</integer>
+ <key>col</key><integer>13</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'i' is equal to 1</string>
+ <key>message</key>
+ <string>'i' is equal to 1</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>96</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>96</integer>
+ <key>col</key><integer>8</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
</dict>
</array>
</dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>127</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>127</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>127</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'i' is not equal to 1</string>
+ <key>message</key>
+ <string>'i' is not equal to 1</string>
+ </dict>
<dict>
<key>kind</key><string>control</string>
<key>edges</key>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>127</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>127</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>127</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>127</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>127</integer>
+ <key>col</key><integer>14</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'i' is equal to 1</string>
+ <key>message</key>
+ <string>'i' is equal to 1</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>127</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>127</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'name' is non-nil</string>
+ <key>message</key>
+ <string>'name' is non-nil</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'name' is non-nil</string>
+ <key>message</key>
+ <string>'name' is non-nil</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'name' is non-nil</string>
+ <key>message</key>
+ <string>'name' is non-nil</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
<key>file</key><integer>0</integer>
</dict>
</array>
+ <key>end</key>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>kind</key><string>pop-up</string>
+ <key>location</key>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <key>ranges</key>
+ <array>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
+ </array>
+ <key>extended_message</key>
+ <string>'name' is non-nil</string>
+ <key>message</key>
+ <string>'name' is non-nil</string>
+ </dict>
+ <dict>
+ <key>kind</key><string>control</string>
+ <key>edges</key>
+ <array>
+ <dict>
+ <key>start</key>
+ <array>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>6</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ <dict>
+ <key>line</key><integer>745</integer>
+ <key>col</key><integer>9</integer>
+ <key>file</key><integer>0</integer>
+ </dict>
+ </array>
<key>end</key>
<array>
<dict>
void test() {
int *p = new int;
// expected-note@-1 {{Memory is allocated}}
- if (p)
- // expected-note@-1 {{Taking true branch}}
+ if (p) // expected-note {{'p' is non-null}}
+ // expected-note@-1 {{Taking true branch}}
delete p;
// expected-note@-1 {{Memory is released}}
void *memset(void *__s, int __c, size_t __n);
int initializer1(int *p, int x) {
- if (x) { // expected-note{{Taking false branch}}
+ if (x) { // expected-note{{'x' is 0}}
+ // expected-note@-1{{Taking false branch}}
*p = 1;
return 0;
} else {
static int global;
int initializer2(int **p, int x) {
- if (x) { // expected-note{{Taking false branch}}
+ if (x) { // expected-note{{'x' is 0}}
+ // expected-note@-1{{Taking false branch}}
*p = &global;
return 0;
} else {
}
void initializer3(int *p, int param) {
- if (param) // expected-note{{Taking false branch}}
+ if (param) // expected-note{{'param' is 0}}
+ // expected-note@-1{{Taking false branch}}
*p = 0;
} // expected-note{{Returning without writing to '*p'}}
}
void initializer4(int *p, int param) {
- if (param) // expected-note{{Taking false branch}}
+ if (param) // expected-note{{'param' is 0}}
+ // expected-note@-1{{Taking false branch}}
*p = 0;
} // expected-note{{Returning without writing to '*p'}}
void initializer5(int *p, int param) {
- if (!param) // expected-note{{Taking false branch}}
+ if (!param) // expected-note{{'param' is 1}}
+ // expected-note@-1{{Taking false branch}}
*p = 0;
} // expected-note{{Returning without writing to '*p'}}
} S;
int initializer7(S *s, int param) {
- if (param) { // expected-note{{Taking false branch}}
+ if (param) { // expected-note{{'param' is 0}}
+ // expected-note@-1{{Taking false branch}}
s->x = 0;
return 0;
}
// RUN: %clang_analyze_cc1 -x c++ -std=c++14 -analyzer-checker=core -analyzer-output=text -verify %s
int initializer1(int &p, int x) {
- if (x) { // expected-note{{Taking false branch}}
+ if (x) { // expected-note{{'x' is 0}}
+ // expected-note@-1{{Taking false branch}}
p = 1;
return 0;
} else {
struct S {
int initialize(int *p, int param) {
- if (param) { //expected-note{{Taking false branch}}
+ if (param) { // expected-note{{'param' is 0}}
+ // expected-note@-1{{Taking false branch}}
*p = 1;
return 1;
}
@implementation I
- (int)initVar:(int *)var param:(int)param {
- if (param) { // expected-note{{Taking false branch}}
+ if (param) { // expected-note{{'param' is 0}}
+ // expected-note@-1{{Taking false branch}}
*var = 1;
return 0;
}
int x; //expected-note{{'x' declared without an initial value}}
int out = [i initVar:&x param:0]; //expected-note{{Calling 'initVar:param:'}}
//expected-note@-1{{Returning from 'initVar:param:'}}
- if (out) // expected-note{{Taking true branch}}
+ if (out) //expected-note{{'out' is 1}}
+ //expected-note@-1{{Taking true branch}}
return x; //expected-warning{{Undefined or garbage value returned to caller}}
//expected-note@-1{{Undefined or garbage value returned to caller}}
return 0;
}
int initializer1(int *p, int x) {
- if (x) { // expected-note{{Taking false branch}}
+ if (x) { // expected-note{{'x' is 0}}
+ // expected-note@-1{{Taking false branch}}
*p = 1;
return 0;
} else {
}
if (p == 0) {
- // expected-note@-1 {{Taking true branch}}
+ // expected-note@-1 {{'p' is equal to null}}
+ // expected-note@-2 {{Taking true branch}}
triggers_bug(p);
// expected-note@-1 {{Passing null pointer value via 1st parameter 'p'}}
// expected-note@-2 {{Calling 'triggers_bug'}}
void check_dynamic_cast_null_branch(OSObject *obj) {
OSArray *arr1 = OSArray::withCapacity(10); // expected-note{{Call to method 'OSArray::withCapacity' returns an OSObject}}
OSArray *arr = OSDynamicCast(OSArray, obj); // expected-note{{Assuming dynamic cast returns null due to type mismatch}}
- if (!arr) // expected-note{{Taking true branch}}
+ if (!arr) // expected-note{{'arr' is null}}
+ // expected-note@-1{{Taking true branch}}
return; // expected-warning{{Potential leak of an object stored into 'arr1'}}
// expected-note@-1{{Object leaked}}
arr1->release();
}
{
A a;
- if (i == 1) { // peaceful-note 2 {{Taking false branch}}
+ if (i == 1) { // peaceful-note 2 {{'i' is not equal to 1}}
+ // peaceful-note@-1 2 {{Taking false branch}}
std::move(a);
}
- if (i == 2) { // peaceful-note 2 {{Taking false branch}}
+ if (i == 2) { // peaceful-note 2 {{'i' is not equal to 2}}
+ // peaceful-note@-1 2 {{Taking false branch}}
a = A();
a.foo();
}
// peaceful-note@-1 {{Taking false branch}}
a = A();
}
- if (i > 5) { // peaceful-note {{Taking true branch}}
+ if (i > 5) { // peaceful-note {{'i' is > 5}}
+ // peaceful-note@-1 {{Taking true branch}}
a.foo(); // peaceful-warning {{Method called on moved-from object 'a'}}
// peaceful-note@-1 {{Method called on moved-from object 'a'}}
}
// Same thing, but with a ternary operator.
{
A a, b;
- i > 0 ? (void)(b = std::move(a)) : a.bar(); // no-warning // peaceful-note {{'?' condition is true}}
+ i > 0 ? (void)(b = std::move(a)) : a.bar(); // no-warning
+ // peaceful-note@-1 {{'i' is > 0}}
+ // peaceful-note@-2 {{'?' condition is true}}
}
// A variation on the theme above.
{
X(int i) {
if (i > 0) {
#if !PUREONLY
- // expected-note-re@-2 {{{{^}}Taking true branch}}
- // expected-note-re@-3 {{{{^}}Taking false branch}}
+ // expected-note-re@-2 {{{{^}}'i' is > 0}}
+ // expected-note-re@-3 {{{{^}}Taking true branch}}
+ // expected-note-re@-4 {{{{^}}'i' is <= 0}}
+ // expected-note-re@-5 {{{{^}}Taking false branch}}
#endif
X x(i - 1);
#if !PUREONLY