aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libutil/error.cc6
-rw-r--r--src/libutil/error.hh14
-rw-r--r--tests/errors/main.cc150
3 files changed, 78 insertions, 92 deletions
diff --git a/src/libutil/error.cc b/src/libutil/error.cc
index 5384248f8..2b7a079dc 100644
--- a/src/libutil/error.cc
+++ b/src/libutil/error.cc
@@ -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)
diff --git a/src/libutil/error.hh b/src/libutil/error.hh
index 00539f06a..614f08a35 100644
--- a/src/libutil/error.hh
+++ b/src/libutil/error.hh
@@ -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
diff --git a/tests/errors/main.cc b/tests/errors/main.cc
index 9d08e82ea..f11390c73 100644
--- a/tests/errors/main.cc
+++ b/tests/errors/main.cc
@@ -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:
-
- // type error: no hint function.
- ProgramError()
- .name("name")
- .description("error description");
+ /*
+ // some invalid errors:
+
+ // 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;
}