programName as static member var
This commit is contained in:
parent
fc310eda3a
commit
3582dc3c88
3 changed files with 18 additions and 5 deletions
|
@ -1,11 +1,15 @@
|
|||
#include "error.hh"
|
||||
|
||||
#include <iostream>
|
||||
#include <optional>
|
||||
|
||||
namespace nix {
|
||||
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
using std::nullopt;
|
||||
|
||||
optional<string> ErrorInfo::programName = nullopt;
|
||||
|
||||
// return basic_format?
|
||||
string showErrLine(ErrLine &errLine)
|
||||
|
@ -98,10 +102,11 @@ void print_error(ErrorInfo &einfo)
|
|||
{
|
||||
level_string = "wat:";
|
||||
break;
|
||||
}}
|
||||
}
|
||||
}
|
||||
|
||||
int ndl = level_string.length() + 3 + einfo.name.length() + einfo.program.length();
|
||||
int dashwidth = errwidth - 3 ? 3 : 80 - ndl;
|
||||
int ndl = prefix.length() + level_string.length() + 3 + einfo.name.length() + einfo.programName.value_or("").length();
|
||||
int dashwidth = ndl > (errwidth - 3) ? 3 : 80 - ndl;
|
||||
|
||||
string dashes;
|
||||
for (int i = 0; i < dashwidth; ++i)
|
||||
|
@ -114,7 +119,7 @@ void print_error(ErrorInfo &einfo)
|
|||
% "---"
|
||||
% einfo.name
|
||||
% dashes
|
||||
% einfo.program
|
||||
% einfo.programName.value_or("")
|
||||
<< endl;
|
||||
|
||||
// filename.
|
||||
|
|
|
@ -80,11 +80,12 @@ class ErrorInfo {
|
|||
ErrLevel level;
|
||||
string name;
|
||||
string description;
|
||||
string program;
|
||||
optional<NixCode> nixCode;
|
||||
string hint;
|
||||
ErrorInfo& GetEI() { return *this; }
|
||||
|
||||
static optional<string> programName;
|
||||
|
||||
// give these access to the private constructor,
|
||||
// when they are direct descendants.
|
||||
friend AddName<ErrorInfo>;
|
||||
|
@ -109,18 +110,21 @@ class ErrorInfo {
|
|||
|
||||
};
|
||||
|
||||
// Init as error
|
||||
class EIError : public ErrorInfo
|
||||
{
|
||||
protected:
|
||||
EIError() : ErrorInfo(elError) {}
|
||||
};
|
||||
|
||||
// Init as warning
|
||||
class EIWarning : public ErrorInfo
|
||||
{
|
||||
protected:
|
||||
EIWarning() : ErrorInfo(elWarning) {}
|
||||
};
|
||||
|
||||
// Builder class definitions.
|
||||
template <class T>
|
||||
class AddName : private T
|
||||
{
|
||||
|
|
|
@ -5,11 +5,15 @@
|
|||
|
||||
using std::optional;
|
||||
using std::nullopt;
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
|
||||
int main() {
|
||||
|
||||
using namespace nix;
|
||||
|
||||
ErrorInfo::programName = optional("errorTest");
|
||||
|
||||
/*
|
||||
ColumnRange columnRange;
|
||||
columnRange.start = 24;
|
||||
|
|
Loading…
Reference in a new issue