aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr
diff options
context:
space:
mode:
authorJade Lovelace <lix@jade.fyi>2024-08-04 20:19:58 -0700
committerJade Lovelace <lix@jade.fyi>2024-08-08 14:53:17 -0700
commite34833c0253340f47dc0add8609eb86cf9cba19b (patch)
tree83e196e01ed4197e8f413f21d16b93cdd60f3d63 /src/libexpr
parent370ac940dd7816ad4052fafa4e0f8d17784fa16b (diff)
tree-wide: fix a pile of lints
This: - Converts a bunch of C style casts into C++ casts. - Removes some very silly pointer subtraction code (which is no more or less busted on i686 than it began) - Fixes some "technically UB" that never had to be UB in the first place. - Makes finally follow the noexcept status of the inner function. Maybe in the future we should ban the function from not being noexcept, but that is not today. - Makes various locally-used exceptions inherit from std::exception. Change-Id: I22e66972602604989b5e494fd940b93e0e6e9297
Diffstat (limited to 'src/libexpr')
-rw-r--r--src/libexpr/eval.cc3
-rw-r--r--src/libexpr/primops.cc5
2 files changed, 5 insertions, 3 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index 741a24e3c..4885db68d 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -21,7 +21,6 @@
#include "flake/flakeref.hh"
#include <algorithm>
-#include <chrono>
#include <iostream>
#include <sstream>
#include <cstring>
@@ -146,7 +145,7 @@ bool Value::isTrivial() const
&& internalType != tPrimOpApp
&& (internalType != tThunk
|| (dynamic_cast<ExprAttrs *>(thunk.expr)
- && ((ExprAttrs *) thunk.expr)->dynamicAttrs.empty())
+ && (static_cast<ExprAttrs *>(thunk.expr))->dynamicAttrs.empty())
|| dynamic_cast<ExprLambda *>(thunk.expr)
|| dynamic_cast<ExprList *>(thunk.expr));
}
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index 228e4e1ba..dab96d6d4 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -346,7 +346,7 @@ void prim_importNative(EvalState & state, const PosIdx pos, Value * * args, Valu
state.error<EvalError>("could not open '%1%': %2%", path, dlerror()).debugThrow();
dlerror();
- ValueInitializer func = (ValueInitializer) dlsym(handle, sym.c_str());
+ ValueInitializer func = reinterpret_cast<ValueInitializer>(dlsym(handle, sym.c_str()));
if(!func) {
char *message = dlerror();
if (message)
@@ -2439,6 +2439,8 @@ static void prim_attrValues(EvalState & state, const PosIdx pos, Value * * args,
state.mkList(v, args[0]->attrs->size());
+ // FIXME: this is incredibly evil, *why*
+ // NOLINTBEGIN(cppcoreguidelines-pro-type-cstyle-cast)
unsigned int n = 0;
for (auto & i : *args[0]->attrs)
v.listElems()[n++] = (Value *) &i;
@@ -2452,6 +2454,7 @@ static void prim_attrValues(EvalState & state, const PosIdx pos, Value * * args,
for (unsigned int i = 0; i < n; ++i)
v.listElems()[i] = ((Attr *) v.listElems()[i])->value;
+ // NOLINTEND(cppcoreguidelines-pro-type-cstyle-cast)
}
static RegisterPrimOp primop_attrValues({