From 0c8c1227f1210a918737369c92d7e443d3d41c96 Mon Sep 17 00:00:00 2001 From: Kane York Date: Thu, 26 Nov 2020 17:39:47 -0800 Subject: refactor(tvix): remove signedness conversions by using std::optional The different signedness of level and withLevel was causing implicit conversions. Use a nullopt instead of a -1 sentinel value. third_party/nix/src/libexpr/nixexpr.cc:242:21: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions] Change-Id: I7c2cadb6fd6bbff6c5b84028651ad4ebba423297 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2157 Tested-by: BuildkiteCI Reviewed-by: tazjin Reviewed-by: glittershark --- third_party/nix/src/libexpr/nixexpr.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'third_party/nix') diff --git a/third_party/nix/src/libexpr/nixexpr.cc b/third_party/nix/src/libexpr/nixexpr.cc index 24ce6ec3fc91..391f0682059c 100644 --- a/third_party/nix/src/libexpr/nixexpr.cc +++ b/third_party/nix/src/libexpr/nixexpr.cc @@ -234,11 +234,11 @@ void ExprVar::bindVars(const StaticEnv& env) { set its level and displacement. */ const StaticEnv* curEnv; unsigned int level; - int withLevel = -1; + std::optional withLevel = std::nullopt; for (curEnv = &env, level = 0; curEnv != nullptr; curEnv = curEnv->up, level++) { if (curEnv->isWith) { - if (withLevel == -1) { + if (!withLevel.has_value()) { withLevel = level; } } else { @@ -255,13 +255,13 @@ void ExprVar::bindVars(const StaticEnv& env) { /* Otherwise, the variable must be obtained from the nearest enclosing `with'. If there is no `with', then we can issue an "undefined variable" error now. */ - if (withLevel == -1) { + if (!withLevel.has_value()) { throw UndefinedVarError(format("undefined variable '%1%' at %2%") % name % pos); } fromWith = true; - this->level = withLevel; + this->level = withLevel.value(); } void ExprSelect::bindVars(const StaticEnv& env) { -- cgit 1.4.1