From b1c4b84dbac9073e5f4b1dd7c5e0b7f549a32200 Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Fri, 19 Mar 2021 19:43:59 -0400 Subject: chore(gs/achilles): Integrate with the depot build Get achilles building in Nix as part of the depot's build tree. This involved making it work with stable rust, since the depot only exposes stable rust to sub-packages, which turned out to be fairly straightforward. Also adds libffi as a new top-level expose, since it's required to build achilles Change-Id: I5f6dedb26c0b81ec258aedde1973e74903c07ece Reviewed-on: https://cl.tvl.fyi/c/depot/+/2612 Reviewed-by: sterni Reviewed-by: tazjin Tested-by: BuildkiteCI --- users/glittershark/achilles/src/main.rs | 3 --- users/glittershark/achilles/src/parser/expr.rs | 13 ++++++++++--- users/glittershark/achilles/src/tc/mod.rs | 4 ++-- 3 files changed, 12 insertions(+), 8 deletions(-) (limited to 'users/glittershark/achilles/src') diff --git a/users/glittershark/achilles/src/main.rs b/users/glittershark/achilles/src/main.rs index 4ba0aaf33e91..d5b00d6b6c46 100644 --- a/users/glittershark/achilles/src/main.rs +++ b/users/glittershark/achilles/src/main.rs @@ -1,6 +1,3 @@ -#![feature(str_split_once)] -#![feature(or_insert_with_key)] - use clap::Clap; pub mod ast; diff --git a/users/glittershark/achilles/src/parser/expr.rs b/users/glittershark/achilles/src/parser/expr.rs index 12c55df02b80..99c8018fd00c 100644 --- a/users/glittershark/achilles/src/parser/expr.rs +++ b/users/glittershark/achilles/src/parser/expr.rs @@ -165,9 +165,16 @@ named!(bool_(&str) -> Literal, alt!( )); fn string_internal(i: &str) -> nom::IResult<&str, Cow<'_, str>, nom::error::Error<&str>> { - let (s, rem) = i - .split_once('"') - .ok_or_else(|| nom::Err::Error(nom::error::Error::new(i, nom::error::ErrorKind::Tag)))?; + // TODO(grfn): use String::split_once when that's stable + let (s, rem) = if let Some(pos) = i.find('"') { + (&i[..pos], &i[(pos + 1)..]) + } else { + return Err(nom::Err::Error(nom::error::Error::new( + i, + nom::error::ErrorKind::Tag, + ))); + }; + Ok((rem, Cow::Borrowed(s))) } diff --git a/users/glittershark/achilles/src/tc/mod.rs b/users/glittershark/achilles/src/tc/mod.rs index 559ac993cc9b..52c18e6d5329 100644 --- a/users/glittershark/achilles/src/tc/mod.rs +++ b/users/glittershark/achilles/src/tc/mod.rs @@ -358,9 +358,9 @@ impl<'ast> Typechecker<'ast> { let mut universalize_type = move |ty| match ty { Type::Exist(tv) if self.resolve_tv(tv).is_none() => vars .entry(tv) - .or_insert_with_key(|tv| { + .or_insert_with(|| { let ty = self.fresh_univ(); - self.ctx.insert(*tv, ty.clone()); + self.ctx.insert(tv, ty.clone()); ty }) .clone(), -- cgit 1.4.1