diff options
author | Vincent Ambo <mail@tazj.in> | 2022-05-18T15·39+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2022-05-19T14·08+0000 |
commit | d127f9bd0e7b9b2e0df2de8a2227f77c0907468d (patch) | |
tree | 68455040d88b8e0c2817601db88ede450873ff8e /third_party/nix/src/libexpr/parser.hh | |
parent | c85291c602ac666421627d6934ebc6d5be1b93e1 (diff) |
chore(3p/nix): unvendor tvix 0.1 r/4098
Nothing is using this now, and we'll likely never pick this up again, but we learned a lot in the process. Every now and then this breaks in some bizarre way on channel bumps and it's just a waste of time to maintain that. Change-Id: Idcf2f5acd4ca7070ce18d7149cbfc0d967dc0a44 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5632 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: lukegb <lukegb@tvl.fyi> Autosubmit: tazjin <tazjin@tvl.su>
Diffstat (limited to 'third_party/nix/src/libexpr/parser.hh')
-rw-r--r-- | third_party/nix/src/libexpr/parser.hh | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/third_party/nix/src/libexpr/parser.hh b/third_party/nix/src/libexpr/parser.hh deleted file mode 100644 index 70b5450b5aa8..000000000000 --- a/third_party/nix/src/libexpr/parser.hh +++ /dev/null @@ -1,100 +0,0 @@ -// Parser utilities for use in parser.y -#pragma once - -// TODO(tazjin): Audit these includes, they were in parser.y -#include <optional> -#include <variant> - -#include <glog/logging.h> - -#include "libexpr/eval.hh" -#include "libexpr/nixexpr.hh" -#include "libutil/util.hh" - -#define YY_DECL \ - int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanner, \ - nix::ParseData* data) - -#define CUR_POS makeCurPos(*yylocp, data) - -namespace nix { - -struct ParseData { - EvalState& state; - SymbolTable& symbols; - Expr* result; - Path basePath; - std::optional<Symbol> path; - std::string error; - Symbol sLetBody; - - ParseData(EvalState& state) - : state(state), - symbols(state.symbols), - sLetBody(symbols.Create("<let-body>")){}; -}; - -// Clang fails to identify these functions as used, probably because -// of some interaction between the lexer/parser codegen and something -// else. -// -// To avoid warnings for that we disable -Wunused-function in this block. - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-function" - -// TODO(tazjin): move dupAttr to anonymous namespace -static void dupAttr(const AttrPath& attrPath, const Pos& pos, - const Pos& prevPos) { - throw ParseError(format("attribute '%1%' at %2% already defined at %3%") % - showAttrPath(attrPath) % pos % prevPos); -} - -static void dupAttr(Symbol attr, const Pos& pos, const Pos& prevPos) { - throw ParseError(format("attribute '%1%' at %2% already defined at %3%") % - attr % pos % prevPos); -} - -void addAttr(ExprAttrs* attrs, AttrPath& attrPath, Expr* e, const Pos& pos); - -void addFormal(const Pos& pos, Formals* formals, const Formal& formal); - -Expr* stripIndentation(const Pos& pos, SymbolTable& symbols, VectorExprs& es); - -Path resolveExprPath(Path path); - -// implementations originally from lexer.l - -static Expr* unescapeStr(SymbolTable& symbols, const char* s, size_t length) { - std::string t; - t.reserve(length); - char c; - while ((c = *s++)) { - if (c == '\\') { - assert(*s); - c = *s++; - if (c == 'n') { - t += '\n'; - } else if (c == 'r') { - t += '\r'; - } else if (c == 't') { - t += '\t'; - } else { - t += c; - } - } else if (c == '\r') { - /* Normalise CR and CR/LF into LF. */ - t += '\n'; - if (*s == '\n') { - s++; - } /* cr/lf */ - } else { - t += c; - } - } - return new ExprString(symbols.Create(t)); -} - -#pragma clang diagnostic pop // re-enable -Wunused-function - -} // namespace nix |