Skip to content

Commit

Permalink
Update charon
Browse files Browse the repository at this point in the history
  • Loading branch information
zhassan-aws committed Aug 28, 2024
1 parent d6a7e72 commit c3e21ae
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 13 deletions.
55 changes: 54 additions & 1 deletion Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"

[[package]]
name = "charon"
version = "0.1.30"
version = "0.1.33"
dependencies = [
"anyhow",
"assert_cmd",
Expand Down Expand Up @@ -523,6 +523,15 @@ dependencies = [
"syn 1.0.109",
]

[[package]]
name = "deranged"
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
dependencies = [
"powerfmt",
]

[[package]]
name = "derivative"
version = "2.2.0"
Expand Down Expand Up @@ -980,6 +989,7 @@ dependencies = [
"strum",
"strum_macros",
"tempfile",
"time",
"toml",
"tracing",
"tracing-subscriber",
Expand Down Expand Up @@ -1206,6 +1216,12 @@ dependencies = [
"num-traits",
]

[[package]]
name = "num-conv"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"

[[package]]
name = "num-integer"
version = "0.1.46"
Expand Down Expand Up @@ -1347,6 +1363,12 @@ version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"

[[package]]
name = "powerfmt"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"

[[package]]
name = "ppv-lite86"
version = "0.2.17"
Expand Down Expand Up @@ -2006,6 +2028,37 @@ dependencies = [
"num_cpus",
]

[[package]]
name = "time"
version = "0.3.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
dependencies = [
"deranged",
"itoa",
"num-conv",
"powerfmt",
"serde",
"time-core",
"time-macros",
]

[[package]]
name = "time-core"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"

[[package]]
name = "time-macros"
version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
dependencies = [
"num-conv",
"time-core",
]

[[package]]
name = "toml"
version = "0.8.14"
Expand Down
2 changes: 1 addition & 1 deletion charon
Submodule charon updated 63 files
+1 −1 charon-ml/src/CharonVersion.ml
+27 −24 charon-ml/src/Expressions.ml
+10 −4 charon-ml/src/GAst.ml
+434 −369 charon-ml/src/GAstOfJson.ml
+29 −15 charon-ml/src/LlbcAst.ml
+38 −46 charon-ml/src/LlbcOfJson.ml
+6 −10 charon-ml/src/NameMatcher.ml
+2 −1 charon-ml/src/OfJsonBasic.ml
+20 −4 charon-ml/src/PrintExpressions.ml
+1 −1 charon-ml/src/PrintUllbcAst.ml
+7 −0 charon-ml/src/PrintValues.ml
+8 −7 charon-ml/src/Types.ml
+41 −14 charon-ml/src/UllbcAst.ml
+58 −63 charon-ml/src/UllbcOfJson.ml
+7 −1 charon-ml/src/Values.ml
+1 −1 charon/Cargo.lock
+1 −1 charon/Cargo.toml
+14 −35 charon/src/ast/builtins.rs
+34 −25 charon/src/ast/expressions.rs
+11 −0 charon/src/ast/gast.rs
+2 −2 charon/src/ast/gast_utils.rs
+0 −10 charon/src/ast/llbc_ast.rs
+2 −2 charon/src/ast/mod.rs
+36 −9 charon/src/ast/types.rs
+2 −2 charon/src/ast/types_utils.rs
+5 −2 charon/src/ast/ullbc_ast.rs
+10 −66 charon/src/ast/ullbc_ast_utils.rs
+1 −1 charon/src/bin/charon-driver/driver.rs
+0 −4 charon/src/bin/charon-driver/translate/translate_ctx.rs
+181 −289 charon/src/bin/charon-driver/translate/translate_functions_to_ullbc.rs
+17 −12 charon/src/bin/charon-driver/translate/translate_types.rs
+143 −49 charon/src/bin/generate-ml/main.rs
+2 −3 charon/src/bin/generate-ml/templates/GAst.ml
+9 −22 charon/src/bin/generate-ml/templates/GAstOfJson.ml
+61 −0 charon/src/bin/generate-ml/templates/LlbcAst.ml
+172 −0 charon/src/bin/generate-ml/templates/LlbcOfJson.ml
+2 −0 charon/src/bin/generate-ml/templates/Types.ml
+98 −0 charon/src/bin/generate-ml/templates/UllbcAst.ml
+30 −0 charon/src/bin/generate-ml/templates/UllbcOfJson.ml
+1 −1 charon/src/lib.rs
+2 −2 charon/src/name_matcher/mod.rs
+67 −25 charon/src/pretty/fmt_with_ctx.rs
+2 −2 charon/src/transform/check_generics.rs
+18 −9 charon/src/transform/index_to_function_calls.rs
+3 −3 charon/src/transform/inline_local_panic_functions.rs
+5 −5 charon/src/transform/ops_to_function_calls.rs
+5 −3 charon/src/transform/remove_dynamic_checks.rs
+67 −64 charon/src/transform/ullbc_to_llbc.rs
+4 −4 charon/tests/ui/arrays.out
+29 −0 charon/tests/ui/float.out
+7 −0 charon/tests/ui/float.rs
+1 −1 charon/tests/ui/issue-114-opaque-bodies.out
+46 −0 charon/tests/ui/issue-165-vec-macro.out
+0 −1 charon/tests/ui/issue-165-vec-macro.rs
+4 −4 charon/tests/ui/loops.out
+4 −4 charon/tests/ui/ml-name-matcher-tests.out
+322 −0 charon/tests/ui/rvalues.out
+77 −0 charon/tests/ui/rvalues.rs
+1 −1 charon/tests/ui/unsupported/advanced-const-generics.out
+0 −11 charon/tests/ui/unsupported/issue-165-vec-macro.out
+17 −0 charon/tests/ui/unsupported/ptr_to_promoted.out
+7 −0 charon/tests/ui/unsupported/ptr_to_promoted.rs
+5 −1 flake.nix
26 changes: 15 additions & 11 deletions kani-compiler/src/codegen_aeneas_llbc/context/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use charon_lib::ast::Rvalue as CharonRvalue;
use charon_lib::ast::Span as CharonSpan;
use charon_lib::ast::{make_locals_generator, AbortKind, Body as CharonBody, Var, VarId};
use charon_lib::ast::{
AnyTransId, AssumedTy, BodyId, Disambiguator, FileName, FunDecl, FunSig, GenericArgs,
AnyTransId, Assert, BodyId, BuiltinTy, Disambiguator, FileName, FunDecl, FunSig, GenericArgs,
GenericParams, IntegerTy, ItemKind, ItemMeta, ItemOpacity, Literal, LiteralTy, Name, Opaque,
PathElem, RawConstantExpr, RefKind, Region, ScalarValue, TranslatedCrate, TypeId,
};
Expand All @@ -29,7 +29,7 @@ use charon_lib::ast::{
use charon_lib::common::Error;
use charon_lib::errors::ErrorCtx;
use charon_lib::ids::Vector;
use charon_lib::transform::{TransformCtx, ctx::TransformOptions};
use charon_lib::transform::{ctx::TransformOptions, TransformCtx};
use charon_lib::ullbc_ast::{
BlockData, BlockId, BodyContents, ExprBody, RawStatement, RawTerminator,
Statement as CharonStatement, SwitchTargets as CharonSwitchTargets,
Expand All @@ -43,7 +43,8 @@ use rustc_smir::rustc_internal;
use stable_mir::abi::PassMode;
use stable_mir::mir::mono::Instance;
use stable_mir::mir::{
BasicBlock, BinOp, Body, BorrowKind, CastKind, ConstOperand, Mutability, Operand, Place, ProjectionElem, Rvalue, Statement, StatementKind, SwitchTargets, Terminator, TerminatorKind
BasicBlock, BinOp, Body, BorrowKind, CastKind, ConstOperand, Mutability, Operand, Place,
ProjectionElem, Rvalue, Statement, StatementKind, SwitchTargets, Terminator, TerminatorKind,
};
use stable_mir::ty::{
Allocation, ConstantKind, IndexedVal, IntTy, MirConst, RigidTy, Span, Ty, TyKind, UintTy,
Expand All @@ -64,9 +65,7 @@ pub struct LlbcContext<'tcx> {

impl<'tcx> LlbcContext<'tcx> {
pub fn new(tcx: TyCtxt<'tcx>, queries: QueryDb) -> Self {
let options = TransformOptions {
no_code_duplication: false,
};
let options = TransformOptions { no_code_duplication: false };
let crate_name = tcx.crate_name(LOCAL_CRATE).as_str().into();
let translated = TranslatedCrate { crate_name, ..TranslatedCrate::default() };
let errors = ErrorCtx {
Expand Down Expand Up @@ -441,7 +440,7 @@ impl<'a, 'tcx> FunctionCtx<'a, 'tcx> {
RigidTy::Uint(uit) => CharonTy::Literal(LiteralTy::Integer(translate_uint_ty(uit))),
RigidTy::Never => CharonTy::Never,
RigidTy::Str => CharonTy::Adt(
TypeId::Assumed(AssumedTy::Str),
TypeId::Builtin(BuiltinTy::Str),
GenericArgs {
regions: Vector::new(),
types: Vector::new(),
Expand Down Expand Up @@ -578,8 +577,7 @@ impl<'a, 'tcx> FunctionCtx<'a, 'tcx> {
}
TerminatorKind::Assert { cond, expected, msg: _, target, .. } => {
RawTerminator::Assert {
cond: self.translate_operand(cond),
expected: *expected,
assert: Assert { cond: self.translate_operand(cond), expected: *expected },
target: BlockId::from_usize(*target),
}
}
Expand Down Expand Up @@ -799,11 +797,17 @@ impl<'a, 'tcx> FunctionCtx<'a, 'tcx> {
(discr, switch_targets)
}

fn translate_projection(&mut self, projection: &Vec<ProjectionElem>) -> Vec<CharonProjectionElem> {
fn translate_projection(
&mut self,
projection: &Vec<ProjectionElem>,
) -> Vec<CharonProjectionElem> {
projection.iter().map(|elem| self.translate_projection_elem(elem)).collect()
}

fn translate_projection_elem(&mut self, projection_elem: &ProjectionElem) -> CharonProjectionElem {
fn translate_projection_elem(
&mut self,
projection_elem: &ProjectionElem,
) -> CharonProjectionElem {
match projection_elem {
ProjectionElem::Deref => CharonProjectionElem::Deref,
_ => todo!(),
Expand Down

0 comments on commit c3e21ae

Please sign in to comment.