remove using std::*, switch to include guard

This commit is contained in:
Ben Burdette 2020-04-01 15:51:14 -06:00
parent a72b6b2ec8
commit 8713aeac5e
3 changed files with 78 additions and 92 deletions

View file

@ -5,11 +5,7 @@
namespace nix {
using std::cout;
using std::endl;
using std::nullopt;
optional<string> ErrorInfo::programName = nullopt;
optional<string> ErrorInfo::programName = std::nullopt;
// return basic_format?
string showErrLine(ErrLine &errLine)

View file

@ -1,4 +1,5 @@
#pragma once
#ifndef error_hh
#define error_hh
#include "ansicolor.hh"
#include <string>
@ -8,12 +9,6 @@
#include <boost/format.hpp>
using std::string;
using std::optional;
using boost::format;
using std::cout;
using std::endl;
namespace nix {
typedef enum
@ -36,7 +31,6 @@ class ErrLine {
optional<string> prevLineOfCode;
string errLineOfCode;
optional<string> nextLineOfCode;
};
class NixCode {
@ -112,8 +106,6 @@ class ErrorInfo {
protected:
// constructor is protected, so only the builder classes can create an ErrorInfo.
ErrorInfo(ErrLevel level) { this->level = level; }
};
// Init as error
@ -285,7 +277,9 @@ typedef AddName<
// --------------------------------------------------------
// error printing
// just to cout for now.
void printErrorInfo(ErrorInfo &einfo);
}
#endif

View file

@ -3,95 +3,91 @@
#include <optional>
#include <iostream>
using std::optional;
using std::nullopt;
using std::cout;
using std::endl;
int main()
{
using namespace nix;
using namespace nix;
// In each program where errors occur, this has to be set.
ErrorInfo::programName = optional("error-test");
// In each program where errors occur, this has to be set.
ErrorInfo::programName = optional("error-test");
// There are currently four error types:
//
// ProgramError, ProgramWarning, NixLangError, NixLangWarning.
//
// Each error type is created with a specific sequence of builder functions.
// Unlike with a constructor, each parameter is clearly named.
// If the sequence of function calls isn't followed, then there's a type error.
// This should make for a consistent look in the code when errors are created.
// There are currently four error types:
//
// ProgramError, ProgramWarning, NixLangError, NixLangWarning.
//
// Each error type is created with a specific sequence of builder functions.
// Unlike with a constructor, each parameter is clearly named.
// If the sequence of function calls isn't followed, then there's a type error.
// This should make for a consistent look in the code when errors are created.
// ProgramError takes name, description, and an optional hint.
printErrorInfo(
ProgramError()
.name("name")
.description("error description")
.nohint()
);
// ProgramError takes name, description, and an optional hint.
printErrorInfo(
ProgramError()
.name("name")
.description("error description")
.nohint()
);
// ProgramWarning takes name, description, and an optional hint.
// The hint is in the form of a hintfmt class, which wraps boost::format(), and
// makes all the substituted text yellow.
printErrorInfo(
ProgramWarning()
.name("warning name")
.description("warning description")
.hint(hintfmt("there was a %1%") % "warning") // 'warning' will be yellow.
);
// ProgramWarning takes name, description, and an optional hint.
// The hint is in the form of a hintfmt class, which wraps boost::format(), and
// makes all the substituted text yellow.
printErrorInfo(
ProgramWarning()
.name("warning name")
.description("warning description")
.hint(hintfmt("there was a %1%") % "warning") // 'warning' will be yellow.
);
/*
// some invalid errors:
/*
// some invalid errors:
// type error: no hint function.
ProgramError()
.name("name")
.description("error description");
// type error: no hint function.
ProgramError()
.name("name")
.description("error description");
// type error: description before name.
ProgramError()
.description("error description")
.name("name")
.nohint();
// type error: description before name.
ProgramError()
.description("error description")
.name("name")
.nohint();
// type error: hint function with regular boost format, not special hintfmt.
ProgramError()
.description("error description")
.name("name")
.hint(format("there was a %1%") % "warning");
*/
// type error: hint function with regular boost format, not special hintfmt.
ProgramError()
.description("error description")
.name("name")
.hint(format("there was a %1%") % "warning");
*/
// NixLangWarning adds nix file, line number, column range, and the lines of code
// where a warning occurred.
printErrorInfo(
NixLangWarning()
.name("warning name")
.description("warning description")
.nixFile("myfile.nix")
.lineNumber(40)
.columnRange(13,7)
.linesOfCode(nullopt
,"this is the problem line of code"
,nullopt)
.hint(hintfmt("this hint has %1% templated %2%!!") % "yellow" % "values")
);
// NixLangWarning adds nix file, line number, column range, and the lines of code
// where a warning occurred.
printErrorInfo(
NixLangWarning()
.name("warning name")
.description("warning description")
.nixFile("myfile.nix")
.lineNumber(40)
.columnRange(13,7)
.linesOfCode(std::nullopt
,"this is the problem line of code"
,std::nullopt)
.hint(hintfmt("this hint has %1% templated %2%!!") % "yellow" % "values")
);
// NixLangError is just the same as NixLangWarning, except for the Error flag.
printErrorInfo(
NixLangError()
.name("error name")
.description("error description")
.nixFile("myfile.nix")
.lineNumber(40)
.columnRange(13,7)
.linesOfCode(optional("previous line of code")
,"this is the problem line of code"
,optional("next line of code"))
.hint(hintfmt("this hint has %1% templated %2%!!") % "yellow" % "values")
);
// NixLangError is just the same as NixLangWarning, except for the Error flag.
printErrorInfo(
NixLangError()
.name("error name")
.description("error description")
.nixFile("myfile.nix")
.lineNumber(40)
.columnRange(13,7)
.linesOfCode(optional("previous line of code")
,"this is the problem line of code"
,optional("next line of code"))
.hint(hintfmt("this hint has %1% templated %2%!!") % "yellow" % "values")
);
return 0;
return 0;
}