MCPcopy Create free account
hub / github.com/beefytech/Beef / FailAt

Method FailAt

IDEHelper/Compiler/BfSystem.cpp:1587–1631  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1585}
1586
1587BfError* BfPassInstance::FailAt(const StringImpl& error, BfSourceData* bfSource, int srcIdx, int srcLen, BfFailFlags flags)
1588{
1589 BP_ZONE("BfPassInstance::FailAt");
1590
1591 mLastWasAdded = false;
1592 mFailedIdx++;
1593 if ((int) mErrors.size() >= sMaxErrors)
1594 return NULL;
1595
1596 if (!WantsRangeRecorded(bfSource, srcIdx, srcLen, false))
1597 return NULL;
1598
1599 TrimSourceRange(bfSource, srcIdx, srcLen);
1600
1601 BfError* errorVal = new BfError();
1602 errorVal->mIsWarning = false;
1603 errorVal->SetSource(this, bfSource);
1604 errorVal->mIsAfter = false;
1605 errorVal->mError = error;
1606 errorVal->mSrcStart = srcIdx;
1607 errorVal->mSrcEnd = srcIdx + srcLen;
1608 //int checkEnd = srcIdx + srcLen;
1609 for (int i = srcIdx; i < srcIdx + srcLen; i++)
1610 {
1611 char c = bfSource->mSrc[i];
1612 if ((c == '\r') || (c == '\n'))
1613 break;
1614 errorVal->mSrcEnd = i + 1;
1615 }
1616 //errorVal->mSrcEnd = srcIdx + srcLen;
1617 FixSrcStartAndEnd(bfSource, errorVal->mSrcStart, errorVal->mSrcEnd);
1618 mErrorSet.Add(BfErrorEntry(errorVal));
1619 mErrors.push_back(errorVal);
1620 mLastWasAdded = true;
1621
1622 mLastWasDisplayed = WantsRangeDisplayed(bfSource, srcIdx, srcLen, false);
1623 if (mLastWasDisplayed)
1624 {
1625 String errorStart = "ERROR";
1626 /*if ((int)mErrors.size() > 1)
1627 errorStart += StrFormat(" #%d", mErrors.size());*/
1628 MessageAt(":error", errorStart + ": " + error, bfSource, srcIdx, srcLen, flags);
1629 }
1630 return errorVal;
1631}
1632
1633void BfPassInstance::FixSrcStartAndEnd(BfSourceData* bfSource, int& startIdx, int& endIdx)
1634{

Callers 10

InitMethod · 0.80
EvaluateMethod · 0.80
FailMethod · 0.80
UnexpectedCharacterMethod · 0.80
HandlePragmaMethod · 0.80
HandlePreprocessorMethod · 0.80
NextTokenMethod · 0.80
InitMethod · 0.80
EvaluateMethod · 0.80

Calls 5

BfErrorEntryClass · 0.85
sizeMethod · 0.45
SetSourceMethod · 0.45
AddMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected